API DOCUMENTATION

Dictionaries API v1: endpoint and schema reference

This reference is generated from the checked-in OpenAPI contract. Return to the integration guide for workflows and ready-to-run examples.

Resolved request server: https://dictionaries.getbible.net.

GET /v1/dictionaries.json#

The catalog of every dictionary in the tree

Every dictionary this tree holds, with its counts and sizes, and the path template of each of its documents relative to v1/.

Operation ID: listDictionaries.

Responses#

Status Description Media type Schema
200 The catalog of every dictionary in the tree application/json #/components/schemas/dictionary-catalog
404 No such document. The tree is static: a path that hashes.json does not list does not exist. See contract
Complete operation contract
{
  "tags": [
    "tree"
  ],
  "summary": "The catalog of every dictionary in the tree",
  "description": "Every dictionary this tree holds, with its counts and sizes, and the path template of each of its documents relative to v1/.",
  "operationId": "listDictionaries",
  "responses": {
    "200": {
      "description": "The catalog of every dictionary in the tree",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/dictionary-catalog"
          }
        }
      }
    },
    "404": {
      "description": "No such document. The tree is static: a path that hashes.json does not list does not exist."
    }
  },
  "parameters": []
}

GET /v1/build.json#

How and when the tree was built

The builder and extractor versions, the build time, the module catalog the modules were selected from and the Bible API the references were resolved against.

Operation ID: getBuild.

Responses#

Status Description Media type Schema
200 How and when the tree was built application/json #/components/schemas/build
404 No such document. The tree is static: a path that hashes.json does not list does not exist. See contract
Complete operation contract
{
  "tags": [
    "tree"
  ],
  "summary": "How and when the tree was built",
  "description": "The builder and extractor versions, the build time, the module catalog the modules were selected from and the Bible API the references were resolved against.",
  "operationId": "getBuild",
  "responses": {
    "200": {
      "description": "How and when the tree was built",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/build"
          }
        }
      }
    },
    "404": {
      "description": "No such document. The tree is static: a path that hashes.json does not list does not exist."
    }
  },
  "parameters": []
}

GET /v1/build-report.json#

The compilation outcome and module failures

The build status, successfully rebuilt modules, failures with their stage and reason, and previously verified modules retained after a failed rebuild. This snapshot describes compilation; the workflow report also records later publication errors.

Operation ID: getBuildReport.

Responses#

Status Description Media type Schema
200 The compilation outcome and module failures application/json #/components/schemas/build-report
404 No such document. The tree is static: a path that hashes.json does not list does not exist. See contract
Complete operation contract
{
  "tags": [
    "tree"
  ],
  "summary": "The compilation outcome and module failures",
  "description": "The build status, successfully rebuilt modules, failures with their stage and reason, and previously verified modules retained after a failed rebuild. This snapshot describes compilation; the workflow report also records later publication errors.",
  "operationId": "getBuildReport",
  "responses": {
    "200": {
      "description": "The compilation outcome and module failures",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/build-report"
          }
        }
      }
    },
    "404": {
      "description": "No such document. The tree is static: a path that hashes.json does not list does not exist."
    }
  },
  "parameters": []
}

GET /v1/hashes.json#

The SHA-256 of every other document

The integrity manifest of the tree: a digest for every other document, which is also the complete list of the paths the tree contains.

Operation ID: getHashes.

Responses#

Status Description Media type Schema
200 The SHA-256 of every other document application/json #/components/schemas/hashes
404 No such document. The tree is static: a path that hashes.json does not list does not exist. See contract
Complete operation contract
{
  "tags": [
    "tree"
  ],
  "summary": "The SHA-256 of every other document",
  "description": "The integrity manifest of the tree: a digest for every other document, which is also the complete list of the paths the tree contains.",
  "operationId": "getHashes",
  "responses": {
    "200": {
      "description": "The SHA-256 of every other document",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/hashes"
          }
        }
      }
    },
    "404": {
      "description": "No such document. The tree is static: a path that hashes.json does not list does not exist."
    }
  },
  "parameters": []
}

GET /v1/openapi.json#

This description

The OpenAPI description of the tree, generated with it.

Operation ID: getOpenApi.

Responses#

Status Description Media type Schema
200 This description application/json object
404 No such document. The tree is static: a path that hashes.json does not list does not exist. See contract
Complete operation contract
{
  "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 path that hashes.json does not list does not exist."
    }
  },
  "parameters": []
}

GET /v1/schema/{document}.json#

The JSON Schema of one document type

The schemas embedded under components, served beside the data.

Operation ID: getSchema.

Parameter In Required Type Example / default Description
document path Yes string dictionary-catalog The document type.

Responses#

Status Description Media type Schema
200 The JSON Schema of one document type application/json object
404 No such document. The tree is static: a path that hashes.json does not list does not exist. See contract
Complete operation contract
{
  "tags": [
    "tree"
  ],
  "summary": "The JSON Schema of one document type",
  "description": "The schemas embedded under components, served beside the data.",
  "operationId": "getSchema",
  "parameters": [
    {
      "name": "document",
      "in": "path",
      "required": true,
      "description": "The document type.",
      "schema": {
        "type": "string",
        "enum": [
          "dictionary-catalog",
          "dictionary-metadata",
          "dictionary-index",
          "dictionary-entry",
          "dictionary",
          "build",
          "build-report",
          "hashes"
        ]
      }
    }
  ],
  "responses": {
    "200": {
      "description": "The JSON Schema of one document type",
      "content": {
        "application/json": {
          "schema": {
            "type": "object"
          }
        }
      }
    },
    "404": {
      "description": "No such document. The tree is static: a path that hashes.json does not list does not exist."
    }
  }
}

GET /v1/{dictionary}/metadata.json#

One dictionary's provenance, licence, counts and sizes

Where the module came from, under which licence, how many words it holds, how large its whole-dictionary document is, and which Bible its references were resolved against.

Operation ID: getDictionaryMetadata.

Parameter In Required Type Example / default Description
dictionary path Yes string strongsgreek The dictionary's id, as dictionaries.json lists it.

Responses#

Status Description Media type Schema
200 One dictionary's provenance, licence, counts and sizes application/json #/components/schemas/dictionary-metadata
404 No such document. The tree is static: a path that hashes.json does not list does not exist. See contract
Complete operation contract
{
  "tags": [
    "dictionary"
  ],
  "summary": "One dictionary's provenance, licence, counts and sizes",
  "description": "Where the module came from, under which licence, how many words it holds, how large its whole-dictionary document is, and which Bible its references were resolved against.",
  "operationId": "getDictionaryMetadata",
  "parameters": [
    {
      "name": "dictionary",
      "in": "path",
      "required": true,
      "description": "The dictionary's id, as dictionaries.json lists it.",
      "schema": {
        "type": "string",
        "minLength": 1,
        "enum": [
          "abbottsmith",
          "abbottsmithstrongs",
          "amtract",
          "bdbglosses_strongs",
          "cawdrey",
          "cbc",
          "daily",
          "dodson",
          "easton",
          "eusebian_num",
          "hitchcock",
          "isbe",
          "klven_iklingon",
          "klviklingon_en",
          "nave",
          "oshm",
          "saoa",
          "sme",
          "smith",
          "strongsgreek",
          "strongshebrew",
          "swe1917of",
          "tcr",
          "torrey",
          "viestrongsgreek",
          "webster1806",
          "webster1913"
        ]
      }
    }
  ],
  "responses": {
    "200": {
      "description": "One dictionary's provenance, licence, counts and sizes",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/dictionary-metadata"
          }
        }
      }
    },
    "404": {
      "description": "No such document. The tree is static: a path that hashes.json does not list does not exist."
    }
  }
}

GET /v1/{dictionary}/index.json#

Every word of one dictionary

Every word once, sorted by its accent-insensitive lowercase search term, with the id of the document that holds it.

Operation ID: getDictionaryIndex.

Parameter In Required Type Example / default Description
dictionary path Yes string strongsgreek The dictionary's id, as dictionaries.json lists it.

Responses#

Status Description Media type Schema
200 Every word of one dictionary application/json #/components/schemas/dictionary-index
404 No such document. The tree is static: a path that hashes.json does not list does not exist. See contract
Complete operation contract
{
  "tags": [
    "dictionary"
  ],
  "summary": "Every word of one dictionary",
  "description": "Every word once, sorted by its accent-insensitive lowercase search term, with the id of the document that holds it.",
  "operationId": "getDictionaryIndex",
  "parameters": [
    {
      "name": "dictionary",
      "in": "path",
      "required": true,
      "description": "The dictionary's id, as dictionaries.json lists it.",
      "schema": {
        "type": "string",
        "minLength": 1,
        "enum": [
          "abbottsmith",
          "abbottsmithstrongs",
          "amtract",
          "bdbglosses_strongs",
          "cawdrey",
          "cbc",
          "daily",
          "dodson",
          "easton",
          "eusebian_num",
          "hitchcock",
          "isbe",
          "klven_iklingon",
          "klviklingon_en",
          "nave",
          "oshm",
          "saoa",
          "sme",
          "smith",
          "strongsgreek",
          "strongshebrew",
          "swe1917of",
          "tcr",
          "torrey",
          "viestrongsgreek",
          "webster1806",
          "webster1913"
        ]
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Every word of one dictionary",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/dictionary-index"
          }
        }
      }
    },
    "404": {
      "description": "No such document. The tree is static: a path that hashes.json does not list does not exist."
    }
  }
}

GET /v1/{dictionary}/{entry}.json#

One word of one dictionary

The definition, the words it links to and from, and the scripture it cites.

Operation ID: getDictionaryEntry.

Parameter In Required Type Example / default Description
dictionary path Yes string strongsgreek The dictionary's id, as dictionaries.json lists it.
entry path Yes string G3056 The word's id as index.json lists it: a Strong's token such as G3056 or H0430 in a Strong's lexicon, otherwise a deterministic path-safe id, with --2, --3 and so on for later definitions of a repeated key.

Responses#

Status Description Media type Schema
200 One word of one dictionary application/json #/components/schemas/dictionary-entry
404 No such document. The tree is static: a path that hashes.json does not list does not exist. See contract
Complete operation contract
{
  "tags": [
    "dictionary"
  ],
  "summary": "One word of one dictionary",
  "description": "The definition, the words it links to and from, and the scripture it cites.",
  "operationId": "getDictionaryEntry",
  "parameters": [
    {
      "name": "dictionary",
      "in": "path",
      "required": true,
      "description": "The dictionary's id, as dictionaries.json lists it.",
      "schema": {
        "type": "string",
        "minLength": 1,
        "enum": [
          "abbottsmith",
          "abbottsmithstrongs",
          "amtract",
          "bdbglosses_strongs",
          "cawdrey",
          "cbc",
          "daily",
          "dodson",
          "easton",
          "eusebian_num",
          "hitchcock",
          "isbe",
          "klven_iklingon",
          "klviklingon_en",
          "nave",
          "oshm",
          "saoa",
          "sme",
          "smith",
          "strongsgreek",
          "strongshebrew",
          "swe1917of",
          "tcr",
          "torrey",
          "viestrongsgreek",
          "webster1806",
          "webster1913"
        ]
      }
    },
    {
      "name": "entry",
      "in": "path",
      "required": true,
      "description": "The word's id as index.json lists it: a Strong's token such as G3056 or H0430 in a Strong's lexicon, otherwise a deterministic path-safe id, with --2, --3 and so on for later definitions of a repeated key.",
      "schema": {
        "type": "string",
        "minLength": 1
      }
    }
  ],
  "responses": {
    "200": {
      "description": "One word of one dictionary",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/dictionary-entry"
          }
        }
      }
    },
    "404": {
      "description": "No such document. The tree is static: a path that hashes.json does not list does not exist."
    }
  }
}

GET /v1/{dictionary}.json#

The whole dictionary

Every entry document in index order, each byte-for-byte the document served at its own path. A bulk document: metadata.json states its size.

Operation ID: getDictionary.

Parameter In Required Type Example / default Description
dictionary path Yes string strongsgreek The dictionary's id, as dictionaries.json lists it.

Responses#

Status Description Media type Schema
200 The whole dictionary application/json #/components/schemas/dictionary
404 No such document. The tree is static: a path that hashes.json does not list does not exist. See contract
Complete operation contract
{
  "tags": [
    "dictionary"
  ],
  "summary": "The whole dictionary",
  "description": "Every entry document in index order, each byte-for-byte the document served at its own path. A bulk document: metadata.json states its size.",
  "operationId": "getDictionary",
  "parameters": [
    {
      "name": "dictionary",
      "in": "path",
      "required": true,
      "description": "The dictionary's id, as dictionaries.json lists it.",
      "schema": {
        "type": "string",
        "minLength": 1,
        "enum": [
          "abbottsmith",
          "abbottsmithstrongs",
          "amtract",
          "bdbglosses_strongs",
          "cawdrey",
          "cbc",
          "daily",
          "dodson",
          "easton",
          "eusebian_num",
          "hitchcock",
          "isbe",
          "klven_iklingon",
          "klviklingon_en",
          "nave",
          "oshm",
          "saoa",
          "sme",
          "smith",
          "strongsgreek",
          "strongshebrew",
          "swe1917of",
          "tcr",
          "torrey",
          "viestrongsgreek",
          "webster1806",
          "webster1913"
        ]
      }
    }
  ],
  "responses": {
    "200": {
      "description": "The whole dictionary",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/dictionary"
          }
        }
      }
    },
    "404": {
      "description": "No such document. The tree is static: a path that hashes.json does not list does not exist."
    }
  }
}

Component schemas#

Types, required properties, nested objects, constraints and examples below are copied directly from the contract. A property omitted from a schema’s required array is optional, even when examples include it.

dictionary-catalog#

Every dictionary in one v1 tree, with the path template of each of its documents relative to the tree root. The catalog and build.json are the only documents that carry the build time.

View full dictionary-catalog schema
{
  "title": "GetBible Dictionary Catalog v1",
  "description": "Every dictionary in one v1 tree, with the path template of each of its documents relative to the tree root. The catalog and build.json are the only documents that carry the build time.",
  "type": "object",
  "required": [
    "schema",
    "version",
    "generated_at",
    "base_url",
    "metadata_url_template",
    "index_url_template",
    "dictionary_url_template",
    "entry_url_template",
    "module_count",
    "dictionaries"
  ],
  "properties": {
    "schema": {
      "const": "getbible-dictionaries-catalog-v1"
    },
    "version": {
      "const": 1
    },
    "generated_at": {
      "type": "string",
      "format": "date-time"
    },
    "base_url": {
      "type": "string",
      "minLength": 1
    },
    "metadata_url_template": {
      "const": "{dictionary}/metadata.json"
    },
    "index_url_template": {
      "const": "{dictionary}/index.json"
    },
    "dictionary_url_template": {
      "const": "{dictionary}.json"
    },
    "entry_url_template": {
      "const": "{dictionary}/{entry}.json"
    },
    "module_count": {
      "type": "integer",
      "minimum": 0
    },
    "dictionaries": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "One dictionary: its id is the first path segment of all of its documents, strong_prefix is G or H for a Strong's lexicon and null otherwise, and bytes is the size of its whole-dictionary document.",
        "required": [
          "id",
          "name",
          "language",
          "license",
          "entry_count",
          "unique_key_count",
          "strong_prefix",
          "bytes"
        ],
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "language": {
            "type": "string",
            "minLength": 2
          },
          "license": {
            "type": "string"
          },
          "entry_count": {
            "type": "integer",
            "minimum": 0
          },
          "unique_key_count": {
            "type": "integer",
            "minimum": 0
          },
          "strong_prefix": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "G",
              "H",
              null
            ]
          },
          "bytes": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}

dictionary-metadata#

One dictionary's provenance, licence, counts and sizes. bytes is the size of the whole-dictionary document.

View full dictionary-metadata schema
{
  "title": "GetBible Dictionary Metadata v1",
  "description": "One dictionary's provenance, licence, counts and sizes. bytes is the size of the whole-dictionary document.",
  "type": "object",
  "required": [
    "schema",
    "id",
    "module",
    "name",
    "language",
    "version",
    "license",
    "driver",
    "source_type",
    "entry_count",
    "unique_key_count",
    "strong_prefix",
    "bytes",
    "index_url",
    "entry_url_template",
    "source",
    "source_module_url",
    "text_source",
    "copyright",
    "copyright_holder",
    "copyright_contact",
    "distribution_notes",
    "about",
    "conversion_note",
    "references"
  ],
  "properties": {
    "schema": {
      "const": "getbible-dictionary-metadata-v1"
    },
    "id": {
      "type": "string",
      "minLength": 1
    },
    "module": {
      "type": "string",
      "minLength": 1,
      "description": "The source module's own name."
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "language": {
      "type": "string",
      "minLength": 2
    },
    "version": {
      "type": "string"
    },
    "license": {
      "type": "string"
    },
    "driver": {
      "type": "string"
    },
    "source_type": {
      "type": "string"
    },
    "entry_count": {
      "type": "integer",
      "minimum": 0
    },
    "unique_key_count": {
      "type": "integer",
      "minimum": 0
    },
    "strong_prefix": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "G",
        "H",
        null
      ]
    },
    "bytes": {
      "type": "integer",
      "minimum": 0
    },
    "index_url": {
      "const": "index.json"
    },
    "entry_url_template": {
      "const": "{entry}.json"
    },
    "source": {
      "const": "CrossWire SWORD"
    },
    "source_module_url": {
      "type": "string",
      "minLength": 1,
      "description": "The module's own page at its source."
    },
    "text_source": {
      "type": "string"
    },
    "copyright": {
      "type": "string"
    },
    "copyright_holder": {
      "type": "string"
    },
    "copyright_contact": {
      "type": "object",
      "required": [
        "name",
        "email",
        "address"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "address": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "distribution_notes": {
      "type": "string"
    },
    "about": {
      "type": "string"
    },
    "conversion_note": {
      "type": "string",
      "minLength": 1
    },
    "references": {
      "type": "object",
      "description": "Which Bible the module's scripture references were resolved against: the API, the versification, the translations whose shape decided which chapters and verses exist, the translation whose book names ref uses, and the librarian and alias tables that resolved the spellings.",
      "required": [
        "api",
        "versification",
        "translations",
        "names",
        "language",
        "librarian",
        "aliases"
      ],
      "properties": {
        "api": {
          "const": "getbible-v2"
        },
        "versification": {
          "type": "string"
        },
        "translations": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "names": {
          "type": [
            "string",
            "null"
          ]
        },
        "language": {
          "type": "string"
        },
        "librarian": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "aliases": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          }
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}

dictionary-index#

Every word in one dictionary, sorted by the accent-insensitive lowercase search term. One fetch is enough to search a dictionary in any direction; the word itself is then at entry_url_template with the record's id.

View full dictionary-index schema
{
  "title": "GetBible Dictionary Index v1",
  "description": "Every word in one dictionary, sorted by the accent-insensitive lowercase search term. One fetch is enough to search a dictionary in any direction; the word itself is then at entry_url_template with the record's id.",
  "type": "object",
  "required": [
    "schema",
    "dictionary",
    "language",
    "name",
    "entry_url_template",
    "entry_count",
    "unique_key_count",
    "entries"
  ],
  "properties": {
    "schema": {
      "const": "getbible-dictionary-index-v1"
    },
    "dictionary": {
      "type": "string",
      "minLength": 1
    },
    "language": {
      "type": "string",
      "minLength": 2
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "entry_url_template": {
      "const": "{entry}.json"
    },
    "entry_count": {
      "type": "integer",
      "minimum": 0
    },
    "unique_key_count": {
      "type": "integer",
      "minimum": 0
    },
    "entries": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "key",
          "search"
        ],
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "key": {
            "type": "string",
            "minLength": 1
          },
          "search": {
            "type": "string",
            "minLength": 1
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "occurrence": {
            "type": "integer",
            "minimum": 2
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}

dictionary-entry#

One word of one dictionary. see_also lists the words this entry points at; backlinks lists the words that point back.

View full dictionary-entry schema
{
  "title": "GetBible Dictionary Entry v1",
  "description": "One word of one dictionary. see_also lists the words this entry points at; backlinks lists the words that point back.",
  "type": "object",
  "required": [
    "schema",
    "dictionary",
    "language",
    "id",
    "key",
    "occurrence",
    "aliases",
    "text"
  ],
  "properties": {
    "schema": {
      "const": "getbible-dictionary-entry-v1"
    },
    "dictionary": {
      "type": "string",
      "minLength": 1
    },
    "language": {
      "type": "string",
      "minLength": 2
    },
    "id": {
      "type": "string",
      "minLength": 1
    },
    "key": {
      "type": "string",
      "minLength": 1
    },
    "occurrence": {
      "type": "integer",
      "minimum": 1
    },
    "aliases": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1
    },
    "text": {
      "type": "string"
    },
    "see_also": {
      "$ref": "#/components/schemas/dictionary-entry/$defs/links"
    },
    "backlinks": {
      "$ref": "#/components/schemas/dictionary-entry/$defs/links"
    },
    "references": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "One scripture reference, resolved against the GetBible Bible API. book, chapter, and verse are Bible API coordinates; verses lists every verse covered when there is more than one, and an item without verse covers the whole chapter. ref is the same reference written canonically, in the book name the module's language uses, in the form the Query API accepts. text is present when the citation was located in the entry text: the citation exactly as the text spells it.",
        "required": [
          "ref",
          "osis",
          "book",
          "chapter"
        ],
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1
          },
          "ref": {
            "type": "string",
            "minLength": 1
          },
          "osis": {
            "type": "string",
            "minLength": 1
          },
          "book": {
            "type": "integer",
            "minimum": 1,
            "maximum": 83
          },
          "chapter": {
            "type": "integer",
            "minimum": 0
          },
          "verse": {
            "type": "integer",
            "minimum": 0
          },
          "verses": {
            "type": "array",
            "description": "Every verse this reference covers, including verse. Absent when it covers only verse.",
            "items": {
              "type": "integer",
              "minimum": 0
            },
            "minItems": 2,
            "uniqueItems": true
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false,
  "$defs": {
    "links": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "key"
        ],
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "key": {
            "type": "string",
            "minLength": 1
          }
        },
        "additionalProperties": false
      }
    }
  }
}

dictionary#

One complete dictionary in index order. Each member of entries is byte-for-byte the document served at {dictionary}/{entry}.json. This is a bulk document for offline clients; metadata.json publishes its size in bytes.

View full dictionary schema
{
  "title": "GetBible Dictionary v1",
  "description": "One complete dictionary in index order. Each member of entries is byte-for-byte the document served at {dictionary}/{entry}.json. This is a bulk document for offline clients; metadata.json publishes its size in bytes.",
  "type": "object",
  "required": [
    "schema",
    "dictionary",
    "language",
    "name",
    "entries"
  ],
  "properties": {
    "schema": {
      "const": "getbible-dictionary-v1"
    },
    "dictionary": {
      "type": "string",
      "minLength": 1
    },
    "language": {
      "type": "string",
      "minLength": 2
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "entries": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/dictionary-entry"
      }
    }
  },
  "additionalProperties": false
}

build#

How and when one v1 tree was built: the builder and extractor, the catalog the modules were selected from and the Bible API the references were resolved against.

View full build schema
{
  "title": "GetBible Build v1",
  "description": "How and when one v1 tree was built: the builder and extractor, the catalog the modules were selected from and the Bible API the references were resolved against.",
  "type": "object",
  "required": [
    "schema",
    "builder",
    "builder_version",
    "extractor",
    "extractor_version",
    "extractor_contract",
    "api_version",
    "resource",
    "generated_at",
    "catalog_url",
    "bible_api",
    "module_count"
  ],
  "properties": {
    "schema": {
      "const": "getbible-build-v1"
    },
    "builder": {
      "const": "v1_study_builder"
    },
    "builder_version": {
      "type": "string",
      "minLength": 1
    },
    "extractor": {
      "const": "getbiblesword"
    },
    "extractor_version": {
      "type": "string",
      "minLength": 1
    },
    "extractor_contract": {
      "type": "string",
      "minLength": 1
    },
    "api_version": {
      "const": 1
    },
    "resource": {
      "enum": [
        "commentaries",
        "dictionaries"
      ]
    },
    "generated_at": {
      "type": "string",
      "format": "date-time"
    },
    "catalog_url": {
      "type": "string",
      "minLength": 1
    },
    "bible_api": {
      "type": "string",
      "minLength": 1
    },
    "module_count": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}

build-report#

Compilation status and actionable diagnostics for one build. A published snapshot is captured before repository publication; the workflow report is updated with later publication errors. Successfully rebuilt modules and retained previous modules are listed separately.

View full build-report schema
{
  "title": "GetBible Build Report v1",
  "description": "Compilation status and actionable diagnostics for one build. A published snapshot is captured before repository publication; the workflow report is updated with later publication errors. Successfully rebuilt modules and retained previous modules are listed separately.",
  "type": "object",
  "required": [
    "schema",
    "status",
    "started_at",
    "completed_at",
    "requested_resource",
    "catalog_url",
    "built",
    "skipped",
    "failed",
    "retained",
    "errors",
    "diagnostics",
    "storage",
    "commits"
  ],
  "properties": {
    "schema": {
      "const": "getbible-build-report-v1"
    },
    "status": {
      "enum": [
        "running",
        "success",
        "partial",
        "failed"
      ],
      "description": "Running is an in-progress checkpoint. Success means all approved modules built; partial means usable output exists with reported failures. Failed means the run could not complete safely. Publication failures are recorded in the workflow report."
    },
    "started_at": {
      "type": "string",
      "format": "date-time"
    },
    "completed_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "requested_resource": {
      "enum": [
        "all",
        "commentaries",
        "dictionaries"
      ]
    },
    "catalog_url": {
      "type": "string",
      "minLength": 1
    },
    "built": {
      "type": "object",
      "required": [
        "commentaries",
        "dictionaries"
      ],
      "properties": {
        "commentaries": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "dictionaries": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "skipped": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/build-report/$defs/moduleIssue"
      }
    },
    "failed": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/build-report/$defs/moduleFailure"
      }
    },
    "retained": {
      "type": "array",
      "description": "Failed modules whose prior verified documents remain in the published tree.",
      "items": {
        "$ref": "#/components/schemas/build-report/$defs/moduleIssue"
      }
    },
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "stage",
          "error_type",
          "reason"
        ],
        "properties": {
          "stage": {
            "type": "string",
            "minLength": 1
          },
          "error_type": {
            "type": "string",
            "minLength": 1
          },
          "reason": {
            "type": "string"
          },
          "resource": {
            "enum": [
              "commentaries",
              "dictionaries"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "diagnostics": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "object"
        }
      }
    },
    "storage": {
      "type": "object",
      "additionalProperties": {
        "type": "object"
      }
    },
    "commits": {
      "type": "object",
      "additionalProperties": {
        "type": [
          "string",
          "null"
        ]
      }
    }
  },
  "$defs": {
    "moduleIssue": {
      "type": "object",
      "required": [
        "resource",
        "module",
        "reason"
      ],
      "properties": {
        "resource": {
          "enum": [
            "commentaries",
            "dictionaries"
          ]
        },
        "module": {
          "type": "string",
          "minLength": 1
        },
        "reason": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "moduleFailure": {
      "type": "object",
      "required": [
        "resource",
        "module",
        "reason",
        "stage",
        "error_type"
      ],
      "properties": {
        "resource": {
          "enum": [
            "commentaries",
            "dictionaries"
          ]
        },
        "module": {
          "type": "string",
          "minLength": 1
        },
        "reason": {
          "type": "string"
        },
        "stage": {
          "type": "string",
          "minLength": 1
        },
        "error_type": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}

hashes#

The SHA-256 of every other document in one v1 tree, keyed by path relative to the tree root; also the complete list of the paths the tree contains.

View full hashes schema
{
  "title": "GetBible Hashes v1",
  "description": "The SHA-256 of every other document in one v1 tree, keyed by path relative to the tree root; also the complete list of the paths the tree contains.",
  "type": "object",
  "required": [
    "schema",
    "algorithm",
    "files"
  ],
  "properties": {
    "schema": {
      "const": "getbible-hashes-v1"
    },
    "algorithm": {
      "const": "sha256"
    },
    "files": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "pattern": "^[0-9a-f]{64}$"
      }
    }
  },
  "additionalProperties": false
}

Authentication contract#

{
  "security": [],
  "securitySchemes": {}
}

See access and tokens for public usage and token requests.

Search the documentation

Type to search APIs, projects and guides.

Press Escape to close · Ctrl / ⌘ K to search