{
  "openapi": "3.1.1",
  "info": {
    "title": "Advent AI Library, Bible World and Music API",
    "description": "Read-only access to the Advent AI library: browse collections and authors, search every\npassage with a rich operator language (`GET /api/v1/library/search/syntax`), and read books and\nperiodicals in full. The Bible is part of it: fifteen public-domain translations to read and\ncompare, and `GET /api/v1/library/bible/search` (with `/search/count`) searches their verses with\nthe same language, a verse being the passage. So are the photos and illustrations printed in its\nbooks and periodicals: `GET /api/v1/library/images/search` finds them, with the same language, by\ntheir printed caption and by what is in them, filtered by type, shape, source, collection and date.\n\n**What each plan reaches** (the plan of the account the API key belongs to; see https://beta.adventai.app/pricing):\n- **Every plan**, including **Seeker, the free plan**: library search, authors, collections and works, the dictionary, the whole\n  Bible (reading, comparing, search, word studies, cross-references), the library's photos and illustrations\n  (`/api/v1/library/images`), and Bible World image search and browsing with the character library.\n- **Believer and up** adds:\n  - **Reading works**: opening a passage (`/search/passages/<id>`), reading around it (`/neighbours`) and\n    reading blocks (`/books|periodicals|articles/<id>/blocks`).\n  - **Bible commentary** (`GET /api/v1/library/bible/commentary`): for any verse, what Ellen G. White,\n    the pioneers and periodicals say about it, every sentence citing its passages.\n  - **Music** (`/api/v1/music`): list, search and open the songs, their albums and artists, and download their files.\n  - **Creating images** in Bible World (`POST /api/v1/bibleworld/generations`), on your image credits, and\n    **character sets** (`/api/v1/bibleworld/character-sets`, `characterSetId`).\n- **Disciple and Ambassador**: higher limits.\n\nThose routes are marked **Believer and up** below. A key on a lower plan gets `403` with\n`error: premium_required`, `plan`, `requiredPlan` and `upgradeUrl`, the pricing page. The same key opens\nthem within a minute of upgrading.\n\n**Bible World** (`/api/v1/bibleworld`, https://beta.bibleworld.ai) pictures the Bible with the same key:\nsearch the public image gallery by words, Bible passage, theme, character or creator; open the\ncharacter library with each character's variants and reference images; and make new images on\nyour Bible World credits (`POST /api/v1/bibleworld/generations`, then follow\n`GET /api/v1/bibleworld/generations/<id>`). The credits are held when the request is accepted and\nreturned if the image fails. `GET /api/v1/bibleworld/credits` shows the balance and `buyCreditsUrl`,\nthe page to buy more (https://beta.bibleworld.ai/credits). A request without enough credits answers `402`.\n\n**API key:** sign in and create a key on your account page (https://beta.adventai.app/account/library-api).\nSend it on every request as `X-Api-Key: <key>` or `Authorization: Bearer <key>`.\nUse of the API is governed by the API Terms of Use (https://beta.adventai.app/library/api/terms).\n\n**Calls a day**, for the whole account across all its keys: Seeker (free) 2,000, Believer 5,000,\nDisciple 50,000, Ambassador 200,000. Every REST call counts, and every MCP tool call. Answers carry\n`X-Daily-Limit` and `X-Daily-Remaining`. Past the limit you get `429` with `error: daily_limit_reached`,\n`resetsAt` (00:00 UTC) and `upgradeUrl`.\n\n**Rates**, per account: reads burst to 120 and refill 2 per second; searches burst to 30 and refill\n1 every 2 seconds (Disciple twice that, Ambassador four times); 8 at once. Over a rate you get `429`\nwith `Retry-After`.\n\n**Linking to a passage:** `GET /api/v1/library/search/passages/<id>` returns `context.readerUrl`,\nthe full link that opens the reader at that paragraph. To link a block yourself, add `?at=b-<blockId>`\nto the reader path: `https://beta.adventai.app/library/book/<uniqueId>/read`, `/library/periodical/<uniqueId>/read`,\nor `/library/article/<articleId>`. Without `/read` the link opens only the work's cover page.\nEllen G. White's letters and manuscripts can be searched but are not readable here: search returns\ntheir snippet, a passage comes without its text (`context.readerUrl` and `context.externalUrl` are the\nparagraph on egwwritings.org), their neighbours are empty and their `/blocks` answer 403.\n\n**AI agents:** the same features are available as an MCP server at `/mcp` (streamable HTTP,\nsame key; `https://api.adventai.app/mcp`). Tools that need Believer say so at the start of their descriptions\nand answer `premium_required` to other keys.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.adventai.app"
    }
  ],
  "paths": {
    "/api/v1/library/bible/commentary": {
      "get": {
        "tags": [
          "Bible commentary (Believer and up)"
        ],
        "summary": "Believer and up · Commentary on a verse or passage",
        "description": "**Believer and up.** Bible commentary needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nFor each verse (at most 10), the commentary of each writer group — `egw` (Ellen G. White) and `pioneers` (the pioneers' books and the church's periodicals) — as Markdown: an opening paragraph, then a section per theme. Every sentence ends with the `[^p{passageId}]` markers of the library passages it rests on, and `sources` lists those passages with a brief citation, work, author, date and reader link (open one with `GET /api/v1/library/search/passages/{id}`). A verse with no commentary yet comes with an empty list; `groups` names every writer group.",
        "parameters": [
          {
            "name": "reference",
            "in": "query",
            "description": "Any written reference, e.g. Daniel 8:14, Dan. viii. 14, Rev 14:6-12",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "group",
            "in": "query",
            "description": "egw or pioneers; empty for every group",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "translation",
            "in": "query",
            "description": "Translation code for the verse text: kjv (default), akjv, web, … — see /library/bible/translations",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BibleCommentaryDto"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/library/bible/commentary/groups": {
      "get": {
        "tags": [
          "Bible commentary (Believer and up)"
        ],
        "summary": "Believer and up · The writer groups that write commentary",
        "description": "**Believer and up.** Bible commentary needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\n",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BibleCommentaryGroupDto"
                  }
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/library/bible/translations": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "The whole-Bible translations",
        "description": "Code, name, year and group of each of the fifteen whole Bibles, and what each marks: supplied words in italics, the words of Jesus, Strong's numbers (KJV). Codes are lower-case and go in every other Bible route.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BibleTranslationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/books": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "The 66 books, with how much the library says about each chapter",
        "description": "Index, name, slug, testament, traditional group and chapter count of each book, and per chapter an attention score from 0 to 1 (log-scaled): how many library passages cite or allude to it, relative to the most-discussed chapter; and a heat score for the whole book from 0 to 1 (its passages log-scaled from the least to the most discussed book).",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BibleBookDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/{translation}/{book}/{chapter}": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "Read a chapter",
        "description": "The chapter's verses as runs of text (supplied words, words of Jesus, the divine name LORD/GOD, poetry line starts), paragraph starts — borrowed from a paragraphed translation where this one has too few, and flagged — the translators' notes, and the previous and next chapters. Verses use King James numbering; a translation's own number is in nativeReference.",
        "parameters": [
          {
            "name": "translation",
            "in": "path",
            "description": "Translation code, e.g. kjv (default), akjv, rv, asv, ylt, web — see /bible/translations",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "book",
            "in": "path",
            "description": "Book slug or name: daniel, 1-corinthians, song-of-solomon, Psalm",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "chapter",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BibleChapterDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/marks/{bookIndex}/{chapter}": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "How much the library says about each verse of a chapter",
        "description": "Per verse: library passages that cite or allude to it, distinct cross-reference targets the library makes from it that hold up, and an attention score from 0 to 1 (log-scaled across the Bible). bookIndex is 1 (Genesis) to 66 (Revelation).",
        "parameters": [
          {
            "name": "bookIndex",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "chapter",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BibleVerseMarkDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/passage": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "Read a passage by reference",
        "description": "Any written or typed reference — \"John 3:16\", \"Dan. viii, 13, 14\", \"rev 14 6-12\", \"Ps 23\", \"Acts 13:14, 42, 44\" — resolved and returned verse by verse (at most 400 verses; `truncated` says when there were more).",
        "parameters": [
          {
            "name": "ref",
            "in": "query",
            "description": "The reference, e.g. Daniel 8:13-14",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "translation",
            "in": "query",
            "description": "Translation code, e.g. kjv (default), akjv, rv, asv, ylt, web — see /bible/translations",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BiblePassageDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/compare": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "A passage in every translation",
        "description": "The passage (at most 40 verses) in all fifteen whole Bibles. Translations whose words are identical are folded into one row with all their codes, so the rows are the real differences.",
        "parameters": [
          {
            "name": "ref",
            "in": "query",
            "description": "The reference, e.g. John 3:16",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BibleCompareDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/search": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "Go to a reference, or search the words of the Bible",
        "description": "A query that reads as a reference (\"dan 8 14\", \"jn3:16\", \"1co13\", \"Daniel\") returns `goTo` and no hits. Otherwise the query is searched in one translation (or `all`) with the library's search language (`GET /api/v1/library/search/syntax`; operators in CAPITALS): phrases, `NEAR/n` and `BEFORE/n`, AND/OR/NOT, wildcards, word families (`cleanse%`), the thesaurus (`love$`) and `tag:`/`person:`/`place:` subjects, where a passage is one verse. Verses come first; a phrase or proximity match that crosses a verse boundary, in a chapter where no single verse matched, follows as a range hit (`range: true`, e.g. James 2:17-18). Ordered by relevance (verses holding plain words as typed first) or `order=bible`. Each hit carries its text and `marks` ([start, length]) of the matched words; `errors` explains a query that could not be read. Pages by `offset`.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "A reference, or a query in the library syntax, e.g. \"the sanctuary be cleansed\" or sanctuary NEAR/5 cleansed",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "translation",
            "in": "query",
            "description": "Translation code, e.g. kjv (default), akjv, rv, asv, ylt, web — see /bible/translations; all for every translation",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "old, new, a book (daniel), a chapter (Daniel 8) or a verse range (Matthew 5-7, Romans 3:20-28); empty for the whole Bible",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "relevance (default) or bible (canonical order)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "wordsOfJesus",
            "in": "query",
            "description": "Only verses holding words of Jesus (translations that mark them in red)",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50, default 20",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BibleSearchResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/search/count": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "Verse counts for a query, without results",
        "description": "Cheap, like the library's `search/count`: the number of verses matching the query within the translation, scope and filter, and `explain`, the per-operator breakdown (each node's verse count and the words a wildcard, `%` or `$` expanded to), or the query's `errors`. Useful for refining a query before paging results. Range hits (matches across a verse boundary) are not counted.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "A query in the library syntax",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "translation",
            "in": "query",
            "description": "Translation code, e.g. kjv (default), akjv, rv, asv, ylt, web — see /bible/translations; all for every translation",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "old, new, a book (daniel), a chapter (Daniel 8) or a verse range (Matthew 5-7, Romans 3:20-28); empty for the whole Bible",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "wordsOfJesus",
            "in": "query",
            "description": "Only verses holding words of Jesus",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BibleSearchCountDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/words/{verseId}": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "A verse's Hebrew and Greek words (KJV with Strong's)",
        "description": "The King James words of the verse tagged with Strong's numbers, each with the original word, its transliteration and Strong's definition. With translation=akjv the same words as the American King James Version writes them (\"unto\" → \"to\"). verseId is book × 1,000,000 + chapter × 1,000 + verse (Daniel 8:14 = 27008014).",
        "parameters": [
          {
            "name": "verseId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "translation",
            "in": "query",
            "description": "kjv (default) or akjv",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BibleWordDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/strongs/{number}": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "A Strong's entry and every verse with that word",
        "description": "Strong's entry (H6663, G26) with the verses whose KJV words render it, 20 per page; pass back `next` as `after` for the next page. Verse text is in the asked translation with the rendering words marked.",
        "parameters": [
          {
            "name": "number",
            "in": "path",
            "description": "H or G and the number, e.g. H6663",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "translation",
            "in": "query",
            "description": "Translation code, e.g. kjv (default), akjv, rv, asv, ylt, web — see /bible/translations",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "`next` from the previous page",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BibleStrongsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/library": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "What the library says about a verse or passage",
        "description": "The library passages that cite or allude to the verse(s), each with a one-paragraph understanding of what it teaches about the verse, its work, chapter or article, author, year and a reader link that opens the passage with the reference highlighted. Ranked: for a range, passages on more of its verses first; then cited before alluded, then weight; the first page shows one passage per chapter or article. Grouped egw (Ellen G. White), books (pioneers' books) and periodicals, with counts per group and, on the first page, the group's passages per year (by publication). Page with `after` = `next` from the previous page.",
        "parameters": [
          {
            "name": "reference",
            "in": "query",
            "description": "Any written reference, e.g. Daniel 8:14, Dan. viii. 14, Rev 14:6-12",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "group",
            "in": "query",
            "description": "egw, books or periodicals; empty for all",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "citedOnly",
            "in": "query",
            "description": "Only passages that cite the verse (not those that allude to it)",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "year",
            "in": "query",
            "description": "Only passages published this year",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "`next` from the previous page",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BibleLibraryPageDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/cross-references": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "Where a verse leads: its cross-references",
        "description": "The other verses the library's passages connect to the verse(s), one row per target, most supporting passages first, each with the reason of its strongest link, its topic (merged across wordings; follow it with /topics/{id}) and the target's first verse. 20 a page; page with `after` = `next`.",
        "parameters": [
          {
            "name": "reference",
            "in": "query",
            "description": "Any written reference, e.g. Daniel 8:14",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "translation",
            "in": "query",
            "description": "Translation code for the verse previews, e.g. kjv (default), akjv, web — see /bible/translations",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "`next` from the previous page",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BibleCrossReferencePageDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/topics/{id}": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "A topic followed verse to verse",
        "description": "Every verse or passage linked under a cross-reference topic (its variant wordings merged), in Bible order, each with how many passages make the link and why. 20 a page; page with `after` = `next`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Topic id from a cross-reference",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "translation",
            "in": "query",
            "description": "Translation code for the verse previews, e.g. kjv (default), akjv, web — see /bible/translations",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "`next` from the previous page",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BibleTopicTrailDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/bible/books/{index}/intro": {
      "get": {
        "tags": [
          "Bible"
        ],
        "summary": "A book's title page: most-cited verses and companion chapters",
        "description": "The five verses of the book the library discusses most, with their text, and for each chapter the Conflict of the Ages chapter (Patriarchs and Prophets, Prophets and Kings, The Desire of Ages, The Acts of the Apostles, The Great Controversy) that tells it, where the references clearly point to one.",
        "parameters": [
          {
            "name": "index",
            "in": "path",
            "description": "1 (Genesis) to 66 (Revelation)",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "translation",
            "in": "query",
            "description": "Translation code for the verse previews, e.g. kjv (default), akjv, web — see /bible/translations",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BibleBookIntroDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/images/search": {
      "get": {
        "tags": [
          "Bible World images"
        ],
        "summary": "Search public images",
        "description": "Public images whose title, description or theme contains the words (case ignored), plus images tagged to any Bible reference in the query (\"Daniel 6\", \"John 3:16\"). Most liked first.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "Words or a Bible reference, e.g. \"lions den\" or \"Genesis 22\"",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwImagePage"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/images": {
      "get": {
        "tags": [
          "Bible World images"
        ],
        "summary": "Browse public images",
        "description": "The public gallery as popular (likes and views), trending (recent likes, weighted for age) or recent (newest published first).",
        "parameters": [
          {
            "name": "sort",
            "in": "query",
            "description": "popular (default), trending or recent",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwImagePage"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/images/bible": {
      "get": {
        "tags": [
          "Bible World images"
        ],
        "summary": "Images for a Bible passage, verse by verse",
        "description": "The passage's verses (KJV), each with the ids of the public images tagged to it, and those images. Takes up to 50 references, e.g. \"Genesis 22; Hebrews 11:17-19\".",
        "parameters": [
          {
            "name": "ref",
            "in": "query",
            "description": "A Bible reference, e.g. Daniel 6 or Luke 2:8-14",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwPassageImages"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/images/{image}": {
      "get": {
        "tags": [
          "Bible World images"
        ],
        "summary": "One public image",
        "description": "The image with its creator, style, model, the characters pictured (with their library ids), themes and Bible references, and its prompt when the creator chose to show it.",
        "parameters": [
          {
            "name": "image",
            "in": "path",
            "description": "The image's guid or numeric id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwImageDetail"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/images/characters": {
      "get": {
        "tags": [
          "Bible World images"
        ],
        "summary": "Characters pictured in public images",
        "description": "Characters with at least one public image, most pictured first, optionally filtered by name. Their images: /characters/{id}/images.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "Part of a name, e.g. \"moses\"",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwPicturedCharacterPage"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/characters/{id}/images": {
      "get": {
        "tags": [
          "Bible World images"
        ],
        "summary": "Public images of a character",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwImagePage"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/themes": {
      "get": {
        "tags": [
          "Bible World images"
        ],
        "summary": "Image themes",
        "description": "Theme tags (faith, prophecy, Christmas, ...) with how many public images carry each, most used first.",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwThemePage"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/themes/{slug}/images": {
      "get": {
        "tags": [
          "Bible World images"
        ],
        "summary": "Public images in a theme",
        "description": "In the order Bible World's editors set, then most liked.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwImagePage"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/creators/{username}/images": {
      "get": {
        "tags": [
          "Bible World images"
        ],
        "summary": "A creator's public images",
        "description": "Newest published first.",
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwImagePage"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/creators/{username}/galleries/{slug}": {
      "get": {
        "tags": [
          "Bible World images"
        ],
        "summary": "A creator's public gallery",
        "description": "A named collection a creator made public, with a page of its images in their order.",
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwGallery"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/characters": {
      "get": {
        "tags": [
          "Bible World characters"
        ],
        "summary": "Search the character library",
        "description": "The people, creatures, objects and heavenly beings Bible World draws consistently, by name (case ignored), alphabetical, each with its default variant and reference image. With characterSetId (Believer and up), a character in that set shows the set's version.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "Part of a name, e.g. \"david\"; empty lists all",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "characterSetId",
            "in": "query",
            "description": "Your character set, or a public one",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwCharacterPage"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/characters/{id}": {
      "get": {
        "tags": [
          "Bible World characters"
        ],
        "summary": "A character's variants and reference images",
        "description": "Every variant (age, look) with its visual description and reference images. Pass variant ids as characterVariantIds when generating to put exactly that person in the picture.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "characterSetId",
            "in": "query",
            "description": "Put this set's versions first",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwCharacterDetail"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/character-sets": {
      "get": {
        "tags": [
          "Bible World characters"
        ],
        "summary": "Believer and up · Your character sets",
        "description": "**Believer and up.** Character sets needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nSets of your own versions of characters, which replace the library's when you generate with characterSetId.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BwCharacterSet"
                  }
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/bibleworld/character-sets/{id}": {
      "get": {
        "tags": [
          "Bible World characters"
        ],
        "summary": "Believer and up · One character set with its variants",
        "description": "**Believer and up.** Character sets needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nYours or a public one.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwCharacterSetDetail"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/bibleworld/generation/options": {
      "get": {
        "tags": [
          "Bible World generation"
        ],
        "summary": "Models, styles, sizes and their credit costs",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwGenerationOptions"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/generation/print-sizes": {
      "get": {
        "tags": [
          "Bible World generation"
        ],
        "summary": "Print-ready paper sizes",
        "description": "Paper sizes with dpi, pixel size and credits for both orientations. Pass a size id as paperSizeId when generating for a print-ready image and PDF.",
        "parameters": [
          {
            "name": "model",
            "in": "query",
            "description": "Model id; the default print model when empty",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/credits": {
      "get": {
        "tags": [
          "Bible World generation"
        ],
        "summary": "Your image credits",
        "description": "Credits left this period and from bought packs, your plan, and buyCreditsUrl: the page where you buy more (or upgrade, on the free plan).",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwCredits"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/generations": {
      "post": {
        "tags": [
          "Bible World generation"
        ],
        "summary": "Believer and up · Make a new image",
        "description": "**Believer and up.** Creating images needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nHolds the image's credits, queues it and answers at once with its generationId; follow it with GET /generations/{id}. Images take about 20 seconds to a few minutes; a failed one returns its credits. 402 when credits run short (with buyCreditsUrl).",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BwGenerationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BwGenerationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BwGenerationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwGenerationStarted"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      },
      "get": {
        "tags": [
          "Bible World generation"
        ],
        "summary": "Your images, newest first",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwGenerationPage"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bibleworld/generations/{generationId}": {
      "get": {
        "tags": [
          "Bible World generation"
        ],
        "summary": "An image you asked for",
        "description": "Its status (queued, processing, completed, errored) and, once completed, the image. wait holds the answer up to that many seconds (at most 50) until it finishes.",
        "parameters": [
          {
            "name": "generationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "wait",
            "in": "query",
            "description": "Seconds to wait for it to finish, 0–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BwGeneration"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/dictionary": {
      "get": {
        "tags": [
          "Dictionary"
        ],
        "summary": "The dictionary's title page and letter index",
        "description": "Title, author, edition, publisher, year, counts of pages, entries, headwords and illustrations, and where each letter's section starts (entry id) for browsing.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryInfo"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/dictionary/lookup": {
      "get": {
        "tags": [
          "Dictionary"
        ],
        "summary": "Look a word up as met in reading",
        "description": "Every entry printed under the word, in print order. Inflected and old spellings are found through their root (\"running\" under Run, \"shew'd\" under Shew); `matchedForm` and `matchNote` say how. Empty `entries` when the dictionary does not have the word.",
        "parameters": [
          {
            "name": "word",
            "in": "query",
            "description": "A word as written, e.g. \"conversation\" or \"prevent\"",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryLookupResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/dictionary/entries/{id}": {
      "get": {
        "tags": [
          "Dictionary"
        ],
        "summary": "One entry in full",
        "description": "The definition as Markdown, pictures printed with it, the scanned page boxes it fills, the entries before and after it in print order, and other entries under the same headword.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryEntryDetail"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/dictionary/search": {
      "get": {
        "tags": [
          "Dictionary"
        ],
        "summary": "Search headwords and definitions",
        "description": "Headwords that are the query or start with it first, then definitions that mention the words (English stemming), each with a snippet whose matched words are wrapped in **.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "Words, e.g. \"sanctuary\"",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50 per list",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionarySearchResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/dictionary/browse": {
      "get": {
        "tags": [
          "Dictionary"
        ],
        "summary": "Read the dictionary in print order",
        "description": "A slice of entries in print order: from a word (the first entry at or after it), or after/before a sequence number from a slice already read. `hasBefore`/`hasAfter` say whether there is more.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "Start at this word",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "Entries after this sequence number",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "before",
            "in": "query",
            "description": "Entries before this sequence number",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–200",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryBrowseSlice"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/stats": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Library size and publication date range",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryStatsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/collections": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "The full tree of content collections",
        "description": "Collections group works by theme or series. Use an id as `collectionIds` to scope a search, or open it to list its works.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionTreeResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/collections/{id}": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "One collection with its first page of works",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "collection (default once the collection has a set order), oldest (default otherwise), newest or alphabetical",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryCollectionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/collections/{id}/works": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Page through the works in a collection",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–100",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 48
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "collection (default once the collection has a set order), oldest (default otherwise), newest or alphabetical",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD (start of that period)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD (end of that period)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LibraryWorkSummaryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/collections/{id}/authors": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "The authors in a collection, most works first",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–100",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LibraryCollectionAuthorDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/authors": {
      "get": {
        "tags": [
          "Authors"
        ],
        "summary": "Find authors",
        "description": "Everyone with at least one published book or article, with their book and article counts. Filter by part of the name; accents and case are ignored.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "Part of a name, e.g. \"white\" or \"Andrews\"",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–100",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "name (default, alphabetical by surname) or works (most works first)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryAuthorListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/authors/{idOrSlug}": {
      "get": {
        "tags": [
          "Authors"
        ],
        "summary": "One author: details, counts, dates and collections",
        "description": "Look up by numeric id or slug. Includes a short biography when there is one, the dates of their earliest and latest works, and the collections their works are in. Use the id as `authorId` to search only their writing.",
        "parameters": [
          {
            "name": "idOrSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryAuthorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/authors/{id}/works": {
      "get": {
        "tags": [
          "Authors"
        ],
        "summary": "Page through an author's books and articles",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "description": "book, article, or empty for both",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–100",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "collection (default once the collection has a set order), oldest (default otherwise), newest or alphabetical",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD (start of that period)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD (end of that period)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryWorksPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/works": {
      "get": {
        "tags": [
          "Works"
        ],
        "summary": "Browse published works by date, kind, author and collection",
        "description": "Every published book, periodical edition and article, filtered and sorted in one call — e.g. all articles by an author in the 1850s, newest first. A collection includes its sub-collections; an article counts as in a collection when it or its edition is. A work's date is the start of its publication period.",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "description": "book, periodical (editions), article, or empty for all",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "authorId",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "collectionId",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD (start of that period)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD (end of that period)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–100",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "collection (default once the collection has a set order), oldest (default otherwise), newest or alphabetical",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryWorksPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/timeline": {
      "get": {
        "tags": [
          "Works"
        ],
        "summary": "How many works were published each year",
        "description": "Books, editions and articles per year for the same filters as `/works` — for the whole library, one author or one collection. Also returns how many matching works have no date.",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "description": "book, periodical, article, or empty for all",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "authorId",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "collectionId",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD (start of that period)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD (end of that period)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryTimelineResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/books/{uniqueId}": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "A book's bibliographic details and chapter outline",
        "parameters": [
          {
            "name": "uniqueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryBookOverviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/books/{uniqueId}/contents": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "A book's reading-order manifest",
        "description": "One entry per content block, in reading order. Block positions are the `from` values for `/blocks`.",
        "parameters": [
          {
            "name": "uniqueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryBookManifestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/books/{uniqueId}/blocks": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Believer and up · Read a range of a book's text blocks",
        "description": "**Believer and up.** Reading works needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\n",
        "parameters": [
          {
            "name": "uniqueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "Reading-order position of the first block",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "count",
            "in": "query",
            "description": "1–200",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryBookBlocksResponse"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/library/periodicals/{uniqueId}": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "A periodical edition's details and its articles",
        "parameters": [
          {
            "name": "uniqueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryEditionOverviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/periodicals/{uniqueId}/contents": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "A periodical edition's reading-order manifest",
        "parameters": [
          {
            "name": "uniqueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryBookManifestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/periodicals/{uniqueId}/blocks": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Believer and up · Read a range of a periodical edition's text blocks",
        "description": "**Believer and up.** Reading works needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\n",
        "parameters": [
          {
            "name": "uniqueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "count",
            "in": "query",
            "description": "1–200",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryBookBlocksResponse"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/library/articles/{articleId}/contents": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "One periodical article's reading-order manifest",
        "parameters": [
          {
            "name": "articleId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryBookManifestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/articles/{articleId}/blocks": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Believer and up · Read a range of one article's text blocks",
        "description": "**Believer and up.** Reading works needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\n",
        "parameters": [
          {
            "name": "articleId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "count",
            "in": "query",
            "description": "1–200",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryBookBlocksResponse"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/library/works/{kind}/{uniqueId}/scope": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "The search sourceId for a book or periodical edition",
        "parameters": [
          {
            "name": "kind",
            "in": "path",
            "description": "book or periodical",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "uniqueId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibrarySearchSourceDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/search/syntax": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "The search query language (Markdown)",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": { },
              "text/markdown": { }
            }
          }
        }
      }
    },
    "/api/v1/library/search": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Ranked passage search",
        "description": "Operator search over every passage in the library (see `/search/syntax`). The first 1,000 hits are reachable with `offset`; past that, pass back the previous page's `cursor` fields.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "Operator query, e.g. \"righteousness by faith\" NEAR/20 law",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "collectionIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "pattern": "^-?(?:0|[1-9]\\d*)$",
                "type": [
                  "integer",
                  "string"
                ],
                "format": "int32"
              }
            }
          },
          {
            "name": "sourceId",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–100",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "cursorDoc",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "cursorScore",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "float"
            }
          },
          {
            "name": "cursorGeneration",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "authorId",
            "in": "query",
            "description": "Only passages by this author (id from /authors)",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "relevance (default), oldest or newest. Date order reaches the first 1,000 hits by offset; the cursor is relevance-only.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibrarySearchResultsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/search/publications": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Search results grouped by book or edition",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "collectionIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "pattern": "^-?(?:0|[1-9]\\d*)$",
                "type": [
                  "integer",
                  "string"
                ],
                "format": "int32"
              }
            }
          },
          {
            "name": "sourceId",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–100",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "authorId",
            "in": "query",
            "description": "Only passages by this author",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibrarySearchResultsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/search/count": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Hit counts for a query, without results",
        "description": "Cheap. Returns the total hits and a per-operator breakdown, or the query's errors. Useful for refining a query before paging results.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "collectionIds",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "pattern": "^-?(?:0|[1-9]\\d*)$",
                "type": [
                  "integer",
                  "string"
                ],
                "format": "int32"
              }
            }
          },
          {
            "name": "sourceId",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "authorId",
            "in": "query",
            "description": "Only passages by this author",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibrarySearchExplainResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/search/passages/{id}": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Believer and up · Open one search hit",
        "description": "**Believer and up.** Reading works needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nThe passage's reader blocks (left out for Ellen G. White's letters and manuscripts, which are read on egwwritings.org), the words `q` matched, its section summary, its work, the previous/next passage ids, and `context.readerUrl`: the full link that opens the website's reader at this passage.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibrarySearchDocumentResponse"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/library/search/passages/{id}/neighbours": {
      "get": {
        "tags": [
          "Library"
        ],
        "summary": "Believer and up · Passages before and after a hit, in reading order",
        "description": "**Believer and up.** Reading works needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "before",
            "in": "query",
            "description": "0–5",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "0–5",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibrarySearchNeighboursResponse"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/library/images/search": {
      "get": {
        "tags": [
          "Photos and illustrations"
        ],
        "summary": "Search the photos and illustrations",
        "description": "Pictures printed in the library's books and periodicals, found by their printed caption and by what the AI saw in\neach one (a description, keywords with plain synonyms, the people and places named, the Bible passages it illustrates),\nso a picture with no caption is found too. The query language is the library's (`/search/syntax`): plain words match\nas typed (`ship%` for ship, ships, shipping), `tag:`, `person:` and `place:` search the keywords and names, and a\nBible reference finds the pictures of that passage. With no words, every picture within the filters, oldest first.\nFilters never change the order. `types` and `orientations` come back with how many matches each value has within the\nother filters. Each result has the picture's links, its date, its type and description, and `highlights` with the\nmatched words wrapped in `**`. Open one with `/images/{id}`.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "Operator query, e.g. `baptism`, `\"camp meeting\"`, `tag:ship`, `place:Battle Creek` or `John 3:16`. Empty lists every picture within the filters.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "types",
            "in": "query",
            "description": "photograph, engraving, drawing, painting, map, diagram, chart, cartoon, decoration, document or other; any of them",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "kind",
            "in": "query",
            "description": "book or periodical; empty for both",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orientations",
            "in": "query",
            "description": "landscape, portrait or square; any of them",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "collectionIds",
            "in": "query",
            "description": "Collection ids (from `/collections`); a parent covers everything under it",
            "schema": {
              "type": "array",
              "items": {
                "pattern": "^-?(?:0|[1-9]\\d*)$",
                "type": [
                  "integer",
                  "string"
                ],
                "format": "int32"
              }
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD (start of that period)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "YYYY, YYYY-MM or YYYY-MM-DD (end of that period)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "relevance (default), oldest or newest",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Results to skip, up to 9,950",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryImageSearchResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/library/images/{id}": {
      "get": {
        "tags": [
          "Photos and illustrations"
        ],
        "summary": "One picture, with what is in it",
        "description": "The picture by its id (`periodical-345`, `book-12`): its links, caption, date, type and the work it is printed in, what the AI saw in it (description, keywords, people, places, Bible passages), and `readerUrl`, the website's reader opened at the picture in its book or periodical. 404 when the library does not show it.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The picture's id from a search, e.g. `periodical-345`",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LibraryImageDetailDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/music/tracks": {
      "get": {
        "tags": [
          "Music (Believer and up)"
        ],
        "summary": "Believer and up · List songs",
        "description": "**Believer and up.** Music needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nEvery song on the music pages, by title or newest first, optionally one artist's. Each with its artists, album, length, style and page on the website; open one with /tracks/{id}.",
        "parameters": [
          {
            "name": "sort",
            "in": "query",
            "description": "title (default) or recent",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "artist",
            "in": "query",
            "description": "An artist's slug from /artists",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50, default 24",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MusicTrackPageDto"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/music/search": {
      "get": {
        "tags": [
          "Music (Believer and up)"
        ],
        "summary": "Believer and up · Search songs",
        "description": "**Believer and up.** Music needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nSongs whose title, style, Scripture or book reference, artist name or lyrics hold the words (case ignored), by title. Empty words list every song.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "Words, e.g. \"sabbath\", \"Psalm 23\" or an artist's name",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "1–50, default 24",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 24
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MusicTrackPageDto"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/music/tracks/{id}": {
      "get": {
        "tags": [
          "Music (Believer and up)"
        ],
        "summary": "Believer and up · One song",
        "description": "**Believer and up.** Music needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nThe song with its description, full lyrics, the Scripture and book references it is drawn from, an HLS stream, its cover, and the files to download (audio, sheet music, backing track …), each with a downloadUrl.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MusicTrackDetailDto"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/music/tracks/{id}/downloads/{downloadId}": {
      "get": {
        "tags": [
          "Music (Believer and up)"
        ],
        "summary": "Believer and up · Download a song's file",
        "description": "**Believer and up.** Music needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nRedirects (302) to the file, a signed link good for 15 minutes that saves under the song's name; with redirect=false answers the link as JSON instead. Each call counts as a download by you, as on the website.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "downloadId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "redirect",
            "in": "query",
            "description": "false to get the link as JSON",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "302": {
            "description": "Found",
            "content": {
              "application/json": { }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MusicDownloadLinkDto"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/music/albums": {
      "get": {
        "tags": [
          "Music (Believer and up)"
        ],
        "summary": "Believer and up · Albums",
        "description": "**Believer and up.** Music needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nPublished albums by title, with how many songs each holds.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MusicAlbumDto"
                  }
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/music/albums/{slug}": {
      "get": {
        "tags": [
          "Music (Believer and up)"
        ],
        "summary": "Believer and up · One album and its songs",
        "description": "**Believer and up.** Music needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\n",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MusicAlbumDetailDto"
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    },
    "/api/v1/music/artists": {
      "get": {
        "tags": [
          "Music (Believer and up)"
        ],
        "summary": "Believer and up · Artists",
        "description": "**Believer and up.** Music needs the Believer plan or higher (Believer, Disciple or Ambassador) on the account the API key belongs to. Other keys get `403` with `error: premium_required` and `upgradeUrl` (https://beta.adventai.app/pricing).\n\nArtists by name (at most 50), optionally filtered by part of a name, with how many songs each has. Their songs: /tracks?artist={slug}.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "Part of a name",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MusicArtistDto"
                  }
                }
              }
            }
          },
          "403": {
            "description": "premium_required: the key's owner is not on the Believer plan or higher (Believer, Disciple or Ambassador) (body: error, message, plan, requiredPlan, upgradeUrl); or account_unavailable: the account is suspended or gone."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AuthorGender": {
        "type": "integer",
        "default": 0
      },
      "BibleBookDto": {
        "required": [
          "index",
          "name",
          "slug",
          "testament",
          "group",
          "chapters",
          "attention",
          "heat"
        ],
        "type": "object",
        "properties": {
          "index": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "testament": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "chapters": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "attention": {
            "type": "array",
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "double"
            }
          },
          "heat": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "BibleBookIntroDto": {
        "required": [
          "bookIndex",
          "bookName",
          "mostCited",
          "companions"
        ],
        "type": "object",
        "properties": {
          "bookIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bookName": {
            "type": "string"
          },
          "mostCited": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleLibraryVerseDto"
            }
          },
          "companions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleChapterCompanionDto"
            }
          }
        }
      },
      "BibleChapterCompanionDto": {
        "required": [
          "chapter",
          "companion"
        ],
        "type": "object",
        "properties": {
          "chapter": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "companion": {
            "$ref": "#/components/schemas/BibleCompanionDto"
          }
        }
      },
      "BibleChapterDto": {
        "required": [
          "code",
          "translationName",
          "bookIndex",
          "bookName",
          "bookSlug",
          "chapter",
          "chapterCount",
          "verses",
          "previous",
          "next"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "translationName": {
            "type": "string"
          },
          "bookIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bookName": {
            "type": "string"
          },
          "bookSlug": {
            "type": "string"
          },
          "chapter": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "chapterCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "verses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleVerseDto"
            }
          },
          "previous": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BibleChapterRefDto"
              }
            ]
          },
          "next": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BibleChapterRefDto"
              }
            ]
          },
          "bookVerseCounts": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        }
      },
      "BibleChapterRefDto": {
        "required": [
          "bookIndex",
          "bookName",
          "bookSlug",
          "chapter"
        ],
        "type": "object",
        "properties": {
          "bookIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bookName": {
            "type": "string"
          },
          "bookSlug": {
            "type": "string"
          },
          "chapter": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BibleCommentaryDto": {
        "required": [
          "reference",
          "link",
          "translation",
          "groups",
          "verses",
          "truncated"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "type": "string"
          },
          "link": {
            "type": "string",
            "description": "The passage in the library's Bible reader"
          },
          "translation": {
            "type": "string",
            "description": "Translation of the verse text"
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleCommentaryGroupDto"
            },
            "description": "Every writer group that writes commentary, whether or not this passage has theirs"
          },
          "verses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleCommentaryVerseDto"
            },
            "description": "Verse by verse, at most 10; a verse with no commentary yet has an empty list"
          },
          "truncated": {
            "type": "boolean",
            "description": "The reference holds more verses than were returned; ask for the rest by a narrower reference"
          }
        }
      },
      "BibleCommentaryGroupDto": {
        "required": [
          "key",
          "name"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Pass as group to get only this writer group's commentary"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "BibleCommentarySourceDto": {
        "required": [
          "marker",
          "passageId",
          "reference",
          "work",
          "heading",
          "author",
          "date",
          "kind",
          "link"
        ],
        "type": "object",
        "properties": {
          "marker": {
            "type": "string",
            "description": "The marker as it appears in the Markdown, without [^ and ]: p{passageId}"
          },
          "passageId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Open it with GET /api/v1/library/search/passages/{id}",
            "format": "int32"
          },
          "reference": {
            "type": [
              "null",
              "string"
            ],
            "description": "A brief citation, e.g. \"GC 409.1\""
          },
          "work": {
            "type": "string"
          },
          "heading": {
            "type": [
              "null",
              "string"
            ]
          },
          "author": {
            "type": [
              "null",
              "string"
            ]
          },
          "date": {
            "type": [
              "null",
              "string"
            ],
            "description": "When it was written or published"
          },
          "kind": {
            "type": "string",
            "description": "book or article"
          },
          "link": {
            "type": [
              "null",
              "string"
            ],
            "description": "The passage in the library's reader"
          }
        }
      },
      "BibleCommentaryStudyDto": {
        "required": [
          "group",
          "name",
          "markdown",
          "sources"
        ],
        "type": "object",
        "properties": {
          "group": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "markdown": {
            "type": "string",
            "description": "An opening paragraph, then a ## section per theme. Every sentence ends with the [^p{passageId}] markers of the passages it rests on"
          },
          "sources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleCommentarySourceDto"
            },
            "description": "The passages the markers point to"
          }
        }
      },
      "BibleCommentaryVerseDto": {
        "required": [
          "reference",
          "verseId",
          "link",
          "text",
          "commentary"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "type": "string"
          },
          "verseId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "book × 1,000,000 + chapter × 1,000 + verse",
            "format": "int64"
          },
          "link": {
            "type": "string",
            "description": "The verse's own page in the Bible reader, with its commentary"
          },
          "text": {
            "type": "string"
          },
          "commentary": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleCommentaryStudyDto"
            },
            "description": "One study per writer group that has one, in the groups' order"
          }
        }
      },
      "BibleCompanionDto": {
        "required": [
          "workTitle",
          "chapterTitle",
          "readerUrl"
        ],
        "type": "object",
        "properties": {
          "workTitle": {
            "type": "string"
          },
          "chapterTitle": {
            "type": [
              "null",
              "string"
            ]
          },
          "readerUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BibleCompareDto": {
        "required": [
          "reference",
          "rows"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "$ref": "#/components/schemas/BibleReferenceDto"
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleCompareRowDto"
            }
          }
        }
      },
      "BibleCompareRowDto": {
        "required": [
          "codes",
          "names",
          "verses"
        ],
        "type": "object",
        "properties": {
          "codes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "verses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleVerseDto"
            }
          }
        }
      },
      "BibleCrossReferenceDto": {
        "required": [
          "target",
          "support",
          "reason",
          "topicId",
          "topic",
          "preview",
          "topics"
        ],
        "type": "object",
        "properties": {
          "target": {
            "$ref": "#/components/schemas/BibleReferenceDto"
          },
          "support": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "topicId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "topic": {
            "type": [
              "null",
              "string"
            ]
          },
          "preview": {
            "type": "string"
          },
          "topics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleTopicDto"
            }
          }
        }
      },
      "BibleCrossReferencePageDto": {
        "required": [
          "reference",
          "total",
          "items",
          "next"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "$ref": "#/components/schemas/BibleReferenceDto"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleCrossReferenceDto"
            }
          },
          "next": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BibleLibraryCountsDto": {
        "required": [
          "total",
          "cited",
          "alluded",
          "egw",
          "books",
          "periodicals"
        ],
        "type": "object",
        "properties": {
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "cited": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "alluded": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "egw": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "books": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "periodicals": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BibleLibraryItemDto": {
        "required": [
          "passageId",
          "verseId",
          "kind",
          "weight",
          "understanding",
          "group",
          "workTitle",
          "sectionTitle",
          "author",
          "year",
          "readerUrl"
        ],
        "type": "object",
        "properties": {
          "passageId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "verseId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "kind": {
            "type": "string"
          },
          "weight": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "understanding": {
            "type": [
              "null",
              "string"
            ]
          },
          "group": {
            "type": "string"
          },
          "workTitle": {
            "type": "string"
          },
          "sectionTitle": {
            "type": [
              "null",
              "string"
            ]
          },
          "author": {
            "type": [
              "null",
              "string"
            ]
          },
          "year": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "readerUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BibleLibraryPageDto": {
        "required": [
          "reference",
          "counts",
          "years",
          "items",
          "next"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "$ref": "#/components/schemas/BibleReferenceDto"
          },
          "counts": {
            "$ref": "#/components/schemas/BibleLibraryCountsDto"
          },
          "years": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleYearCountDto"
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleLibraryItemDto"
            }
          },
          "next": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BibleLibraryVerseDto": {
        "required": [
          "reference",
          "library",
          "preview"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "$ref": "#/components/schemas/BibleReferenceDto"
          },
          "library": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "preview": {
            "type": "string"
          }
        }
      },
      "BiblePassageDto": {
        "required": [
          "reference",
          "code",
          "translationName",
          "verses",
          "truncated"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "$ref": "#/components/schemas/BibleReferenceDto"
          },
          "code": {
            "type": "string"
          },
          "translationName": {
            "type": "string"
          },
          "verses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleVerseDto"
            }
          },
          "truncated": {
            "type": "boolean"
          }
        }
      },
      "BibleReferenceDto": {
        "required": [
          "display",
          "bookIndex",
          "bookSlug",
          "chapter",
          "verseStart",
          "verseEnd",
          "startVerseId",
          "endVerseId",
          "href"
        ],
        "type": "object",
        "properties": {
          "display": {
            "type": "string"
          },
          "bookIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "bookSlug": {
            "type": "string"
          },
          "chapter": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "verseStart": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "verseEnd": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startVerseId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "endVerseId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "href": {
            "type": "string"
          }
        }
      },
      "BibleRunDto": {
        "required": [
          "text"
        ],
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "italic": {
            "type": "boolean",
            "default": false
          },
          "jesus": {
            "type": "boolean",
            "default": false
          },
          "divine": {
            "type": "boolean",
            "default": false
          },
          "lineBreak": {
            "type": "boolean",
            "default": false
          },
          "indent": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32",
            "default": 0
          },
          "paragraphBreak": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "BibleSearchCountDto": {
        "required": [
          "query",
          "translation",
          "hits",
          "plan",
          "errors",
          "explain",
          "elapsedMs"
        ],
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "translation": {
            "type": [
              "null",
              "string"
            ]
          },
          "hits": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "plan": {
            "type": [
              "null",
              "string"
            ]
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "explain": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OperatorExplainNode"
              }
            ]
          },
          "elapsedMs": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "BibleSearchHitDto": {
        "required": [
          "reference",
          "text",
          "marks"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "$ref": "#/components/schemas/BibleReferenceDto"
          },
          "text": {
            "type": "string"
          },
          "marks": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "pattern": "^-?(?:0|[1-9]\\d*)$",
                "type": [
                  "integer",
                  "string"
                ],
                "format": "int32"
              }
            }
          },
          "range": {
            "type": "boolean",
            "default": false
          },
          "translation": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BibleSearchResultDto": {
        "required": [
          "goTo",
          "total",
          "hits",
          "offset"
        ],
        "type": "object",
        "properties": {
          "goTo": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BibleReferenceDto"
              }
            ]
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleSearchHitDto"
            }
          },
          "offset": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "order": {
            "type": "string",
            "default": "relevance"
          },
          "errors": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "BibleStrongsDto": {
        "required": [
          "number",
          "lemma",
          "transliteration",
          "definition",
          "total",
          "verses",
          "next"
        ],
        "type": "object",
        "properties": {
          "number": {
            "type": "string"
          },
          "lemma": {
            "type": [
              "null",
              "string"
            ]
          },
          "transliteration": {
            "type": [
              "null",
              "string"
            ]
          },
          "definition": {
            "type": [
              "null",
              "string"
            ]
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "verses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleSearchHitDto"
            }
          },
          "next": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BibleTopicDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "BibleTopicTrailDto": {
        "required": [
          "topicId",
          "topic",
          "steps",
          "next"
        ],
        "type": "object",
        "properties": {
          "topicId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "topic": {
            "type": "string"
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleCrossReferenceDto"
            }
          },
          "next": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BibleTranslationDto": {
        "required": [
          "code",
          "name",
          "year",
          "group",
          "isDefault",
          "hasItalics",
          "hasRedLetters",
          "hasStrongs"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "year": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "group": {
            "type": "string"
          },
          "isDefault": {
            "type": "boolean"
          },
          "hasItalics": {
            "type": "boolean"
          },
          "hasRedLetters": {
            "type": "boolean"
          },
          "hasStrongs": {
            "type": "boolean"
          }
        }
      },
      "BibleVerseDto": {
        "required": [
          "verseId",
          "chapter",
          "verse",
          "runs",
          "startsParagraph",
          "paragraphBorrowed",
          "notes",
          "nativeReference"
        ],
        "type": "object",
        "properties": {
          "verseId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "chapter": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "verse": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "runs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BibleRunDto"
            }
          },
          "startsParagraph": {
            "type": "boolean"
          },
          "paragraphBorrowed": {
            "type": "boolean"
          },
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "nativeReference": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BibleVerseMarkDto": {
        "required": [
          "verse",
          "library",
          "crossReferences",
          "attention"
        ],
        "type": "object",
        "properties": {
          "verse": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "library": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "crossReferences": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "attention": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "BibleWordDto": {
        "required": [
          "position",
          "text",
          "strongs",
          "lemma",
          "transliteration",
          "definition"
        ],
        "type": "object",
        "properties": {
          "position": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "text": {
            "type": "string"
          },
          "strongs": {
            "type": [
              "null",
              "string"
            ]
          },
          "lemma": {
            "type": [
              "null",
              "string"
            ]
          },
          "transliteration": {
            "type": [
              "null",
              "string"
            ]
          },
          "definition": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BibleYearCountDto": {
        "required": [
          "year",
          "count"
        ],
        "type": "object",
        "properties": {
          "year": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BlockSourcePageDto": {
        "required": [
          "pageIndex",
          "naturalPageNumber",
          "imageUrl",
          "boxes"
        ],
        "type": "object",
        "properties": {
          "pageIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "naturalPageNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "printedPageNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "imageUrl": {
            "type": "string"
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "boxes": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
                "type": [
                  "number",
                  "string"
                ],
                "format": "double"
              }
            }
          }
        }
      },
      "BlockSourcePagesResponse": {
        "required": [
          "available"
        ],
        "type": "object",
        "properties": {
          "available": {
            "type": "boolean"
          },
          "pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlockSourcePageDto"
            }
          }
        }
      },
      "BwCharacter": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "type": "string"
          },
          "isFamous": {
            "type": "boolean"
          },
          "gender": {
            "type": [
              "null",
              "string"
            ]
          },
          "defaultVariantId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "referenceImageUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BwCharacterDetail": {
        "required": [
          "name",
          "type",
          "pageUrl"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "type": "string"
          },
          "isFamous": {
            "type": "boolean"
          },
          "gender": {
            "type": [
              "null",
              "string"
            ]
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwVariant"
            }
          },
          "pageUrl": {
            "type": "string"
          }
        }
      },
      "BwCharacterPage": {
        "type": "object",
        "properties": {
          "characters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwCharacter"
            }
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "offset": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean"
          }
        }
      },
      "BwCharacterSet": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isPublic": {
            "type": "boolean"
          },
          "variantCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          }
        }
      },
      "BwCharacterSetDetail": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isPublic": {
            "type": "boolean"
          },
          "isMine": {
            "type": "boolean"
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwSetVariant"
            }
          }
        }
      },
      "BwCredits": {
        "required": [
          "plan",
          "buyCreditsUrl"
        ],
        "type": "object",
        "properties": {
          "remaining": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isUnlimited": {
            "type": "boolean"
          },
          "monthlyAllowance": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "monthlyUsed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "monthlyRemaining": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "purchasedRemaining": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "plan": {
            "type": "string"
          },
          "isPaidPlan": {
            "type": "boolean"
          },
          "buyCreditsUrl": {
            "type": "string"
          }
        }
      },
      "BwGallery": {
        "required": [
          "name",
          "slug",
          "creator",
          "pageUrl",
          "images"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "imageCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "creator": {
            "$ref": "#/components/schemas/BwPerson"
          },
          "pageUrl": {
            "type": "string"
          },
          "images": {
            "$ref": "#/components/schemas/BwImagePage"
          }
        }
      },
      "BwGeneratedImage": {
        "required": [
          "url",
          "downloadUrl",
          "yourImagesUrl"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "url": {
            "type": "string"
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "downloadUrl": {
            "type": "string"
          },
          "printPdfUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "yourImagesUrl": {
            "type": "string"
          }
        }
      },
      "BwGeneration": {
        "required": [
          "generationId",
          "status",
          "prompt"
        ],
        "type": "object",
        "properties": {
          "generationId": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "model": {
            "type": [
              "null",
              "string"
            ]
          },
          "style": {
            "type": [
              "null",
              "string"
            ]
          },
          "aspectRatio": {
            "type": [
              "null",
              "string"
            ]
          },
          "resolution": {
            "type": [
              "null",
              "string"
            ]
          },
          "creditsCost": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "error": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdTime": {
            "type": "string",
            "format": "date-time"
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ]
          },
          "image": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BwGeneratedImage"
              }
            ]
          }
        }
      },
      "BwGenerationOptions": {
        "required": [
          "defaultModel",
          "defaultStyle",
          "defaultResolution"
        ],
        "type": "object",
        "properties": {
          "defaultModel": {
            "type": "string"
          },
          "defaultStyle": {
            "type": "string"
          },
          "defaultResolution": {
            "type": "string"
          },
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwModel"
            }
          },
          "styles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwStyle"
            }
          }
        }
      },
      "BwGenerationPage": {
        "type": "object",
        "properties": {
          "generations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwGeneration"
            }
          },
          "offset": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean"
          }
        }
      },
      "BwGenerationRequest": {
        "required": [
          "prompt"
        ],
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "What to picture. Bible references in it (\"Genesis 22:10\") bring their verse text in."
          },
          "model": {
            "type": [
              "null",
              "string"
            ],
            "description": "Model id from /generation/options; the default model when empty."
          },
          "style": {
            "type": [
              "null",
              "string"
            ],
            "description": "Style id from /generation/options; modern-realism when empty, \"none\" for no style."
          },
          "aspectRatio": {
            "type": [
              "null",
              "string"
            ],
            "description": "\"auto\" (default) or one of the model's aspect ratios, e.g. 16:9."
          },
          "resolution": {
            "type": [
              "null",
              "string"
            ],
            "description": "1k, 2k (default) or 4k where the model has it; sets the credit cost."
          },
          "research": {
            "type": [
              "null",
              "string"
            ],
            "description": "Biblical research before drawing: auto (default), on or off."
          },
          "characterSetId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Your character set (or a public one) whose versions of characters replace the library's.",
            "format": "int32"
          },
          "characterVariantIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Exact character variants to put in the picture (from the character tools). When given, only these are used."
          },
          "autoMatchCharacters": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Find the characters in the prompt in the library automatically (default true; ignored when characterVariantIds is given)."
          },
          "referenceImageIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            },
            "description": "Media ids of images to work from: your own, or public images from search."
          },
          "editGenerationId": {
            "type": [
              "null",
              "string"
            ],
            "description": "generationId of an image of yours to edit with this prompt."
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Keep this the same across related images so later ones keep the same people; returned by the first request."
          },
          "paperSizeId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Print-ready: a paper size id from /generation/print-sizes (e.g. a4); omit for a screen image."
          },
          "printOrientation": {
            "type": [
              "null",
              "string"
            ],
            "description": "Print-ready: portrait (default) or landscape."
          }
        }
      },
      "BwGenerationStarted": {
        "required": [
          "generationId",
          "sessionId",
          "status",
          "statusUrl"
        ],
        "type": "object",
        "properties": {
          "generationId": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "creditsCost": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "creditsRemainingBefore": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "statusUrl": {
            "type": "string"
          },
          "estimatedSeconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BwImage": {
        "required": [
          "guid",
          "type",
          "pageUrl"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "guid": {
            "type": "string"
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "type": "string"
          },
          "imageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "videoUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "pageUrl": {
            "type": "string"
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "likes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "views": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "comments": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BwImageDetail": {
        "required": [
          "image",
          "creator"
        ],
        "type": "object",
        "properties": {
          "image": {
            "$ref": "#/components/schemas/BwImage"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "prompt": {
            "type": [
              "null",
              "string"
            ]
          },
          "style": {
            "type": [
              "null",
              "string"
            ]
          },
          "aspectRatio": {
            "type": [
              "null",
              "string"
            ]
          },
          "model": {
            "type": [
              "null",
              "string"
            ]
          },
          "publishedTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "creator": {
            "$ref": "#/components/schemas/BwPerson"
          },
          "characters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwPicturedVariant"
            }
          },
          "themes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwThemeRef"
            }
          },
          "bibleReferences": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "BwImagePage": {
        "type": "object",
        "properties": {
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwImage"
            }
          },
          "offset": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean"
          }
        }
      },
      "BwModel": {
        "required": [
          "id",
          "name",
          "provider",
          "description"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "aspectRatios": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "resolutions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwResolution"
            }
          },
          "maxReferenceImages": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "supportsPrintReady": {
            "type": "boolean"
          }
        }
      },
      "BwPassageImages": {
        "type": "object",
        "properties": {
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "translation": {
            "type": [
              "null",
              "string"
            ]
          },
          "verses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwVerseImages"
            }
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwImage"
            }
          }
        }
      },
      "BwPerson": {
        "required": [
          "username",
          "profileUrl"
        ],
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "profileUrl": {
            "type": "string"
          }
        }
      },
      "BwPicturedCharacter": {
        "required": [
          "name",
          "pageUrl"
        ],
        "type": "object",
        "properties": {
          "characterId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "coverImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "publicImageCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageUrl": {
            "type": "string"
          }
        }
      },
      "BwPicturedCharacterPage": {
        "type": "object",
        "properties": {
          "characters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwPicturedCharacter"
            }
          },
          "offset": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean"
          }
        }
      },
      "BwPicturedVariant": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "characterId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "variantId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "variantName": {
            "type": [
              "null",
              "string"
            ]
          },
          "referenceImageUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BwReferenceImage": {
        "required": [
          "url"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BwResolution": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "credits": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "BwSetVariant": {
        "required": [
          "characterName"
        ],
        "type": "object",
        "properties": {
          "variantId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "characterId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "characterName": {
            "type": "string"
          },
          "isCustomCharacter": {
            "type": "boolean"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "ageRange": {
            "type": [
              "null",
              "string"
            ]
          },
          "visualDescription": {
            "type": [
              "null",
              "string"
            ]
          },
          "referenceImages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwReferenceImage"
            }
          }
        }
      },
      "BwStyle": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "exampleImageUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BwTheme": {
        "required": [
          "name",
          "slug",
          "pageUrl"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "imageCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "coverImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "pageUrl": {
            "type": "string"
          }
        }
      },
      "BwThemePage": {
        "type": "object",
        "properties": {
          "themes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwTheme"
            }
          },
          "offset": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean"
          }
        }
      },
      "BwThemeRef": {
        "required": [
          "name",
          "slug"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          }
        }
      },
      "BwVariant": {
        "type": "object",
        "properties": {
          "variantId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "ageRange": {
            "type": [
              "null",
              "string"
            ]
          },
          "visualDescription": {
            "type": [
              "null",
              "string"
            ]
          },
          "isDefault": {
            "type": "boolean"
          },
          "fromCharacterSet": {
            "type": "boolean"
          },
          "referenceImages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BwReferenceImage"
            }
          }
        }
      },
      "BwVerseImages": {
        "required": [
          "text"
        ],
        "type": "object",
        "properties": {
          "heading": {
            "type": [
              "null",
              "string"
            ]
          },
          "text": {
            "type": "string"
          },
          "imageIds": {
            "type": "array",
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        }
      },
      "CollectionNodeDto": {
        "required": [
          "id",
          "name",
          "sortOrder",
          "depth",
          "directMemberCount",
          "subtreeMemberCount",
          "isFeatured",
          "createdTime"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "parentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "depth": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "directMemberCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "subtreeMemberCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isFeatured": {
            "type": "boolean"
          },
          "featuredSortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "createdTime": {
            "type": "string",
            "format": "date-time"
          },
          "modifiedTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "CollectionTreeResponse": {
        "required": [
          "nodes"
        ],
        "type": "object",
        "properties": {
          "nodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CollectionNodeDto"
            }
          }
        }
      },
      "DictionaryBrowseSlice": {
        "required": [
          "entries",
          "hasBefore",
          "hasAfter"
        ],
        "type": "object",
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryEntrySummary"
            }
          },
          "hasBefore": {
            "type": "boolean"
          },
          "hasAfter": {
            "type": "boolean"
          }
        }
      },
      "DictionaryEntryDetail": {
        "required": [
          "entry",
          "text",
          "illustrations",
          "source",
          "previous",
          "next",
          "sameWord"
        ],
        "type": "object",
        "properties": {
          "entry": {
            "$ref": "#/components/schemas/DictionaryEntrySummary"
          },
          "text": {
            "type": "string"
          },
          "illustrations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryIllustrationView"
            }
          },
          "source": {
            "$ref": "#/components/schemas/BlockSourcePagesResponse"
          },
          "previous": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DictionaryEntryNeighbour"
              }
            ]
          },
          "next": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DictionaryEntryNeighbour"
              }
            ]
          },
          "sameWord": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryEntrySummary"
            }
          }
        }
      },
      "DictionaryEntryNeighbour": {
        "required": [
          "entryId",
          "headword",
          "headwordPlain"
        ],
        "type": "object",
        "properties": {
          "entryId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "headword": {
            "type": [
              "null",
              "string"
            ]
          },
          "headwordPlain": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "DictionaryEntrySummary": {
        "required": [
          "entryId",
          "sequence",
          "headword",
          "headwordPlain",
          "headwords",
          "grammarLabel",
          "partsOfSpeech",
          "gloss",
          "pageIndex",
          "printedPageNumber"
        ],
        "type": "object",
        "properties": {
          "entryId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sequence": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "headword": {
            "type": [
              "null",
              "string"
            ]
          },
          "headwordPlain": {
            "type": [
              "null",
              "string"
            ]
          },
          "headwords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryHeadwordView"
            }
          },
          "grammarLabel": {
            "type": [
              "null",
              "string"
            ]
          },
          "partsOfSpeech": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "gloss": {
            "type": [
              "null",
              "string"
            ]
          },
          "pageIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "printedPageNumber": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "DictionaryHeadwordView": {
        "required": [
          "printed",
          "plain"
        ],
        "type": "object",
        "properties": {
          "printed": {
            "type": "string"
          },
          "plain": {
            "type": "string"
          }
        }
      },
      "DictionaryIllustrationView": {
        "required": [
          "illustrationId",
          "caption",
          "description",
          "pageIndex",
          "printedPageNumber",
          "imageUrl",
          "pageWidth",
          "pageHeight",
          "box"
        ],
        "type": "object",
        "properties": {
          "illustrationId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "caption": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "pageIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "printedPageNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "imageUrl": {
            "type": "string"
          },
          "pageWidth": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageHeight": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "box": {
            "type": "array",
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "double"
            }
          }
        }
      },
      "DictionaryInfo": {
        "required": [
          "sourceKey",
          "title",
          "author",
          "edition",
          "publisher",
          "place",
          "year",
          "archiveOrgId",
          "pageCount",
          "entryCount",
          "headwordCount",
          "illustrationCount",
          "letters"
        ],
        "type": "object",
        "properties": {
          "sourceKey": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "author": {
            "type": [
              "null",
              "string"
            ]
          },
          "edition": {
            "type": [
              "null",
              "string"
            ]
          },
          "publisher": {
            "type": [
              "null",
              "string"
            ]
          },
          "place": {
            "type": [
              "null",
              "string"
            ]
          },
          "year": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "archiveOrgId": {
            "type": [
              "null",
              "string"
            ]
          },
          "pageCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "entryCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "headwordCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "illustrationCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "letters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryLetter"
            }
          }
        }
      },
      "DictionaryLetter": {
        "required": [
          "letter",
          "entryId",
          "sequence",
          "pageIndex"
        ],
        "type": "object",
        "properties": {
          "letter": {
            "type": "string"
          },
          "entryId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sequence": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "DictionaryLookupResult": {
        "required": [
          "query",
          "matchedForm",
          "matchNote",
          "entries"
        ],
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "matchedForm": {
            "type": [
              "null",
              "string"
            ]
          },
          "matchNote": {
            "type": [
              "null",
              "string"
            ]
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryEntrySummary"
            }
          }
        }
      },
      "DictionarySearchHit": {
        "required": [
          "entry",
          "snippet"
        ],
        "type": "object",
        "properties": {
          "entry": {
            "$ref": "#/components/schemas/DictionaryEntrySummary"
          },
          "snippet": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "DictionarySearchResult": {
        "required": [
          "query",
          "headwords",
          "definitions"
        ],
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "headwords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryEntrySummary"
            }
          },
          "definitions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionarySearchHit"
            }
          }
        }
      },
      "GalleryFacet": {
        "required": [
          "value",
          "count"
        ],
        "type": "object",
        "properties": {
          "value": {
            "type": "string"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibraryArticleAnchorDto": {
        "required": [
          "transcriptionId",
          "blockIndex",
          "blockCount",
          "title",
          "author"
        ],
        "type": "object",
        "properties": {
          "transcriptionId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "blockIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "blockCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "title": {
            "type": "string"
          },
          "author": {
            "type": "string"
          },
          "footnotes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryFootnoteDto"
            }
          }
        }
      },
      "LibraryArticleIndexDto": {
        "required": [
          "id",
          "orderIndex",
          "title",
          "author",
          "paragraphCount",
          "imageCount"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "orderIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "title": {
            "type": "string"
          },
          "author": {
            "type": "string"
          },
          "paragraphCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "imageCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibraryAuthorCollectionDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "parentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "works": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibraryAuthorListResponse": {
        "type": "object",
        "properties": {
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "authors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryAuthorSummaryDto"
            }
          }
        }
      },
      "LibraryAuthorResponse": {
        "required": [
          "found"
        ],
        "type": "object",
        "properties": {
          "found": {
            "type": "boolean"
          },
          "author": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibraryAuthorSummaryDto"
              }
            ]
          },
          "bio": {
            "type": [
              "null",
              "string"
            ]
          },
          "firstPublished": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "lastPublished": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "collections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryAuthorCollectionDto"
            }
          }
        }
      },
      "LibraryAuthorSummaryDto": {
        "required": [
          "name",
          "sortName",
          "slug"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "sortName": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "bookCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "articleCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibraryBlockStubDto": {
        "required": [
          "id",
          "kind",
          "chars"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "kind": {
            "type": "string"
          },
          "chars": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "imageWidth": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "imageHeight": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "repeatsTitle": {
            "type": "boolean"
          }
        }
      },
      "LibraryBookBlocksResponse": {
        "required": [
          "found",
          "fromIndex"
        ],
        "type": "object",
        "properties": {
          "found": {
            "type": "boolean"
          },
          "fromIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "blocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryContentBlockDto"
            }
          }
        }
      },
      "LibraryBookManifestResponse": {
        "required": [
          "found"
        ],
        "type": "object",
        "properties": {
          "found": {
            "type": "boolean"
          },
          "summary": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibraryWorkSummaryDto"
              }
            ]
          },
          "blockCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "blocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryBlockStubDto"
            }
          },
          "toc": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryManifestTocEntryDto"
            }
          },
          "pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryPageMarkDto"
            }
          },
          "footnotes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryFootnoteDto"
            }
          },
          "articleAnchors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryArticleAnchorDto"
            }
          }
        }
      },
      "LibraryBookOverviewResponse": {
        "required": [
          "found"
        ],
        "type": "object",
        "properties": {
          "found": {
            "type": "boolean"
          },
          "summary": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibraryWorkSummaryDto"
              }
            ]
          },
          "toc": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryManifestTocEntryDto"
            }
          },
          "figures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryFigureDto"
            }
          }
        }
      },
      "LibraryCollectionAuthorDto": {
        "required": [
          "author"
        ],
        "type": "object",
        "properties": {
          "author": {
            "$ref": "#/components/schemas/LibraryAuthorSummaryDto"
          },
          "worksInCollection": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibraryCollectionDto": {
        "required": [
          "id",
          "name",
          "isFeatured"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "parentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isFeatured": {
            "type": "boolean"
          }
        }
      },
      "LibraryCollectionResponse": {
        "required": [
          "found"
        ],
        "type": "object",
        "properties": {
          "found": {
            "type": "boolean"
          },
          "collection": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibraryCollectionDto"
              }
            ]
          },
          "workCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "works": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryWorkSummaryDto"
            }
          },
          "sort": {
            "type": [
              "null",
              "string"
            ]
          },
          "hasCustomOrder": {
            "type": "boolean"
          }
        }
      },
      "LibraryContentBlockDto": {
        "required": [
          "id",
          "orderIndex",
          "contentType",
          "markdown",
          "authors"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "orderIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "contentType": {
            "type": "string"
          },
          "markdown": {
            "type": "string"
          },
          "pageNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "paragraphNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "authors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "imageDescription": {
            "type": [
              "null",
              "string"
            ]
          },
          "imageWidth": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "imageHeight": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageLabels": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "refs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ScriptureRefDto"
            }
          }
        }
      },
      "LibraryEditionOverviewResponse": {
        "required": [
          "found"
        ],
        "type": "object",
        "properties": {
          "found": {
            "type": "boolean"
          },
          "summary": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibraryWorkSummaryDto"
              }
            ]
          },
          "frontPageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "pageUrls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "articles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryArticleIndexDto"
            }
          }
        }
      },
      "LibraryFigureDto": {
        "required": [
          "contentId",
          "url"
        ],
        "type": "object",
        "properties": {
          "contentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "url": {
            "type": "string"
          },
          "caption": {
            "type": [
              "null",
              "string"
            ]
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibraryFootnoteDto": {
        "required": [
          "reference",
          "marker",
          "text"
        ],
        "type": "object",
        "properties": {
          "contentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "reference": {
            "type": "string"
          },
          "marker": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "refs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ScriptureRefDto"
            }
          }
        }
      },
      "LibraryImageCropDto": {
        "required": [
          "x",
          "y",
          "width",
          "height"
        ],
        "type": "object",
        "properties": {
          "x": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "y": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibraryImageDetailDto": {
        "required": [
          "image",
          "description",
          "keywords",
          "people",
          "places",
          "scripture",
          "readerUrl"
        ],
        "type": "object",
        "properties": {
          "image": {
            "$ref": "#/components/schemas/LibraryImageDto"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "people": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "places": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "scripture": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "readerUrl": {
            "type": "string"
          }
        }
      },
      "LibraryImageDto": {
        "required": [
          "id",
          "type",
          "caption",
          "date",
          "work",
          "imageUrl",
          "restoredUrl",
          "width",
          "height",
          "pageUrl"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "caption": {
            "type": [
              "null",
              "string"
            ]
          },
          "date": {
            "type": [
              "null",
              "string"
            ]
          },
          "work": {
            "$ref": "#/components/schemas/LibraryImageWorkDto"
          },
          "imageUrl": {
            "type": "string"
          },
          "restoredUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "width": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "height": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageUrl": {
            "type": "string"
          }
        }
      },
      "LibraryImageHighlightsDto": {
        "required": [
          "caption",
          "description"
        ],
        "type": "object",
        "properties": {
          "caption": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LibraryImageHitDto": {
        "required": [
          "image",
          "description",
          "highlights"
        ],
        "type": "object",
        "properties": {
          "image": {
            "$ref": "#/components/schemas/LibraryImageDto"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "highlights": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibraryImageHighlightsDto"
              }
            ]
          }
        }
      },
      "LibraryImageSearchResponse": {
        "required": [
          "total",
          "offset",
          "results",
          "types",
          "orientations",
          "errors"
        ],
        "type": "object",
        "properties": {
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "offset": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryImageHitDto"
            }
          },
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GalleryFacet"
            }
          },
          "orientations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GalleryFacet"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "LibraryImageWorkDto": {
        "required": [
          "kind",
          "uniqueId",
          "title"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "uniqueId": {
            "type": "string"
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LibraryManifestTocEntryDto": {
        "required": [
          "contentId",
          "blockIndex",
          "level",
          "title"
        ],
        "type": "object",
        "properties": {
          "contentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "blockIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "level": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "title": {
            "type": "string"
          },
          "pageLabel": {
            "type": [
              "null",
              "string"
            ]
          },
          "externalUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LibraryPageMarkDto": {
        "required": [
          "label",
          "startIndex"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "startIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibrarySearchAuthorRef": {
        "required": [
          "id",
          "name",
          "slug"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "gender": {
            "$ref": "#/components/schemas/AuthorGender"
          }
        }
      },
      "LibrarySearchAuthorScopeDto": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          }
        }
      },
      "LibrarySearchContextDto": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "uniqueId": {
            "type": "string"
          },
          "articleId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "blockId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "blockIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "readerUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "externalUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "externalEndUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "chapterFirstBlockId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "chapterLastBlockId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibrarySearchCursorDto": {
        "type": "object",
        "properties": {
          "doc": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "score": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "float"
          },
          "generation": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          }
        }
      },
      "LibrarySearchDocumentResponse": {
        "type": "object",
        "properties": {
          "found": {
            "type": "boolean"
          },
          "row": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchRow"
              }
            ]
          },
          "work": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchWorkDto"
              }
            ]
          },
          "passage": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchPassageDto"
              }
            ]
          },
          "section": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchSectionDto"
              }
            ]
          },
          "previousId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "nextId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "context": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchContextDto"
              }
            ]
          },
          "window": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchExternalWindowDto"
              }
            ]
          }
        }
      },
      "LibrarySearchExcerptHighlight": {
        "required": [
          "start",
          "end"
        ],
        "type": "object",
        "properties": {
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "end": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibrarySearchExplainResponse": {
        "type": "object",
        "properties": {
          "elapsedMs": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "query": {
            "type": "string"
          },
          "collectionIds": {
            "type": "array",
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchSourceDto"
              }
            ]
          },
          "author": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchAuthorScopeDto"
              }
            ]
          },
          "plan": {
            "type": [
              "null",
              "string"
            ]
          },
          "hits": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "explain": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OperatorExplainNode"
              }
            ]
          }
        }
      },
      "LibrarySearchExternalWindowDto": {
        "type": "object",
        "properties": {
          "before": {
            "$ref": "#/components/schemas/LibrarySearchPassageDto"
          },
          "after": {
            "$ref": "#/components/schemas/LibrarySearchPassageDto"
          }
        }
      },
      "LibrarySearchMarkDto": {
        "type": "object",
        "properties": {
          "term": {
            "type": "string"
          },
          "occurrence": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibrarySearchNeighboursResponse": {
        "type": "object",
        "properties": {
          "before": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibrarySearchPassageDto"
            }
          },
          "after": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibrarySearchPassageDto"
            }
          },
          "hasMoreBefore": {
            "type": "boolean"
          },
          "hasMoreAfter": {
            "type": "boolean"
          }
        }
      },
      "LibrarySearchPassageDto": {
        "type": "object",
        "properties": {
          "docId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "content": {
            "type": "string"
          },
          "blocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryContentBlockDto"
            }
          },
          "footnotes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryFootnoteDto"
            }
          },
          "marks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibrarySearchMarkDto"
            }
          },
          "coverImageUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LibrarySearchPublicationDto": {
        "type": "object",
        "properties": {
          "sourceId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "title": {
            "type": "string"
          },
          "shortTitle": {
            "type": [
              "null",
              "string"
            ]
          },
          "uniqueId": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "publicationDate": {
            "type": [
              "null",
              "string"
            ]
          },
          "publicationDateValue": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "publicationDatePrecision": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint8"
          },
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "relevance": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibrarySearchResultsResponse": {
        "type": "object",
        "properties": {
          "publications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibrarySearchPublicationDto"
            }
          },
          "elapsedMs": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "query": {
            "type": "string"
          },
          "collectionIds": {
            "type": "array",
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchSourceDto"
              }
            ]
          },
          "author": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchAuthorScopeDto"
              }
            ]
          },
          "plan": {
            "type": [
              "null",
              "string"
            ]
          },
          "skip": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "window": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibrarySearchRow"
            }
          },
          "cursor": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibrarySearchCursorDto"
              }
            ]
          },
          "stale": {
            "type": "boolean"
          }
        }
      },
      "LibrarySearchRow": {
        "type": "object",
        "properties": {
          "docId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "workKind": {
            "type": "string"
          },
          "uniqueId": {
            "type": "string"
          },
          "articleId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "workTitle": {
            "type": "string"
          },
          "workShortTitle": {
            "type": [
              "null",
              "string"
            ]
          },
          "heading": {
            "type": [
              "null",
              "string"
            ]
          },
          "authorName": {
            "type": [
              "null",
              "string"
            ]
          },
          "authors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibrarySearchAuthorRef"
            }
          },
          "publicationDate": {
            "type": [
              "null",
              "string"
            ]
          },
          "publicationDateValue": {
            "type": [
              "null",
              "string"
            ]
          },
          "publicationDatePrecision": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint8"
          },
          "writtenFrom": {
            "type": [
              "null",
              "string"
            ]
          },
          "writtenTo": {
            "type": [
              "null",
              "string"
            ]
          },
          "writtenPrecision": {
            "type": [
              "null",
              "string"
            ]
          },
          "excerpt": {
            "type": "string"
          },
          "excerptHighlights": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibrarySearchExcerptHighlight"
            }
          },
          "rank": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "externalUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LibrarySearchSectionDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "summary": {
            "type": [
              "null",
              "string"
            ]
          },
          "chunkCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "position": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibrarySearchSourceDto": {
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "kind": {
            "type": "string"
          },
          "uniqueId": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        }
      },
      "LibrarySearchWorkDto": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "uniqueId": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "authorName": {
            "type": [
              "null",
              "string"
            ]
          },
          "articleId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "coverImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "externalUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LibraryStatsDto": {
        "type": "object",
        "properties": {
          "printedPages": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "earliestPublication": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "latestPublication": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          }
        }
      },
      "LibraryTimelineResponse": {
        "type": "object",
        "properties": {
          "years": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryTimelineYear"
            }
          },
          "undated": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "LibraryTimelineYear": {
        "type": "object",
        "properties": {
          "year": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "books": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "periodicals": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "articles": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "LibraryWorksPageResponse": {
        "type": "object",
        "properties": {
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "works": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LibraryWorkSummaryDto"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "LibraryWorkSummaryDto": {
        "required": [
          "sourceType",
          "sourceEntityId",
          "uniqueId",
          "title"
        ],
        "type": "object",
        "properties": {
          "sourceType": {
            "type": "string"
          },
          "sourceEntityId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "uniqueId": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "externalReaderUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "authorName": {
            "type": [
              "null",
              "string"
            ]
          },
          "publisher": {
            "type": [
              "null",
              "string"
            ]
          },
          "location": {
            "type": [
              "null",
              "string"
            ]
          },
          "publicationDate": {
            "type": [
              "null",
              "string"
            ]
          },
          "publicationDateValue": {
            "type": [
              "null",
              "string"
            ],
            "format": "date"
          },
          "publicationDatePrecision": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "uint8"
          },
          "writtenFrom": {
            "type": [
              "null",
              "string"
            ]
          },
          "writtenTo": {
            "type": [
              "null",
              "string"
            ]
          },
          "writtenPrecision": {
            "type": [
              "null",
              "string"
            ]
          },
          "publicationName": {
            "type": [
              "null",
              "string"
            ]
          },
          "periodicalReference": {
            "type": [
              "null",
              "string"
            ]
          },
          "coverImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "coverCrop": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LibraryImageCropDto"
              }
            ]
          },
          "articleId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "editionTitle": {
            "type": [
              "null",
              "string"
            ]
          },
          "articleCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "imageCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "excerpt": {
            "type": [
              "null",
              "string"
            ]
          },
          "previewImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "previewImageWidth": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "previewImageHeight": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "MusicAlbumDetailDto": {
        "required": [
          "slug",
          "title",
          "description",
          "coverImageUrl",
          "pageUrl",
          "tracks"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "coverImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "pageUrl": {
            "type": "string"
          },
          "tracks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MusicTrackDto"
            }
          }
        }
      },
      "MusicAlbumDto": {
        "required": [
          "slug",
          "title",
          "tracks",
          "pageUrl"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "tracks": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageUrl": {
            "type": "string"
          }
        }
      },
      "MusicArtistDto": {
        "required": [
          "slug",
          "name",
          "tracks",
          "pageUrl"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "Pass as artist to /music/tracks for their songs"
          },
          "name": {
            "type": "string"
          },
          "tracks": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "pageUrl": {
            "type": "string"
          }
        }
      },
      "MusicDownloadDto": {
        "required": [
          "id",
          "title",
          "fileName",
          "mimeType",
          "fileSizeBytes",
          "downloadUrl"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "title": {
            "type": "string"
          },
          "fileName": {
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          },
          "fileSizeBytes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "downloadUrl": {
            "type": "string",
            "description": "GET with your API key: redirects to the file (or ?redirect=false for a JSON link)"
          }
        }
      },
      "MusicDownloadLinkDto": {
        "required": [
          "id",
          "title",
          "fileName",
          "mimeType",
          "url",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "title": {
            "type": "string"
          },
          "fileName": {
            "type": "string",
            "description": "The name the file saves as"
          },
          "mimeType": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "A signed link to the file; no key needed, valid until expiresAt"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "MusicTrackDetailDto": {
        "required": [
          "track",
          "description",
          "lyrics",
          "references",
          "streamUrl",
          "coverImageUrl",
          "downloads"
        ],
        "type": "object",
        "properties": {
          "track": {
            "$ref": "#/components/schemas/MusicTrackDto"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "lyrics": {
            "type": [
              "null",
              "string"
            ]
          },
          "references": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The Scripture and book references the song is drawn from, one per line as written"
          },
          "streamUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "HLS stream of the song (m3u8), when it has one"
          },
          "coverImageUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "downloads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MusicDownloadDto"
            },
            "description": "The files to download; follow each downloadUrl with your API key"
          }
        }
      },
      "MusicTrackDto": {
        "required": [
          "id",
          "title",
          "slug",
          "artists",
          "album",
          "durationSeconds",
          "style",
          "pageUrl"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "title": {
            "type": "string"
          },
          "slug": {
            "type": [
              "null",
              "string"
            ]
          },
          "artists": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "album": {
            "type": [
              "null",
              "string"
            ],
            "description": "A published album the track is on"
          },
          "durationSeconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "style": {
            "type": [
              "null",
              "string"
            ]
          },
          "pageUrl": {
            "type": "string",
            "description": "The track's page on the website"
          }
        }
      },
      "MusicTrackPageDto": {
        "required": [
          "tracks",
          "total",
          "offset",
          "hasMore"
        ],
        "type": "object",
        "properties": {
          "tracks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MusicTrackDto"
            }
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Tracks matching, across all pages",
            "format": "int32"
          },
          "offset": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "hasMore": {
            "type": "boolean"
          }
        }
      },
      "OperatorExplainNode": {
        "required": [
          "kind",
          "label",
          "text",
          "hits",
          "children",
          "expansions",
          "expansionsTruncated"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "hits": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OperatorExplainNode"
            }
          },
          "expansions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OperatorExplainTerm"
            }
          },
          "expansionsTruncated": {
            "type": "boolean"
          }
        }
      },
      "OperatorExplainTerm": {
        "required": [
          "term",
          "docs"
        ],
        "type": "object",
        "properties": {
          "term": {
            "type": "string"
          },
          "docs": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ScriptureRefDto": {
        "required": [
          "start",
          "length",
          "display",
          "href"
        ],
        "type": "object",
        "properties": {
          "start": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "length": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "display": {
            "type": "string"
          },
          "href": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "description": "Your library API key from https://beta.adventai.app/account/library-api.",
        "name": "X-Api-Key",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "ApiKey": [ ]
    }
  ],
  "tags": [
    {
      "name": "Bible commentary (Believer and up)"
    },
    {
      "name": "Bible"
    },
    {
      "name": "Bible World images"
    },
    {
      "name": "Bible World characters"
    },
    {
      "name": "Bible World generation"
    },
    {
      "name": "Dictionary"
    },
    {
      "name": "Library"
    },
    {
      "name": "Authors"
    },
    {
      "name": "Works"
    },
    {
      "name": "Photos and illustrations"
    },
    {
      "name": "Music (Believer and up)"
    }
  ]
}