{"openapi":"3.1.0","info":{"title":"GetBible Scripture v3","version":"3","summary":"Bible translations as static JSON: every path is a file, every document is plain text.","description":"Static JSON documents of Bible translations, converted from CrossWire SWORD\nmodules by the GetBible builder. Every path below is a file in a static tree:\nthere is no query string, no content negotiation and no request-time logic.\n\n**Where the paths start.** Paths are given from the server root with `v3`\nas the first segment, the version the tree is built for. No host is assumed. A\ntree mounted under another prefix is described by adding a `servers` entry with\nthat prefix.\n\n**Finding a translation.** `translations.json` lists every translation in the\ntree with its language, direction, distribution metadata, the URL its document\nwas built for and the SHA-1 of that document. The abbreviation is the first\npath segment of all of that translation's documents. `{translation}/books.json`\nlists the books the translation has and\n`{translation}/{book}/chapters.json` the chapters of one book, each entry\ncarrying the same `url` and `sha` members, so nothing need be guessed.\n\n**Addressing.** `book` is the GetBible book number: Genesis is 1, Matthew 40,\nRevelation 66, and the established additional books continue to 89. Further\nsource book identities receive deterministic integer numbers starting at\n1,000,000. Existing book numbers are preserved; source OSIS identifiers resolve\nunfamiliar or localized names. `books.json` lists exactly which books a\ntranslation has, including books containing only titles or introductions.\n`chapter` and `verse` follow the translation's own versification. Empty\ncanon positions do not create books or chapters. A chapter for\nwhich the source supplies an introduction but no verse text stays nested in\nits book and translation documents with an empty `verses` array and its\n`titles`, and has no document of its own.\n\n**Three self-similar levels.** A chapter document holds the verses of one\nchapter with the translation's metadata; a book document holds every chapter of\none book; the translation document holds every book. A chapter nested in a book\nor translation document carries the same members as the standalone chapter\ndocument after the shared metadata, so one reader serves all three levels.\n\n**Integrity.** Every JSON document, the index and checksum documents and this\ndescription included, has a `.sha` sibling holding the SHA-1 of its bytes as\nforty hexadecimal digits and a line feed, so a reader can detect a change to\nany document by fetching its small sibling. Each index document also repeats\nthe digest of every document it lists as `sha` beside that document's `url`,\nand `checksum.json` at each level maps every translation, book or chapter\ndocument of that level to its digest, so a change anywhere is visible with\none request per level. The extension-less\ntab-separated listings written beside the JSON indexes (`translations`,\n`books`, `chapters` and `checksum`) are text companions of the same data and\nare not described here.\n\n**Reading a verse.** `text` is the display text; it never begins with a line\nending, while line endings inside the verse are preserved. `paragraph: true`\nmarks a verse that begins a paragraph. `tokens` and `spans` are present\ntogether when the source carries OSIS word markup: tokens are the words in\nreading order with their lexical attributes (`lemma`, `morph` and `xlit`\ngrouped by scheme, `src` as positions), spans are annotations such as\n`divineName`, `transChange` and `q` over a token range (`token_start` and\n`token_end`, 0-based indexes into `tokens`) and over the whitespace-separated\nwords of `text` (`word_start` and `word_end`, 1-based and inclusive; 0 when\nthe text could not be located). A reader that only highlights uses the word\nrange; a reader that needs the original-language data uses the token range.\n\n**Editorial.** A chapter's optional `editorial` array is its reading layout in\norder: headings anchored before a verse, with the source's title type and\ncanonical flag, and paragraphs as inclusive verse ranges. When paragraph\nentries are present they cover every verse of the chapter contiguously. The\nsame array appears in the standalone chapter document and in the chapter\nnested in the book and translation documents. A chapter with verses carries no\n`titles`, and verses never do; headings have that one representation.\n\n**Titles and introductions.** A translation or a book may carry `titles`, the\ntitle metadata belonging to it, and `introduction`, prose attached at that\nlevel; a chapter may carry `introduction`. Both are absent when the source\nsupplies nothing.\n"},"tags":[{"name":"tree","description":"Documents that describe the whole tree."},{"name":"translation","description":"The documents of one translation."},{"name":"book","description":"The documents of one book of a translation."},{"name":"chapter","description":"The documents of one chapter of a book."}],"paths":{"/v3/translations.json":{"get":{"tags":["tree"],"summary":"Every translation in the tree","description":"The translation index: every translation with its metadata, the URL its document was built for and the SHA-1 of that document.","operationId":"getTranslations","responses":{"200":{"description":"Every translation in the tree","content":{"application/json":{"schema":{"$ref":"#/components/schemas/translations-index"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/translations.sha":{"get":{"tags":["tree"],"summary":"The SHA-1 of the translation index","description":"Forty hexadecimal digits and a line feed: the SHA-1 of the bytes of the translation index.","operationId":"getTranslationsChecksum","responses":{"200":{"description":"The SHA-1 of the translation index","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/checksum"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/checksum.json":{"get":{"tags":["tree"],"summary":"The SHA-1 of every translation document","description":"Every translation's abbreviation mapped to the SHA-1 of its document.","operationId":"getTranslationChecksums","responses":{"200":{"description":"The SHA-1 of every translation document","content":{"application/json":{"schema":{"$ref":"#/components/schemas/checksum-index"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/checksum.sha":{"get":{"tags":["tree"],"summary":"The SHA-1 of the translation checksum index","description":"Forty hexadecimal digits and a line feed: the SHA-1 of the bytes of the translation checksum index.","operationId":"getTranslationChecksumsChecksum","responses":{"200":{"description":"The SHA-1 of the translation checksum index","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/checksum"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/openapi.json":{"get":{"tags":["tree"],"summary":"This description","description":"The OpenAPI description of the tree, generated with it.","operationId":"getOpenApi","responses":{"200":{"description":"This description","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/openapi.sha":{"get":{"tags":["tree"],"summary":"The SHA-1 of this description","description":"Forty hexadecimal digits and a line feed: the SHA-1 of the bytes of this description.","operationId":"getOpenApiChecksum","responses":{"200":{"description":"The SHA-1 of this description","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/checksum"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}.json":{"get":{"tags":["translation"],"summary":"The whole translation","description":"Every book, chapter and verse of one translation with its metadata and the source module's distribution metadata. A bulk document: translations.json carries its digest.","operationId":"getTranslation","parameters":[{"$ref":"#/components/parameters/translation"}],"responses":{"200":{"description":"The whole translation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/translation"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}.sha":{"get":{"tags":["translation"],"summary":"The SHA-1 of the translation document","description":"Forty hexadecimal digits and a line feed: the SHA-1 of the bytes of the translation document.","operationId":"getTranslationChecksum","parameters":[{"$ref":"#/components/parameters/translation"}],"responses":{"200":{"description":"The SHA-1 of the translation document","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/checksum"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/books.json":{"get":{"tags":["translation"],"summary":"Every book of one translation","description":"The book index of a translation: every book with its number, name and title metadata, the URL its document was built for and the SHA-1 of that document.","operationId":"getBooks","parameters":[{"$ref":"#/components/parameters/translation"}],"responses":{"200":{"description":"Every book of one translation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/books-index"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/books.sha":{"get":{"tags":["translation"],"summary":"The SHA-1 of the book index","description":"Forty hexadecimal digits and a line feed: the SHA-1 of the bytes of the book index.","operationId":"getBooksChecksum","parameters":[{"$ref":"#/components/parameters/translation"}],"responses":{"200":{"description":"The SHA-1 of the book index","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/checksum"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/checksum.json":{"get":{"tags":["translation"],"summary":"The SHA-1 of every book document of one translation","description":"Every book number mapped to the SHA-1 of its document.","operationId":"getBookChecksums","parameters":[{"$ref":"#/components/parameters/translation"}],"responses":{"200":{"description":"The SHA-1 of every book document of one translation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/checksum-index"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/checksum.sha":{"get":{"tags":["translation"],"summary":"The SHA-1 of the book checksum index","description":"Forty hexadecimal digits and a line feed: the SHA-1 of the bytes of the book checksum index.","operationId":"getBookChecksumsChecksum","parameters":[{"$ref":"#/components/parameters/translation"}],"responses":{"200":{"description":"The SHA-1 of the book checksum index","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/checksum"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/{book}.json":{"get":{"tags":["book"],"summary":"One book","description":"Every chapter and verse of one book with the translation's metadata and the book's title metadata and introduction.","operationId":"getBook","parameters":[{"$ref":"#/components/parameters/translation"},{"$ref":"#/components/parameters/book"}],"responses":{"200":{"description":"One book","content":{"application/json":{"schema":{"$ref":"#/components/schemas/book"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/{book}.sha":{"get":{"tags":["book"],"summary":"The SHA-1 of the book document","description":"Forty hexadecimal digits and a line feed: the SHA-1 of the bytes of the book document.","operationId":"getBookChecksum","parameters":[{"$ref":"#/components/parameters/translation"},{"$ref":"#/components/parameters/book"}],"responses":{"200":{"description":"The SHA-1 of the book document","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/checksum"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/{book}/chapters.json":{"get":{"tags":["book"],"summary":"Every chapter of one book","description":"The chapter index of a book: every chapter with its number, name and reading layout, the URL its document was built for and the SHA-1 of that document.","operationId":"getChapters","parameters":[{"$ref":"#/components/parameters/translation"},{"$ref":"#/components/parameters/book"}],"responses":{"200":{"description":"Every chapter of one book","content":{"application/json":{"schema":{"$ref":"#/components/schemas/chapters-index"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/{book}/chapters.sha":{"get":{"tags":["book"],"summary":"The SHA-1 of the chapter index","description":"Forty hexadecimal digits and a line feed: the SHA-1 of the bytes of the chapter index.","operationId":"getChaptersChecksum","parameters":[{"$ref":"#/components/parameters/translation"},{"$ref":"#/components/parameters/book"}],"responses":{"200":{"description":"The SHA-1 of the chapter index","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/checksum"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/{book}/checksum.json":{"get":{"tags":["book"],"summary":"The SHA-1 of every chapter document of one book","description":"Every chapter number mapped to the SHA-1 of its document.","operationId":"getChapterChecksums","parameters":[{"$ref":"#/components/parameters/translation"},{"$ref":"#/components/parameters/book"}],"responses":{"200":{"description":"The SHA-1 of every chapter document of one book","content":{"application/json":{"schema":{"$ref":"#/components/schemas/checksum-index"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/{book}/checksum.sha":{"get":{"tags":["book"],"summary":"The SHA-1 of the chapter checksum index","description":"Forty hexadecimal digits and a line feed: the SHA-1 of the bytes of the chapter checksum index.","operationId":"getChapterChecksumsChecksum","parameters":[{"$ref":"#/components/parameters/translation"},{"$ref":"#/components/parameters/book"}],"responses":{"200":{"description":"The SHA-1 of the chapter checksum index","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/checksum"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/{book}/{chapter}.json":{"get":{"tags":["chapter"],"summary":"One chapter","description":"Every verse of one chapter with the translation's metadata, the book it belongs to, and its reading layout and introduction when the source supplies them.","operationId":"getChapter","parameters":[{"$ref":"#/components/parameters/translation"},{"$ref":"#/components/parameters/book"},{"$ref":"#/components/parameters/chapter"}],"responses":{"200":{"description":"One chapter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/chapter"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}},"/v3/{translation}/{book}/{chapter}.sha":{"get":{"tags":["chapter"],"summary":"The SHA-1 of the chapter document","description":"Forty hexadecimal digits and a line feed: the SHA-1 of the bytes of the chapter document.","operationId":"getChapterChecksum","parameters":[{"$ref":"#/components/parameters/translation"},{"$ref":"#/components/parameters/book"},{"$ref":"#/components/parameters/chapter"}],"responses":{"200":{"description":"The SHA-1 of the chapter document","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/checksum"}}}},"404":{"description":"No such document. The tree is static: a document the index documents do not list does not exist."}}}}},"components":{"parameters":{"translation":{"name":"translation","in":"path","required":true,"description":"The translation's abbreviation, as translations.json lists it.","schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,29}$","enum":["akjv","alb","aleppo","almeida","aov","arabicsv","asv","basicenglish","basque","bibelselskap","bkr","breton","burcbcm","calo","canisius","cep","chamorro","che1860","chiunl","cns","cnt","codex","coptic","cornilescu","croatia","csielizabeth","cus","cut","danish","danish1819","danish1871","darby","dari","douayrheims","easternarmenian","elberfelder","elberfelder1905","esperanto","estonian","finnish1776","gaelic","giovanni","gothic","japbungo","japdenmo","japkougo","japraguet","judson","karoli","kjv","kjva","klv","korean","koreankjv","latvian","lithuanian","livre","livretr","ls1910","luther1545","lxx","mal1910","manxgaelic","maori","martin","mg1865","moderngreek","modernhebrew","monkjv","ndebele","norsmb","peshitta","pohnold","pohnpeian","polgdanska","polugdanska","potawatomi","pyharaamattu1933","pyharaamattu1992","riveduta","rv1858","sahidic","schlachter","shona","srkdekavski","srkdijekav","sse","statenvertaling","statenvertalinga","swahili","swedish","swekarlxii","swekarlxii1873","synodal","tagalog","tausug","textusreceptus","thai","tischendorf","tpikjpb","turhadi","turkish","tyndale","ukranian","ukrogienko","uma","valera","vietnamese","vulgate","wb","web","westcotthort","westernarmenian","weymouth","wycliffe","ylt","zhuromsky"]}},"book":{"name":"book","in":"path","required":true,"description":"GetBible book number: Genesis is 1, Matthew 40, Revelation 66, and established additional books continue to 89. Further source identities receive deterministic numbers from 1000000. books.json lists the numbers the translation has.","schema":{"type":"integer","minimum":1,"maximum":281474977710655}},"chapter":{"name":"chapter","in":"path","required":true,"description":"Chapter number; chapters.json lists the chapters the book has.","schema":{"type":"integer","minimum":1}}},"schemas":{"translation":{"title":"Translation","description":"One whole translation: its metadata, the source module's description and distribution metadata, title metadata and introductions attached at the translation level, and every book with every chapter and verse. A bulk document; translations.json states its size through its url and sha.","type":"object","properties":{"translation":{"type":"string","description":"Display name of the translation."},"abbreviation":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,29}$","description":"The translation's identifier and the first path segment of every one of its documents."},"lang":{"type":"string","description":"Language code of the translation."},"language":{"type":"string","description":"Language name; empty when the builder's tables have no name for the code."},"direction":{"type":"string","description":"Writing direction of the text, LTR or RTL."},"encoding":{"type":"string","description":"Character encoding declared by the source module. The generated documents are always UTF-8."},"description":{"type":"string","description":"The source module's description of the translation."},"titles":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/title"},"description":"Title metadata belonging to this level, in source order."},"introduction":{"$ref":"#/components/schemas/introduction"},"books":{"type":"array","items":{"$ref":"#/components/schemas/book/$defs/entry"},"description":"The source module's books with verses, titles, or introductions, in source order. Empty canon positions without content are omitted."},"distribution_lcsh":{"type":"string","description":"Library of Congress subject heading of the source module."},"distribution_version":{"type":"string","description":"Version of the source module."},"distribution_version_date":{"type":"string","description":"Release date of that version."},"distribution_abbreviation":{"type":"string","description":"Abbreviation the source module uses for itself."},"distribution_about":{"type":"string","description":"The source module's own description of the text."},"distribution_license":{"type":"string","description":"Distribution licence of the text."},"distribution_sourcetype":{"type":"string","description":"Markup of the source module, such as OSIS."},"distribution_source":{"type":"string","description":"Provenance of the text as the source module states it."},"distribution_versification":{"type":"string","description":"Versification system of the source module."},"distribution_history":{"type":"object","description":"Every history entry of the source module, keyed as the module keys it.","additionalProperties":{"type":"string"}}},"required":["translation","abbreviation","lang","language","direction","encoding","description","books","distribution_lcsh","distribution_version","distribution_version_date","distribution_abbreviation","distribution_about","distribution_license","distribution_sourcetype","distribution_source","distribution_versification","distribution_history"],"additionalProperties":false},"book":{"title":"Book","description":"One book: the translation's metadata, the book's number and name, its title metadata and introduction when the source supplies them, and every chapter. Each nested chapter is what the standalone chapter document holds after the shared metadata. Books containing only title metadata or introduction text remain published with an empty chapters array.","type":"object","properties":{"translation":{"type":"string","description":"Display name of the translation."},"abbreviation":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,29}$","description":"The translation's identifier and the first path segment of every one of its documents."},"lang":{"type":"string","description":"Language code of the translation."},"language":{"type":"string","description":"Language name; empty when the builder's tables have no name for the code."},"direction":{"type":"string","description":"Writing direction of the text, LTR or RTL."},"encoding":{"type":"string","description":"Character encoding declared by the source module. The generated documents are always UTF-8."},"nr":{"type":"integer","minimum":1,"maximum":281474977710655,"description":"Stable GetBible book number. Established books keep numbers 1 through 89; additional source book identities receive deterministic extension numbers. The translation's books.json lists its actual book numbers."},"name":{"type":"string","description":"Name of the book in the translation's language."},"titles":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/title"},"description":"Title metadata belonging to this level, in source order."},"introduction":{"$ref":"#/components/schemas/introduction"},"chapters":{"type":"array","items":{"$ref":"#/components/schemas/chapter/$defs/entry"},"description":"The content-bearing chapters of the book, in source order. Empty when the source supplies only book titles or introduction text."}},"required":["translation","abbreviation","lang","language","direction","encoding","nr","name","chapters"],"additionalProperties":false,"$defs":{"entry":{"title":"Book entry","description":"A book as nested in the translation document: the same members as the standalone book document after the shared metadata.","type":"object","properties":{"nr":{"type":"integer","minimum":1,"maximum":281474977710655,"description":"Stable GetBible book number. Established books keep numbers 1 through 89; additional source book identities receive deterministic extension numbers. The translation's books.json lists its actual book numbers."},"name":{"type":"string","description":"Name of the book in the translation's language."},"titles":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/title"},"description":"Title metadata belonging to this level, in source order."},"introduction":{"$ref":"#/components/schemas/introduction"},"chapters":{"type":"array","items":{"$ref":"#/components/schemas/chapter/$defs/entry"},"description":"The content-bearing chapters of the book, in source order. Empty when the source supplies only book titles or introduction text."}},"required":["nr","name","chapters"],"additionalProperties":false,"anyOf":[{"properties":{"chapters":{"minItems":1}}},{"required":["titles"]},{"required":["introduction"]}]}},"anyOf":[{"properties":{"chapters":{"minItems":1}}},{"required":["titles"]},{"required":["introduction"]}]},"chapter":{"title":"Chapter","description":"One chapter: the translation's metadata, the book it belongs to, and its verses, with the optional reading layout and introduction. The same chapter members appear in the chapter nested in the book and translation documents.","type":"object","properties":{"translation":{"type":"string","description":"Display name of the translation."},"abbreviation":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,29}$","description":"The translation's identifier and the first path segment of every one of its documents."},"lang":{"type":"string","description":"Language code of the translation."},"language":{"type":"string","description":"Language name; empty when the builder's tables have no name for the code."},"direction":{"type":"string","description":"Writing direction of the text, LTR or RTL."},"encoding":{"type":"string","description":"Character encoding declared by the source module. The generated documents are always UTF-8."},"book_nr":{"type":"integer","minimum":1,"maximum":281474977710655,"description":"Stable GetBible book number. Established books keep numbers 1 through 89; additional source book identities receive deterministic extension numbers. The translation's books.json lists its actual book numbers."},"book_name":{"type":"string","description":"Name of the book in the translation's language."},"chapter":{"type":"integer","minimum":1,"description":"Chapter number in the translation's own versification."},"name":{"type":"string","description":"Book name and chapter, for example Genesis 1."},"introduction":{"$ref":"#/components/schemas/introduction"},"editorial":{"$ref":"#/components/schemas/editorial"},"verses":{"type":"array","items":{"$ref":"#/components/schemas/verse"},"description":"The verses of the chapter that have text, in verse order.","minItems":1}},"required":["translation","abbreviation","lang","language","direction","encoding","book_nr","book_name","chapter","name","verses"],"additionalProperties":false,"$defs":{"entry":{"title":"Chapter entry","description":"A chapter as nested in a book or translation document: the same members as the standalone chapter document after the shared metadata. A chapter for which the source supplied an introduction or titles but no verse text is kept with an empty verses array and its titles, and has no standalone document; a chapter with verses carries its headings in editorial and never in titles.","type":"object","properties":{"chapter":{"type":"integer","minimum":1,"description":"Chapter number in the translation's own versification."},"name":{"type":"string","description":"Book name and chapter, for example Genesis 1."},"introduction":{"$ref":"#/components/schemas/introduction"},"editorial":{"$ref":"#/components/schemas/editorial"},"verses":{"type":"array","items":{"$ref":"#/components/schemas/verse"},"description":"The verses of the chapter that have text, in verse order."},"titles":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/title"},"description":"Title metadata of a chapter without published verses; a chapter with verses carries its headings in editorial instead."}},"required":["chapter","name","verses"],"additionalProperties":false,"if":{"properties":{"verses":{"minItems":1}}},"then":{"not":{"required":["titles"]}},"else":{"not":{"required":["editorial"]}}}}},"translations-index":{"title":"Translations index","description":"Every translation in the tree, keyed by abbreviation: the translation document's members except its books, with the URL the document was built for and the SHA-1 of its bytes.","type":"object","propertyNames":{"pattern":"^[a-z0-9][a-z0-9_-]{0,29}$"},"additionalProperties":{"type":"object","properties":{"translation":{"type":"string","description":"Display name of the translation."},"abbreviation":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,29}$","description":"The translation's identifier and the first path segment of every one of its documents."},"lang":{"type":"string","description":"Language code of the translation."},"language":{"type":"string","description":"Language name; empty when the builder's tables have no name for the code."},"direction":{"type":"string","description":"Writing direction of the text, LTR or RTL."},"encoding":{"type":"string","description":"Character encoding declared by the source module. The generated documents are always UTF-8."},"description":{"type":"string","description":"The source module's description of the translation."},"titles":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/title"},"description":"Title metadata belonging to this level, in source order."},"introduction":{"$ref":"#/components/schemas/introduction"},"distribution_lcsh":{"type":"string","description":"Library of Congress subject heading of the source module."},"distribution_version":{"type":"string","description":"Version of the source module."},"distribution_version_date":{"type":"string","description":"Release date of that version."},"distribution_abbreviation":{"type":"string","description":"Abbreviation the source module uses for itself."},"distribution_about":{"type":"string","description":"The source module's own description of the text."},"distribution_license":{"type":"string","description":"Distribution licence of the text."},"distribution_sourcetype":{"type":"string","description":"Markup of the source module, such as OSIS."},"distribution_source":{"type":"string","description":"Provenance of the text as the source module states it."},"distribution_versification":{"type":"string","description":"Versification system of the source module."},"distribution_history":{"type":"object","description":"Every history entry of the source module, keyed as the module keys it.","additionalProperties":{"type":"string"}},"url":{"type":"string","format":"uri","description":"The public URL the document was built for."},"sha":{"type":"string","pattern":"^[0-9a-f]{40}$","description":"SHA-1 of the document's bytes, the same value its .sha file holds."}},"required":["translation","abbreviation","lang","language","direction","encoding","description","distribution_lcsh","distribution_version","distribution_version_date","distribution_abbreviation","distribution_about","distribution_license","distribution_sourcetype","distribution_source","distribution_versification","distribution_history","url","sha"],"additionalProperties":false}},"books-index":{"title":"Books index","description":"Every book of one translation, keyed by book number: the book document's members except its chapters, with the URL the document was built for and the SHA-1 of its bytes.","type":"object","propertyNames":{"pattern":"^[1-9][0-9]*$"},"additionalProperties":{"type":"object","properties":{"translation":{"type":"string","description":"Display name of the translation."},"abbreviation":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,29}$","description":"The translation's identifier and the first path segment of every one of its documents."},"lang":{"type":"string","description":"Language code of the translation."},"language":{"type":"string","description":"Language name; empty when the builder's tables have no name for the code."},"direction":{"type":"string","description":"Writing direction of the text, LTR or RTL."},"encoding":{"type":"string","description":"Character encoding declared by the source module. The generated documents are always UTF-8."},"nr":{"type":"integer","minimum":1,"maximum":281474977710655,"description":"Stable GetBible book number. Established books keep numbers 1 through 89; additional source book identities receive deterministic extension numbers. The translation's books.json lists its actual book numbers."},"name":{"type":"string","description":"Name of the book in the translation's language."},"titles":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/title"},"description":"Title metadata belonging to this level, in source order."},"introduction":{"$ref":"#/components/schemas/introduction"},"url":{"type":"string","format":"uri","description":"The public URL the document was built for."},"sha":{"type":"string","pattern":"^[0-9a-f]{40}$","description":"SHA-1 of the document's bytes, the same value its .sha file holds."}},"required":["translation","abbreviation","lang","language","direction","encoding","nr","name","url","sha"],"additionalProperties":false}},"chapters-index":{"title":"Chapters index","description":"Every chapter of one book, keyed by chapter number: the chapter document's members except its verses, with the URL the document was built for and the SHA-1 of its bytes.","type":"object","propertyNames":{"pattern":"^[1-9][0-9]*$"},"additionalProperties":{"type":"object","properties":{"translation":{"type":"string","description":"Display name of the translation."},"abbreviation":{"type":"string","pattern":"^[a-z0-9][a-z0-9_-]{0,29}$","description":"The translation's identifier and the first path segment of every one of its documents."},"lang":{"type":"string","description":"Language code of the translation."},"language":{"type":"string","description":"Language name; empty when the builder's tables have no name for the code."},"direction":{"type":"string","description":"Writing direction of the text, LTR or RTL."},"encoding":{"type":"string","description":"Character encoding declared by the source module. The generated documents are always UTF-8."},"book_nr":{"type":"integer","minimum":1,"maximum":281474977710655,"description":"Stable GetBible book number. Established books keep numbers 1 through 89; additional source book identities receive deterministic extension numbers. The translation's books.json lists its actual book numbers."},"book_name":{"type":"string","description":"Name of the book in the translation's language."},"chapter":{"type":"integer","minimum":1,"description":"Chapter number in the translation's own versification."},"name":{"type":"string","description":"Book name and chapter, for example Genesis 1."},"introduction":{"$ref":"#/components/schemas/introduction"},"editorial":{"$ref":"#/components/schemas/editorial"},"url":{"type":"string","format":"uri","description":"The public URL the document was built for."},"sha":{"type":"string","pattern":"^[0-9a-f]{40}$","description":"SHA-1 of the document's bytes, the same value its .sha file holds."}},"required":["translation","abbreviation","lang","language","direction","encoding","book_nr","book_name","chapter","name","url","sha"],"additionalProperties":false}},"checksum-index":{"title":"Checksum index","description":"The SHA-1 of every translation, book or chapter document at one level of the tree, keyed as that level is addressed: by abbreviation at the root, by book number in a translation, by chapter number in a book. Index, checksum and description documents are not listed here; each has its own .sha sibling.","type":"object","additionalProperties":{"type":"string","pattern":"^[0-9a-f]{40}$","description":"SHA-1 of the document's bytes."}},"checksum":{"title":"Checksum","description":"The content of a .sha file: the SHA-1 of the bytes of the JSON document of the same name, as forty lowercase hexadecimal digits followed by a line feed.","type":"string","pattern":"^[0-9a-f]{40}\\n$"},"verse":{"title":"Verse","description":"One verse. `text` is the display text and never begins with a line ending. `paragraph` is present when the verse begins a paragraph. `tokens` and `spans` are present together when the source carries OSIS word markup.","type":"object","properties":{"chapter":{"type":"integer","minimum":1,"description":"Chapter number in the translation's own versification."},"verse":{"type":"integer","minimum":1,"description":"Verse number in the translation's own versification."},"name":{"type":"string","description":"Book name, chapter and verse, for example Genesis 1:1."},"text":{"type":"string","minLength":1,"pattern":"^[^\\r\\n]","description":"The verse text. Line endings inside the verse are preserved; none begins it."},"paragraph":{"const":true,"description":"Present when the verse begins a paragraph."},"tokens":{"type":"array","items":{"$ref":"#/components/schemas/token"},"description":"Word-level tokens in reading order; present with spans when the source carries OSIS word markup."},"spans":{"type":"array","items":{"$ref":"#/components/schemas/span"},"description":"Annotations over token and word ranges; present with tokens."}},"required":["chapter","verse","name","text"],"dependentRequired":{"tokens":["spans"],"spans":["tokens"]},"additionalProperties":false},"token":{"title":"Token","description":"One word-level token of a verse or title. Tokens are listed in reading order. `word_start` and `word_end` locate the token in the whitespace-separated words of the display text (1-based, inclusive; 0 when the token could not be located). Every other member is an attribute of the source OSIS w element: multi-valued attributes are grouped by scheme and `src` is split into positions, any other attribute is kept as its string value.","type":"object","properties":{"token":{"type":"string","minLength":1,"description":"The token text as it appears in the display text."},"word_start":{"type":"integer","minimum":0,"description":"First whitespace-separated word of the display text the token covers, 1-based."},"word_end":{"type":"integer","minimum":0,"description":"Last whitespace-separated word the token covers, inclusive."},"lemma":{"type":"object","description":"Lexical identifiers grouped by OSIS scheme, for example {\"strong\": [\"H07225\"]}.","additionalProperties":{"type":"array","minItems":1,"items":{"type":"string"}}},"morph":{"type":"object","description":"Morphology codes grouped by OSIS scheme.","additionalProperties":{"type":"array","minItems":1,"items":{"type":"string"}}},"xlit":{"type":"object","description":"Transliterations grouped by OSIS scheme.","additionalProperties":{"type":"array","minItems":1,"items":{"type":"string"}}},"src":{"type":"array","items":{"type":["integer","string"]},"description":"Source word positions of the token; strings only when the source value is not numeric."},"gloss":{"type":"string","description":"Gloss supplied by the source."},"n":{"type":"string","description":"The OSIS n attribute of the word."},"type":{"type":"string","description":"The OSIS type attribute of the word."},"subType":{"type":"string","description":"The OSIS subType attribute of the word."},"morphSegmented":{"const":true,"description":"Present when the word carries a morphological segment."},"variant":{"const":true,"description":"Present when the word is a textual variant."},"variantType":{"type":"string","description":"The variant's subType when the source supplies one."}},"required":["token","word_start","word_end"],"additionalProperties":{"type":"string","description":"Any other attribute of the source w element, kept as its string value."}},"span":{"title":"Span","description":"An annotation over a range of tokens: the OSIS context element that marks them (divineName, transChange, hi, q, foreign, inscription, name, speaker, number, unit or seg), the exact text it marks, and the range in both addressings. `token_start` and `token_end` index the verse's tokens array (0-based, inclusive); `word_start` and `word_end` count whitespace-separated words of the display text (1-based, inclusive; 0 when the text could not be located).","type":"object","properties":{"tag":{"type":"string","minLength":1,"description":"Name of the OSIS element."},"span":{"type":"string","description":"The exact text the element marks."},"attrs":{"type":"object","additionalProperties":{"type":"string"},"description":"Retained attributes of the element; absent when there are none."},"token_start":{"type":"integer","minimum":0,"description":"Index of the first token the span covers."},"token_end":{"type":"integer","minimum":0,"description":"Index of the last token the span covers, inclusive."},"word_start":{"type":"integer","minimum":0,"description":"First whitespace-separated word of the display text the span covers, 1-based."},"word_end":{"type":"integer","minimum":0,"description":"Last whitespace-separated word the span covers, inclusive."}},"required":["tag","span","token_start","token_end","word_start","word_end"],"additionalProperties":false},"editorial":{"title":"Editorial","description":"The reading layout of one chapter, in reading order. A heading is anchored before a verse; a paragraph is an inclusive range of verse numbers. `order` is the contiguous zero-based position of the entry. When paragraph entries are present they cover every verse of the chapter contiguously, from its first verse to its last. The array is absent when the chapter has neither headings nor explicit paragraph markers.","type":"array","minItems":1,"items":{"oneOf":[{"$ref":"#/components/schemas/editorial/$defs/heading"},{"$ref":"#/components/schemas/editorial/$defs/paragraph"}]},"$defs":{"heading":{"title":"Heading","type":"object","properties":{"order":{"type":"integer","minimum":0,"description":"Position of the entry in the array."},"type":{"const":"heading"},"anchor":{"type":"object","properties":{"verse":{"type":"integer","minimum":1,"description":"The verse the heading precedes."},"edge":{"const":"before"}},"required":["verse","edge"],"additionalProperties":false},"text":{"type":"string","minLength":1,"description":"The heading text."},"heading_type":{"type":"string","minLength":1,"description":"The OSIS title type, or unspecified when the source supplies none."},"canonical":{"type":"boolean","description":"True only when the source explicitly marks the heading canonical."}},"required":["order","type","anchor","text","heading_type","canonical"],"additionalProperties":false},"paragraph":{"title":"Paragraph","type":"object","properties":{"order":{"type":"integer","minimum":0,"description":"Position of the entry in the array."},"type":{"const":"paragraph"},"start":{"type":"integer","minimum":1,"description":"First verse of the paragraph."},"end":{"type":"integer","minimum":1,"description":"Last verse of the paragraph, inclusive."}},"required":["order","type","start","end"],"additionalProperties":false}}},"title":{"title":"Title","description":"Title metadata belonging to a translation or a book: its visible text, the OSIS title type when the source supplies one, the canonical flag and subtype the source states, and word-level tokens and spans when the title carries word markup.","type":"object","properties":{"type":{"type":"string","description":"OSIS title type, such as main, chapter, section or psalm."},"text":{"type":"string","minLength":1,"description":"The visible title text."},"canonical":{"type":"boolean","description":"Whether the source marks the title canonical; absent when the source does not say."},"subtype":{"type":"string","description":"OSIS subType of the title."},"tokens":{"type":"array","items":{"$ref":"#/components/schemas/token"},"description":"Word-level tokens in reading order; present with spans when the source carries OSIS word markup."},"spans":{"type":"array","items":{"$ref":"#/components/schemas/span"},"description":"Annotations over token and word ranges; present with tokens."}},"required":["text"],"dependentRequired":{"tokens":["spans"],"spans":["tokens"]},"additionalProperties":false},"introduction":{"title":"Introduction","description":"Introduction prose attached at its natural level: the translation (module or testament introductions), a book, or a chapter. Each entry is one source introduction.","type":"array","minItems":1,"items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"description":"The introduction text."}},"required":["text"],"additionalProperties":false}}}}}
