JSON Schema Directives¶
- .. jsonschema::¶
The core
jsonschema
directive, mainatined in the sphinxcontrib-jsonschema repository.The exact output of this is somewhat specific to the OCDS usecases, so we subclass the directive to create alternatives for other data standards, see below.
Source:
```{eval-rst} .. jsonschema:: _static/example_schema.json ```
Output:
Title
Description
Type
Format
Required
id
string
Required
Identifier
An identifier
foo
integer
Foo bar
Foo bar baz bar baz bar baz bar baz. Bar foo baz foo bar. Baz bar foo bar foo bar foo bar foo.
when
string
date-time
Required
When
When did this thing happen
lorem
string
Lorem ipsum
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur porttitor urna in diam ornare luctus. Donec accumsan sit amet velit id auctor. Sed commodo elit ut tempor suscipit. Fusce volutpat malesuada felis, accumsan molestie nisi aliquet non. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Some markdown.
subthings
array[object]
SubThing
Description of SubThing
subthings/0/id
string
Required
Identifier
An identifier for this subthing
subthings/0/example
string
Example
An example field
- .. jsonschema-titles::¶
Display titles, but not field names.
Currently only used for 360Giving.
Source:
```{eval-rst} .. jsonschema-titles:: _static/example_schema.json ```
Output:
Title
Description
Type
Required
Identifier
An identifier
string
True
Foo bar
Foo bar baz bar baz bar baz bar baz. Bar foo baz foo bar. Baz bar foo bar foo bar foo bar foo.
integer
False
When
When did this thing happen
date-time
True
Lorem ipsum
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur porttitor urna in diam ornare luctus. Donec accumsan sit amet velit id auctor. Sed commodo elit ut tempor suscipit. Fusce volutpat malesuada felis, accumsan molestie nisi aliquet non. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Some markdown.
string
False
Source:
```{eval-rst} .. jsonschema-titles:: _static/example_schema.json :child: subthings ```
Output:
Description of SubThing
Title
Description
Type
Required
SubThing:Identifier
An identifier for this subthing
string
True
SubThing:Example
An example field
string
False
- .. jsonschema-title-fieldname-map::¶
Display the mapping between titles and field names.
Currently only used for 360Giving.
Source:
```{eval-rst} .. jsonschema-title-fieldname-map:: _static/example_schema.json ```
Output:
Title
Name
Type
Identifier
id
string
Foo bar
foo
integer
When
when
date-time
Lorem ipsum
lorem
string
SubThing:Identifier
subthings/0/id
string
SubThing:Example
subthings/0/example
string
- .. jsonschema-array::¶
Handle a jsonschema where the top element is an array. Don’t display titles in the table.
Currently only used for OpenReferral.
Source:
```{eval-rst} .. jsonschema-array:: _static/example_schema_array.json ```
Output:
Description
Type
Required
id
An identifier
string
True
foo
Foo bar baz bar baz bar baz bar baz. Bar foo baz foo bar. Baz bar foo bar foo bar foo bar foo.
integer
False
when
When did this thing happen
date-time
True
lorem
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur porttitor urna in diam ornare luctus. Donec accumsan sit amet velit id auctor. Sed commodo elit ut tempor suscipit. Fusce volutpat malesuada felis, accumsan molestie nisi aliquet non. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
string
False
subthings/0/id
An identifier for this subthing
string
True
subthings/0/example
An example field
string
False
CSS¶
To display the tables better, add this css to your site: jsonschema.css. You need to add the file to a _static
folder within your docs, and then add the following to _templates/layout.html
.
{% extends "!layout.html" %}
{% set css_files = css_files + ["_static/jsonschema.css"] %}