uW and Door43 API Information

The unfoldingWord project supports several APIs to provide access to our content. If you are a developer, please use the documentation here to understand how to interact with our data.

Latest

API Endpoints You Should Use

Door43 Resource Catalog (v3)

Description

The Door43 Resource Catalog provides access to all of our published content. The catalog is provided in JSON format and it is a structured hierarchy of resources organized by language and project. Resources may be available in a number of different formats from Resource Containers (which are highly structured translation modules), to binary outputs such as pdf.

Warning

The key names in the catalog will not change, but new ones may be added without changing the API version.

Please report any issues you may find into our Door43 Catalog Issue Queue.

For Translation Apps

Translation applications should use the Resource Containers formats (e.g. application/zip; type=bundle content=text/usfm conformsto=rc2.0), which provides access to USFM and Markdown projects in a structured manner.. Other formats may also be used.

For Consumption/Use Apps

The formats array will provide various media types that the resource is available in. These types include (but are not limited to): USFM, Markdown, PDF, DOCX, HTML, MP3, MP4. Note that not all media types will be available for any given resource.

Design

  • The catalog is available at https://api.door43.org/v3/catalog.json, where v3 is the API version. Initially this will be the sole endpoint. A dynamic endpoint that returns only requested information may be built later.

  • All timestamps follow the encoding scheme defined in the W3CDTF profile of ISO 8601.

  • Content linked to within the catalog will be available predominantly (though not exclusively) from https://cdn.door43.org.

  • Keys must always be represented even when the value is optional. If the key is not needed/available the value may be empty.

  • Values that indicate file size are given in bytes.

Definitions

Much of the catalog (see Example below) should be self explanatory. Below are further details about less obvious terms.

  • identifiers must be composed of lowercase alphanumeric characters and hyphens. Additionally: the first character must be a letter and the last character must not be a hyphen.

  • languagesresourcesprojectscategories indicates the hierarchy under which the project is to be displayed. For example: the project gen would be nested under the bible-ot category when viewed in an application. Localized titles for each category are available in languagescategory_labels.

  • languagesresources [→ projects] → formats provides links to content in various media types. Formats may be presented at the resource level when containing content for all projects or the project level when containing a single project.

    • The format field indicates the type of content that is available for download. This is most commonly a zip archive with additional flags indicating the type of content within the archive:

      • type this flag indicates the type of Resource Container (RC) represented. RCs are most often used by translation apps such as translationStudio.

      • content this flag gives the format of the content inside the RC.

      • conformsto this flag gives the version of the RC specification this RC is built on.

  • catalogs: provides links to other supporting content.

  • version numbers in the urls such as v7 indicate the version of the resource or asset. This is not the same as the api version seen in the catalog url.

  • languagesversification_labels: provides human readable labels to the different versification systems available in the catalog. These labels may be used, for example, when a user imports raw content such as USFM and are given the opportunity to select the appropriate versification system.

  • languagesresourcesmodified: gives the date the resource was last modified according to the translator.

  • * → formatsmodified: gives the date of the most recent commit in DCS.

  • * → formatsquality: if appropriate this specifies the quality of the media such as bitrate or dpi.

  • * → formatschapters: lists additional files for download broken up by chapter.

  • * → formatschapterslength: if applicable, the length of the media file in seconds.

  • * → formatschaptersidentifier: the chapter identifier.

Example

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

Warning

The following JSON snippet has several parts removed so that it can be more concise.

{
  "catalogs": [
    {
      "identifier": "langnames",
      "modified": "2016-10-03",
      "url": "https://td.unfoldingword.org/exports/langnames.json"
    },
    {
      "identifier": "temp-langnames",
      "modified": "2016-10-03",
      "url": "https://td.unfoldingword.org/api/templanguages/"
    },
    {
      "identifier": "approved-temp-langnames",
      "modified": "2016-10-03",
      "url": "https://td.unfoldingword.org/api/templanguages/assignment/changed/"
    },
    {
      "identifier": "new-language-questions",
      "modified": "2016-10-03",
      "url": "https://td.unfoldingword.org/api/questionnaire/"
    }
  ],
  "languages": [
    {
      "category_labels": {
        "bible-nt": "Bible: NT",
        "bible-ot": "Bible: OT",
        "ta": "translationAcademy"
      },
      "direction": "ltr",
      "identifier": "en",
      "resources": [
        {
          "checking": {
            "checking_entity": [
              "unfoldingWord"
            ],
            "checking_level": "3"
          },
          "comment": "",
          "contributor": [
            "unfoldingWord"
          ],
          "creator": "Door43 World Missions Community",
          "description": "",
          "formats": [
            {
              "format": "application/zip; type=man content=text/markdown conformsto=rc0.2",
              "modified": "2017-07-06T15:16:59+00:00",
              "signature": "https://cdn.door43.org/en/ta/v7/ta.zip.sig",
              "size": 479004,
              "url": "https://cdn.door43.org/en/ta/v7/ta.zip"
            }
          ],
          "identifier": "ta",
          "issued": "2017-07-06T00:00:00+00:00",
          "modified": "2017-07-06T00:00:00+00:00",
          "projects": [
            {
              "categories": [
                "ta"
              ],
              "identifier": "intro",
              "sort": 0,
              "title": "Introduction to translationAcademy",
              "versification": null
            },
            {
              "categories": [
                "ta"
              ],
              "identifier": "process",
              "sort": 1,
              "title": "Process Manual",
              "versification": null
            },
            {
              "categories": [
                "ta"
              ],
              "identifier": "translate",
              "sort": 2,
              "title": "Translation Manual",
              "versification": null
            },
            {
              "categories": [
                "ta"
              ],
              "identifier": "checking",
              "sort": 3,
              "title": "Checking Manual",
              "versification": null
            }
          ],
          "publisher": "unfoldingWord",
          "relation": [],
          "rights": "CC BY-SA 4.0",
          "source": [
            {
              "identifier": "ta",
              "language": "en",
              "version": "7"
            }
          ],
          "subject": "",
          "title": "translationAcademy",
          "version": "7"
        },
        {
          "checking": {
            "checking_entity": [
              "Distant Shores Media"
            ],
            "checking_level": "3"
          },
          "comment": "",
          "contributor": [
            "Distant Shores Media",
            "unfoldingWord"
          ],
          "creator": "Distant Shores Media",
          "description": "50 key stories of the Bible, from Creation to Revelation, for evangelism & discipleship, in text, audio, and video, on any mobile phone, in any language, for free. It increases understanding of the historical and redemptive narrative of the entire Bible.",
          "identifier": "obs",
          "issued": "2015-08-26T00:00:00+00:00",
          "modified": "2017-01-10T00:00:00+00:00",
          "projects": [
            {
              "categories": [],
              "formats": [
                {
                  "format": "application/zip; type=book content=text/markdown conformsto=rc0.2",
                  "modified": "2017-08-02T18:42:44+00:00",
                  "signature": "https://cdn.door43.org/en/obs/v4/obs.zip.sig",
                  "size": 81845,
                  "url": "https://cdn.door43.org/en/obs/v4/obs.zip"
                },
                {
                  "chapters": [
                    {
                      "format": "audio/mp3",
                      "identifier": "08",
                      "length": 212.072,
                      "modified": "2016-05-26T16:28:18+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/64kbps/en_obs_08_64kbps.mp3.sig",
                      "size": 1714636,
                      "url": "https://cdn.door43.org/en/obs/v4/64kbps/en_obs_08_64kbps.mp3"
                    },
                    {
                      "format": "audio/mp3",
                      "identifier": "30",
                      "length": 133.448,
                      "modified": "2016-05-26T16:28:15+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/64kbps/en_obs_30_64kbps.mp3.sig",
                      "size": 1083639,
                      "url": "https://cdn.door43.org/en/obs/v4/64kbps/en_obs_30_64kbps.mp3"
                    },
                    {
                      "format": "audio/mp3",
                      "identifier": "12",
                      "length": 221.328,
                      "modified": "2016-05-26T16:28:17+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/64kbps/en_obs_12_64kbps.mp3.sig",
                      "size": 1788226,
                      "url": "https://cdn.door43.org/en/obs/v4/64kbps/en_obs_12_64kbps.mp3"
                    }
                  ],
                  "contributor": [
                    "Narrator: Steve Lossing",
                    "Checker: Brad Harrington",
                    "Engineer: Brad Harrington"
                  ],
                  "format": "application/zip; content=audio/mp3",
                  "modified": "2016-06-03T21:19:52+00:00",
                  "quality": "64kbps",
                  "signature": "https://cdn.door43.org/en/obs/v4/64kbps/en_obs_64kbps.zip.sig",
                  "size": 81732032,
                  "source_version": "4",
                  "url": "https://cdn.door43.org/en/obs/v4/64kbps/en_obs_64kbps.zip",
                  "version": "1"
                },
                {
                  "chapters": [
                    {
                      "format": "audio/mp3",
                      "identifier": "08",
                      "length": 212.114,
                      "modified": "2016-05-26T16:27:54+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/32kbps/en_obs_08_32kbps.mp3.sig",
                      "size": 866598,
                      "url": "https://cdn.door43.org/en/obs/v4/32kbps/en_obs_08_32kbps.mp3"
                    },
                    {
                      "format": "audio/mp3",
                      "identifier": "30",
                      "length": 133.49,
                      "modified": "2016-05-26T16:27:52+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/32kbps/en_obs_30_32kbps.mp3.sig",
                      "size": 550062,
                      "url": "https://cdn.door43.org/en/obs/v4/32kbps/en_obs_30_32kbps.mp3"
                    },
                    {
                      "format": "audio/mp3",
                      "identifier": "12",
                      "length": 221.37,
                      "modified": "2016-05-26T16:27:53+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/32kbps/en_obs_12_32kbps.mp3.sig",
                      "size": 903158,
                      "url": "https://cdn.door43.org/en/obs/v4/32kbps/en_obs_12_32kbps.mp3"
                    }
                  ],
                  "contributor": [
                    "Narrator: Steve Lossing",
                    "Checker: Brad Harrington",
                    "Engineer: Brad Harrington"
                  ],
                  "format": "application/zip; content=audio/mp3",
                  "modified": "2016-06-03T21:19:31+00:00",
                  "quality": "32kbps",
                  "signature": "https://cdn.door43.org/en/obs/v4/32kbps/en_obs_32kbps.zip.sig",
                  "size": 40456543,
                  "source_version": "4",
                  "url": "https://cdn.door43.org/en/obs/v4/32kbps/en_obs_32kbps.zip",
                  "version": "1"
                },
                {
                  "chapters": [
                    {
                      "format": "video/mp4",
                      "identifier": "08",
                      "length": 214.016,
                      "modified": "2016-05-26T16:28:48+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/720p/en_obs_08_720p.mp4.sig",
                      "size": 58156957,
                      "url": "https://cdn.door43.org/en/obs/v4/720p/en_obs_08_720p.mp4"
                    },
                    {
                      "format": "video/mp4",
                      "identifier": "30",
                      "length": 135.04,
                      "modified": "2016-05-26T16:28:33+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/720p/en_obs_30_720p.mp4.sig",
                      "size": 36589625,
                      "url": "https://cdn.door43.org/en/obs/v4/720p/en_obs_30_720p.mp4"
                    },
                    {
                      "format": "video/mp4",
                      "identifier": "12",
                      "length": 223.33866666666665,
                      "modified": "2016-05-26T16:28:45+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/720p/en_obs_12_720p.mp4.sig",
                      "size": 60021756,
                      "url": "https://cdn.door43.org/en/obs/v4/720p/en_obs_12_720p.mp4"
                    }
                  ],
                  "contributor": [],
                  "format": "application/zip; content=video/mp4",
                  "modified": "2017-08-15T21:05:41.995214+00:00",
                  "quality": "720p",
                  "signature": "https://cdn.door43.org/en/obs/v4/720p/en_obs_720p.zip.sig",
                  "size": 2748880681,
                  "source_version": "4",
                  "url": "https://cdn.door43.org/en/obs/v4/720p/en_obs_720p.zip",
                  "version": "1"
                },
                {
                  "chapters": [
                    {
                      "format": "video/mp4",
                      "identifier": "08",
                      "length": 214.01832199546485,
                      "modified": "2016-05-26T16:28:08+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/360p/en_obs_08_360p.mp4.sig",
                      "size": 23848949,
                      "url": "https://cdn.door43.org/en/obs/v4/360p/en_obs_08_360p.mp4"
                    },
                    {
                      "format": "video/mp4",
                      "identifier": "30",
                      "length": 135.04725623582766,
                      "modified": "2016-05-26T16:28:00+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/360p/en_obs_30_360p.mp4.sig",
                      "size": 14833310,
                      "url": "https://cdn.door43.org/en/obs/v4/360p/en_obs_30_360p.mp4"
                    },
                    {
                      "format": "video/mp4",
                      "identifier": "39",
                      "length": 211.06938775510204,
                      "modified": "2016-05-26T16:27:58+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/360p/en_obs_39_360p.mp4.sig",
                      "size": 23116536,
                      "url": "https://cdn.door43.org/en/obs/v4/360p/en_obs_39_360p.mp4"
                    },
                    {
                      "format": "video/mp4",
                      "identifier": "12",
                      "length": 223.3295238095238,
                      "modified": "2016-05-26T16:28:07+00:00",
                      "signature": "https://cdn.door43.org/en/obs/v4/360p/en_obs_12_360p.mp4.sig",
                      "size": 24531836,
                      "url": "https://cdn.door43.org/en/obs/v4/360p/en_obs_12_360p.mp4"
                    }
                  ],
                  "contributor": [],
                  "format": "application/zip; content=video/mp4",
                  "modified": "2017-08-15T21:08:34.645965+00:00",
                  "quality": "360p",
                  "signature": "https://cdn.door43.org/en/obs/v4/360p/en_obs_360p.zip.sig",
                  "size": 1135776951,
                  "source_version": "4",
                  "url": "https://cdn.door43.org/en/obs/v4/360p/en_obs_360p.zip",
                  "version": "1"
                }
              ],
              "identifier": "obs",
              "sort": 0,
              "title": "Open Bible Stories",
              "versification": null
            }
          ],
          "publisher": "unfoldingWord",
          "relation": [
            "en/tw",
            "en/obs-tq",
            "en/obs-tn"
          ],
          "rights": "CC BY-SA 4.0",
          "source": [
            {
              "identifier": "obs",
              "language": "en",
              "version": "4"
            }
          ],
          "subject": "Bible stories",
          "title": "Open Bible Stories",
          "version": "4"
        },
        {
          "checking": {
            "checking_entity": [
              "unfoldingWord"
            ],
            "checking_level": "3"
          },
          "comment": "",
          "contributor": [
            "Jesse Griffin",
            "Jim Pohlig",
            "Larry Sallee",
            "Perry Oakes",
            "Tom Warren",
            "Dave Statezni",
            "Bram van den Heuvel",
            "C. Harry Harriss",
            "Hendrik \"Henry\" de Vries"
          ],
          "creator": "Door43 World Missions Community",
          "description": "An unrestricted literal Bible",
          "formats": [
            {
              "format": "application/zip; type=bundle content=text/usfm conformsto=rc0.2",
              "modified": "2017-08-09T23:56:12+00:00",
              "signature": "https://cdn.door43.org/en/ulb/v10/ulb.zip.sig",
              "size": 1439121,
              "url": "https://cdn.door43.org/en/ulb/v10/ulb.zip"
            }
          ],
          "identifier": "ulb",
          "issued": "2017-07-05T00:00:00+00:00",
          "modified": "2017-07-05T00:00:00+00:00",
          "projects": [
            {
              "categories": [
                "bible-ot"
              ],
              "formats": [
                {
                  "format": "text/usfm",
                  "modified": "2017-07-05T00:00:00+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/gen.usfm.sig",
                  "size": 204009,
                  "url": "https://cdn.door43.org/en/ulb/v10/gen.usfm"
                },
                {
                  "contributor": [],
                  "format": "application/pdf",
                  "modified": "2017-07-21T12:37:08+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/pdf/01-GEN.pdf.sig",
                  "size": 306278,
                  "source_version": "10",
                  "url": "https://cdn.door43.org/en/ulb/v10/pdf/01-GEN.pdf",
                  "version": "10"
                }
              ],
              "identifier": "gen",
              "sort": 1,
              "title": "Genesis",
              "versification": "ufw"
            },
            {
              "categories": [
                "bible-ot"
              ],
              "formats": [
                {
                  "format": "text/usfm",
                  "modified": "2017-07-05T00:00:00+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/exo.usfm.sig",
                  "size": 172290,
                  "url": "https://cdn.door43.org/en/ulb/v10/exo.usfm"
                },
                {
                  "contributor": [],
                  "format": "application/pdf",
                  "modified": "2017-07-21T12:37:09+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/pdf/02-EXO.pdf.sig",
                  "size": 260802,
                  "source_version": "10",
                  "url": "https://cdn.door43.org/en/ulb/v10/pdf/02-EXO.pdf",
                  "version": "10"
                }
              ],
              "identifier": "exo",
              "sort": 2,
              "title": "Exodus",
              "versification": "ufw"
            },
            {
              "categories": [
                "bible-ot"
              ],
              "formats": [
                {
                  "format": "text/usfm",
                  "modified": "2017-07-05T00:00:00+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/mal.usfm.sig",
                  "size": 10425,
                  "url": "https://cdn.door43.org/en/ulb/v10/mal.usfm"
                },
                {
                  "contributor": [],
                  "format": "application/pdf",
                  "modified": "2017-07-21T12:37:17+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/pdf/39-MAL.pdf.sig",
                  "size": 69016,
                  "source_version": "10",
                  "url": "https://cdn.door43.org/en/ulb/v10/pdf/39-MAL.pdf",
                  "version": "10"
                }
              ],
              "identifier": "mal",
              "sort": 39,
              "title": "Malachi",
              "versification": "ufw"
            },
            {
              "categories": [
                "bible-nt"
              ],
              "formats": [
                {
                  "format": "text/usfm",
                  "modified": "2017-07-05T00:00:00+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/mat.usfm.sig",
                  "size": 132963,
                  "url": "https://cdn.door43.org/en/ulb/v10/mat.usfm"
                },
                {
                  "contributor": [],
                  "format": "application/pdf",
                  "modified": "2017-07-21T12:37:17+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/pdf/41-MAT.pdf.sig",
                  "size": 224432,
                  "source_version": "10",
                  "url": "https://cdn.door43.org/en/ulb/v10/pdf/41-MAT.pdf",
                  "version": "10"
                }
              ],
              "identifier": "mat",
              "sort": 40,
              "title": "Matthew",
              "versification": "ufw"
            },
            {
              "categories": [
                "bible-nt"
              ],
              "formats": [
                {
                  "format": "text/usfm",
                  "modified": "2017-07-05T00:00:00+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/mrk.usfm.sig",
                  "size": 82963,
                  "url": "https://cdn.door43.org/en/ulb/v10/mrk.usfm"
                },
                {
                  "contributor": [],
                  "format": "application/pdf",
                  "modified": "2017-07-21T12:37:18+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/pdf/42-MRK.pdf.sig",
                  "size": 164274,
                  "source_version": "10",
                  "url": "https://cdn.door43.org/en/ulb/v10/pdf/42-MRK.pdf",
                  "version": "10"
                }
              ],
              "identifier": "mrk",
              "sort": 41,
              "title": "Mark",
              "versification": "ufw"
            },
            {
              "categories": [
                "bible-nt"
              ],
              "formats": [
                {
                  "format": "text/usfm",
                  "modified": "2017-07-05T00:00:00+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/luk.usfm.sig",
                  "size": 143906,
                  "url": "https://cdn.door43.org/en/ulb/v10/luk.usfm"
                },
                {
                  "contributor": [],
                  "format": "application/pdf",
                  "modified": "2017-07-21T12:37:18+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/pdf/43-LUK.pdf.sig",
                  "size": 237635,
                  "source_version": "10",
                  "url": "https://cdn.door43.org/en/ulb/v10/pdf/43-LUK.pdf",
                  "version": "10"
                }
              ],
              "identifier": "luk",
              "sort": 42,
              "title": "Luke",
              "versification": "ufw"
            },
            {
              "categories": [
                "bible-nt"
              ],
              "formats": [
                {
                  "format": "text/usfm",
                  "modified": "2017-07-05T00:00:00+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/rev.usfm.sig",
                  "size": 66681,
                  "url": "https://cdn.door43.org/en/ulb/v10/rev.usfm"
                },
                {
                  "contributor": [],
                  "format": "application/pdf",
                  "modified": "2017-07-21T12:37:24+00:00",
                  "signature": "https://cdn.door43.org/en/ulb/v10/pdf/67-REV.pdf.sig",
                  "size": 140369,
                  "source_version": "10",
                  "url": "https://cdn.door43.org/en/ulb/v10/pdf/67-REV.pdf",
                  "version": "10"
                }
              ],
              "identifier": "rev",
              "sort": 66,
              "title": "Revelation",
              "versification": "ufw"
            }
          ],
          "publisher": "unfoldingWord",
          "relation": [
            "en/tw",
            "en/tq",
            "en/tn"
          ],
          "rights": "CC BY-SA 4.0",
          "source": [
            {
              "identifier": "asv",
              "language": "en",
              "version": "1901"
            }
          ],
          "subject": "Bible",
          "title": "Unlocked Literal Bible",
          "version": "10"
        }
      ],
      "title": "English",
      "versification_labels": {
        "kjv": "King James Version",
        "mt": "Masoretic Text (Hebrew Bible)"
      }
    }
  ]
}
Catalog Subjects Endpoint

Subjects layouts may be accessed via their subject (from the above catalog), like this: https://api.door43.org/v3/subjects/[subject].json.

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

[
  {
    "subject": "Greek_New_Testament",
    "identifier": "Greek_New_Testament",
    "language": "el-x-koine",
    "resources": [
      {
        "checking": {
          "checking_entity": [
            "unfoldingWord"
          ],
          "checking_level": "2"
        },
        "comment": "",
        "contributor": [
          ...
        ],
        "creator": "unfoldingWord",
        "description": "An open-licensed, lexically tagged, morphologically parsed critical Greek New Testament with full apparatus. It enables the global Church to have access to the original texts of the New Testament.",
        "formats": [
          {
            "format": "application/zip; type=bundle content=text/usfm3 conformsto=rc0.2",
            "modified": "2018-08-02T17:46:25+00:00",
            "signature": "https://cdn.door43.org/el-x-koine/ugnt/v0.2/ugnt.zip.sig",
            "size": 1465124,
            "url": "https://cdn.door43.org/el-x-koine/ugnt/v0.2/ugnt.zip"
          }
        ],
        "identifier": "ugnt",
        "issued": "2018-08-02T00:00:00+00:00",
        "modified": "2018-08-02T00:00:00+00:00",
        "projects": [
          {
            "categories": [
              "bible-nt"
            ],
            "identifier": "mat",
            "sort": 40,
            "title": "Matthew",
            "versification": "ufw"
          }
          ...
        ],
        "subject": "Greek New Testament",
        "title": "unfoldingWord Greek New Testament",
        "version": "0.2"
      }
    ],
    "direction": "ltr",
    "title": "Koine Greek"
  }
]

You may also get a list of subject endpoints available from the index like this: https://api.door43.org/v3/subjects/index.json.

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

[
  "https://api.door43.org/v3/subjects/Bible.json",
  "https://api.door43.org/v3/subjects/Translation_Words.json",
  "https://api.door43.org/v3/subjects/OBS_Translation_Questions.json",
  "https://api.door43.org/v3/subjects/Open_Bible_Stories.json",
  "https://api.door43.org/v3/subjects/Translation_Notes.json",
  "https://api.door43.org/v3/subjects/Translation_Questions.json",
  "https://api.door43.org/v3/subjects/OBS_Translation_Notes.json",
  "https://api.door43.org/v3/subjects/Translation_Academy.json",
  "https://api.door43.org/v3/subjects/Translation_Questions'.json",
  "https://api.door43.org/v3/subjects/Greek_New_Testament.json"
]

For some applications it is more efficient to retrieve all the subject entries at once and parse them on the client. You can do receive the entire object at once here: https://api.door43.org/v3/subjects/pivoted.json.

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

{
  "catalogs": [
    {
      "identifier": "langnames",
      "modified": "2016-10-03",
      "url": "https://td.unfoldingword.org/exports/langnames.json"
    }
    ...
  ],
  "subjects": [
    {
      "subject": "Bible",
      "identifier": "Bible",
      "language": "hi",
      "resources": [
        {
          "checking": {
            "checking_entity": [
              "John Smith"
            ],
            "checking_level": "3"
          },
          "comment": "",
          "contributor": [
            "John Smith",
            ...
          ],
          "creator": "BCS",
          "description": "A basic Bible lexicon that provides translators with clear, concise definitions and translation suggestions for every important word in the Bible. It provides translators and checkers with essential lexical information to help them make the best possible translation decisions.",
          "identifier": "tw",
          "issued": "2018-02-23T00:00:00+00:00",
          "modified": "2018-06-08T00:00:00+00:00",
          "projects": [
            {
              "categories": [],
              "formats": [
                {
                  "format": "application/zip; type=dict content=text/markdown conformsto=rc0.2",
                  "modified": "2018-06-08T19:49:08+00:00",
                  "signature": "https://cdn.door43.org/hi/tw/v8.1/bible.zip.sig",
                  "size": 1196446,
                  "url": "https://cdn.door43.org/hi/tw/v8.1/bible.zip"
                }
              ],
              "identifier": "bible",
              "sort": 0,
              "title": "translationWords",
              "versification": null
            }
          ],
          "publisher": "BCS",
          "relation": [
            "hi/ulb",
            "hi/tn",
            "hi/tq"
          ],
          "rights": "CC BY-SA 4.0",
          "source": [
            {
              "identifier": "tw",
              "language": "en",
              "version": "8"
            }
          ],
          "subject": "Translation Words",
          "title": "translationWords",
          "version": "8.1"
        }
      ],
      "direction": "ltr",
      "title": "हिन्दी"
    }
  ]
}

Door43 Content Service (DCS)

Description

The Door43 Content Service (DCS) is our translation content storage service. DCS houses our in-progress translations and is the source for our published content (see Door43 Resource Catalog (v3)).

Please report any issues you may find into our DCS Issue Queue.

Design

DCS is built on Gitea and follows their lead on API design, which is patterned after Github’s API.

Example

Please consult the Swagger API documentation for our DCS instance.

translationDatabase API

Description

Example

Language Names Endpoint

The Language Names Endpoint provides access to basic language information for all languages in the world. The lc field provides a unique language code for each language, based on the IETF standard (see our IETF page on the unfoldingWord website for a simple introduction).

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

{
  "pk": 6,
  "alt": [
    "Afaraf",
    "Danakil",
    "Denkel",
    "Adal",
    "Afar Af",
    "Qafar",
    "Baadu (Ba'adu)"
  ],
  "lr": "Africa",
  "gw": false,
  "ang": "Afar",
  "ld": "ltr",
  "lc": "aa",
  "ln": "Afaraf",
  "hc": "ET",
  "cc": [
    "DJ",
    "ER",
    "ET",
    "US",
    "CA"
  ]
}

The field names are described as follows:

  • pk: database key id, for internal use only

  • alt: list of alternate names for the language

  • lr: specifies the region of the world where the language is predominantly used

  • gw: specifies whether or not this is a Gateway Language

  • ang: an anglicized version of the language name

  • ld: specifies the usual text direction, either “ltr” or “rtl”

  • lc: specifies language code of this resource following the IETF standard

  • ln: specifies the name of the language as its speakers refer to it (localized name)

  • hc: specifies the country code for the home country of this language

  • cc: list of country codes where the language is spoken

Language Names Short Endpoint

The Language Names Short Endpoint provides access to abbreviated language information for all languages in the world. The lc field provides a unique language code for each language, based on the IETF standard (see our IETF page on the unfoldingWord website for a simple introduction).

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

{
  "pk": 6,
  "lr": "Africa",
  "ang": "Afar",
  "lc": "aa",
  "ln": "Afaraf",
  "hc": "ET"
}

The field names are described as follows:

  • pk: database key id, for internal use only

  • lr: specifies the region of the world where the language is predominantly used

  • ang: an anglicized version of the language name

  • lc: specifies language code of this resource following the IETF standard

  • ln: specifies the name of the language as its speakers refer to it (localized name)

  • hc: specifies the country code for the home country of this language

Deprecated

API Endpoints You Should Not Use

translationStudio API (v2)

Warning

This API endpoint is deprecated. Please update your software to use the Door43 Resource Catalog (v3).

Description

The translationStudio version 2 API is comprised of several cascading catalogs, starting with the Projects Catalog.

Warning

Please update your software to use Door43 Resource Catalog (v3) if you experience issues with this endpoint.

Example

Projects Catalog

The Projects Catalog records resources available for translation in translationStudio. This file will always be downloaded first by the app in order to identify available updates.

Please note: the date_modified field within this catalog gets it’s value from the most recent date_modified value found in the Languages Catalog. This allows the app to determine if updates are available.

You may optionally specify meta categories on a project. See the notes on the Languages Catalog for more details.

The sort field allows projects to be displayed in a sorted manner within the app. The sort value MUST be a numeric value. That is, it should be able to be parsed as an integer.

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

[
  {
    "slug": "obs",
    "sort": "01",
    "date_modified": "20141207",
    "lang_catalog": "https://api.unfoldingword.org/ts/txt/2/obs/languages.json?date_modified=20141207"
  },
  {
    "slug": "luk",
    "sort": "42",
    "meta": ["bible", "nt"],
    "date_modified": "20141207",
    "lang_catalog": "https://api.unfoldingword.org/ts/txt/2/luk/languages.json?date_modified=20141207"
  }
]
Languages Catalog

The Languages Catalog contains the translated project name and description along with necessary information regarding the language.

Optional meta in the project provides the ability to create soft/virtual categories when viewed in the app. e.g. Bible→New Testament→Luke.

Note

If the project specifies meta slugs the language must also provide the translated meta names.

The date_modified field in the language gets it’s value from the most recent date_modified value in the Resources Catalog. Once again this allows the app to determine if updates are available for a particular language.

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

[
  {
    "project": {
      "name": "Luke",
      "desc": "Gospel",
      "meta": ["Bible", "New Testament"]
    },
    "language": {
      "slug": "en",
      "name": "English",
      "direction": "ltr",
      "date_modified": "20141207"
    },
    "res_catalog": "https://api.unfoldingword.org/ts/txt/2/luk/en/resources.json?date_modified=20141207"
  },
  {
    "project": {
      "name": "Lucas",
      "desc": "evangelio",
      "meta": ["Biblia", "Nuevo Testamento"]
    },
    "language": {
      "slug": "es",
      "name": "español",
      "direction": "ltr",
      "date_modified": "20141207"
    },
    "res_catalog": "https://api.unfoldingword.org/ts/txt/2/luk/es/resources.json?date_modified=20141207"
  }
]
Resources Catalog

The Resources Catalog contains the different types of resources available for translation. When multiple resources are present the app will supply ui controls to switch between resources.

The date_modified field is updated any time the source, terms, or notes catalogs are updated.

Included in each resource is status which indicates (among other things) the checking level of the resource. The app uses this to determine whether or not the resource is ready for use in the app. If there is only one resource it should be given the slug value “default” and the name can be left as an empty string.

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

[
  {
    "slug": "ulb",
    "name": "unfoldingWord Literal Bible",
    "date_modified": "20141207",
    "status": {
      "checking_entity": "Distant Shores Media; Wycliffe Associates",
      "checking_level": "3",
      "comments": "Original source text.",
      "contributors": "Wycliffe Associates",
      "publish_date": "2014-12-07",
      "source_text": "en",
      "source_text_version": "3.1.1",
      "version": "3.1.1"
    },
    "source": "https://api.unfoldingword.org/ts/txt/2/luk/en/ulb/source.json?date_modified=20150409",
    "terms": "https://api.unfoldingword.org/ts/txt/2/luk/en/ulb/terms.json?date_modified=20150409",
    "notes": "https://api.unfoldingword.org/ts/txt/2/luk/en/ulb/notes.json?date_modified=20150409",
    "checking_questions":"https://api.unfoldingword.org/ts/txt/2/luk/en/ulb/CQ-en.json?date_modified=20150409"
  }
]
Source Catalog

The Source Catalog contains all the chapters and frames of the project.

The ref and title fields are optional. If left blank they will not be available for translation within the app. The img field is likewise optional.

There is a new format field that allows you to specify the format of the frame text. For example Bible translation projects are in the usx format. Valid options for format are currently usx and txt.

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

{
  "chapters": [
    {
      "number": "01",
      "ref": "",
      "title": "",
      "frames": [
        {
          "id": "01-01",
          "img": "",
          "format": "usx",
          "text": "<para style=\"p\"><verse number=\"1\" style=\"v\" />Now in those days, it came about that Caesar Augustus sent out a decree ordering that a census be taken of all the people living in the Roman world.<verse number=\"2\" style=\"v\" />This was the first census made while Quirinius was governor of Syria.<verse number=\"3\" style=\"v\" />So everyone went to his own town to be registered for the census.</para>"
         },
       ],
    },
  ],
  "date_modified": "20141207",
  "direction": "ltr",
  "language": "en"
}
Target Languages Catalog

The list of languages used in translationStudio is pulled from translationDatabase API.

unfoldingWord App Catalog (v2)

Warning

This API endpoint is deprecated. Please update your software to use the Door43 Resource Catalog (v3).

Description

The unfoldingWord app has a unified API endpoint that provides links to all the resources available.

Warning

Please update your software to use Door43 Resource Catalog (v3) if you experience issues with this endpoint.

Example

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

{
  "cat": [
    {
      "langs": [
        {
          "lc": "ar",
          "mod": "1427846400",
          "vers": [
            {
              "mod": "1427846400",
              "name": "\ufe8e\ufee0\ufedc\ufe97\ufe8e\ufe91 \ufe8e\ufee0\ufee4\ufed7\ufeaa\ufeb3 \ufe8f\ufe8e\ufee0\ufee0\ufecf\ufe93 \ufe8e\ufee0\ufecb\ufeae\ufe92\ufef3\ufe93\u060c \ufed1\ufe8e\ufee7 \ufea9\ufe8e\ufef4\ufedb",
              "slug": "avd",
              "status": {
                "checking_entity": "Syrian Mission;American Bible Society;PNG Bible Translation Association",
                "checking_level": "3",
                "comments": "Original source text",
                "contributors": "Eli Smith;Cornelius Van Allen Van Dyck;Nasif al Yaziji;Boutros al Bustani;Yusuf al-Asir",
                "publish_date": "20150401",
                "source_text": "ar",
                "source_text_version": "2014-02-13",
                "version": "2014-02-13"
              },
              "toc": [
                {
                  "desc": "",
                  "mod": "1427846400",
                  "slug": "gen",
                  "src": "https://api.unfoldingword.org/avd/txt/1/avd-ar/01-GEN.usfm",
                  "src_sig": "https://api.unfoldingword.org/avd/txt/1/avd-ar/01-GEN.sig",
                  "title": "\u0627\u064e\u0644\u062a\u0651\u064e\u0643\u0652\u0648\u0650\u064a\u0646\u064f"
                }
              ]
            }
          ]
        }
      ],
      "slug": "bible",
      "title": "Bible"
    }
  ],
  "mod": 1430171270
}

translationKeyboard API

Warning

This API endpoint is no longer available. Please try Keyman instead.

Description

The web component of translationKeyboard allows people to create and modify keyboard layouts that can then be downloaded to Android devices using the translationKeyboard mobile app. Once downloaded, these layouts can be used on the device or shared with others.

The tK API endpoint provides access to these keyboard layouts and is used by the tK mobile app.

Please report any issues you may find into our translationKeyboardWeb Issue Queue.

Example

tK Catalog Endpoint

The translationKeyboard app has a unified API endpoint at http://tk.unfoldingword.org/api/v1/keyboard/.

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

{
  "keyboards": [
    {
      "id": 5,
      "iso_language": "ne",
      "iso_region": "NP",
      "language_name": "नेपाली",
      "updated_at": 1414783592.712652
    },
    ...
  ],
  "updated_at": 1427386363.6908412
}
tK Keyboard Endpoint

Keyboard layouts may be accessed via their id (from the above catalog), like this: http://tk.unfoldingword.org/api/v1/keyboard/[id].

Tip

The following is an example JSON snippet endpoint and may be used as a reference guide.

{
  "keyboard_id": 5,
  "keyboard_name": "Devanagari",
  "created_at": 1414783592.712652,
  "updated_at": 1414783592.712652,
  "iso_region": "NP",
  "iso_language": "ne",
  "keyboard_variants": [
    {
      "name": "Devanagari Android 4 Row",
      "created_at": 1414783739.552225,
      "updated_at": 1414783739.552225,
      "key_position_rows": [
        {
          "key_position_columns": [
            {
              "percent_width": 1.0,
              "characters": [
                {
                  "modmask": 0,
                  "unicode": 2378
                },
                {
                  "modmask": 1,
                  "unicode": 2322
                }
              ]
            }
          ...
          ]
        ...
        ]
      ...
      ]
  ]
}