diff --git a/README.md b/README.md
index 931aba5f4..0964dfcbb 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,12 @@ Please [file an issue](https://github.com/getodk/docs/issues) if you can't find
We highly recommend you use a virtual environment like [`virtualenv`](https://virtualenv.pypa.io/en/stable/). If you need to use different versions of Python, we recommend [`pyenv`](https://github.com/pyenv/pyenv).
+You can also use Docker to build and view the docs:
+
+```bash
+make autobuild-docker
+```
+
### Cloning the repo
Clone the docs repo and make sure all the requirements are installed:
diff --git a/docs/conf.py b/docs/conf.py
index 625ef3681..bc5ac6f82 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -45,7 +45,8 @@
'openapi',
'sphinxext.opengraph',
'notfound.extension',
- 'sphinx_sitemap'
+ 'sphinx_sitemap',
+ 'myst_parser'
]
# If using Apple Silicon, set env variable (assumes brew install of enchant)
@@ -148,4 +149,4 @@
'incl/form-examples/regex-middle-initial/',
'incl/form-examples/sum-to-count-responses/',
'search/'
-]
\ No newline at end of file
+]
diff --git a/docs/openrosa-form-list.rst b/docs/openrosa-form-list.rst
index 12820005c..762fbe231 100644
--- a/docs/openrosa-form-list.rst
+++ b/docs/openrosa-form-list.rst
@@ -208,6 +208,7 @@ Elements within ````
- ```` The unique un-rooted file path for this media file. This un-rooted path must not start with a drive name or slash and must not contain relative path navigations (for example, ``.`` or ``..``).
- ```` The hash value of the media file available for download. The only hash values currently supported are MD5 hashes of the file contents; they are prefixed by ``md5:``. If the hash value identified in the manifest differs from the hash value for a previously-downloaded media file, then the file should be re-fetched from the server.
- ```` A fully qualified URI for downloading the media file to the device. It may be a valid http or https URI of any structure; the server may require authentication; the server may require a secure (https) channel, etc.
+- ```` A fully qualified URI for using the :doc:`Integrity API ` for this media file. This is optional, but must be present if the media file has the ``type`` attribute with the value ``entityList``.
```` attributes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/docs/openrosa-integrity.md b/docs/openrosa-integrity.md
new file mode 100644
index 000000000..d0540372d
--- /dev/null
+++ b/docs/openrosa-integrity.md
@@ -0,0 +1,44 @@
+# Integrity API
+
+This standard defines how clients can check the integrity of entity lists that are attached to forms as media files.
+
+## Integrity request
+
+Integrity requests can be made with an HTTP `GET` request to the server provided integrity URL with a comma-separated `id` query parameter specifying the ids of entities being checked. For example:
+
+```
+https://example.com/integrity?id=1,2,3
+```
+
+This request will return an integrity document.
+
+### Integrity document
+
+The structure of the integrity document returned by an integrity request is as follows:
+
+```xml
+
+
+
+
+ deleted>true
+
+
+ false
+
+
+
+```
+
+This document consists of:
+
+- A top-level `` tag in the `http://openrosa.org/xforms/xformsIntegrity` namespace enclosing:
+ - zero or more `` tags containing a exactly one `` tag
+
+#### Elements with ``
+
+- `` should contain `true` if the entity has been deleted on the server, and `false` if not
+
+#### `` attributes
+
+- `id`: id of the entity
diff --git a/docs/openrosa.rst b/docs/openrosa.rst
index 4d940369e..b4f493920 100644
--- a/docs/openrosa.rst
+++ b/docs/openrosa.rst
@@ -23,3 +23,4 @@ OpenRosa 1.0 APIs were formally approved by the OpenRosa Working Group in Decemb
openrosa-authentication
openrosa-form-submission
openrosa-form-list
+ openrosa-integrity
diff --git a/requirements.txt b/requirements.txt
index 0a9a64112..c9d2bf4a0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -13,3 +13,4 @@ pyyaml
sphinxext-opengraph
sphinx-notfound-page
sphinx-sitemap
+myst-parser