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