{% from "macro_restriction.html" import restriction with context %} {%- macro tabbed_section(operator, current_node) -%} {% include "tabbed_section.html" %} {%- endmacro -%} {%- macro content(schema, description="") -%} {% set keys = schema.keywords %} {%- set description = (schema | get_description) if not description else description -%} {%- if schema.should_be_a_link(config) -%} {# There can be a description next to $ref, so let's display it. Fallback to description of referenced element #} {% include "section_description.html" %} Same definition as {{ schema.refers_to.html_id }} {%- elif schema.refers_to -%} {{ content(schema.refers_to, description) }} {%- else -%} {# Get the content of keywords, rejecting those that are under "properties" or "patternProperties" #} {%- set kw_all_of = schema.get_keyword("allOf") -%} {%- set kw_any_of = schema.get_keyword("anyOf") -%} {%- set kw_one_of = schema.get_keyword("oneOf") -%} {%- set kw_not = schema.get_keyword("not") -%} {%- set kw_if = schema.get_keyword("if") -%} {%- set kw_else = schema.get_keyword("else") -%} {%- set kw_then = schema.get_keyword("then") -%} {%- set kw_enum = schema.get_keyword("enum") -%} {%- set kw_const = schema.get_keyword("const") -%} {%- set kw_pattern = schema.get_keyword("pattern") -%} {%- set kw_properties = schema.get_keyword("properties") -%} {%- set kw_pattern_properties = schema.get_keyword("patternProperties") -%} {%- set kw_additional_properties = schema.get_keyword("additionalProperties") -%} {# Handle having oneOf or allOf with only one condition #} {%- if kw_all_of and (kw_all_of.array_items | length) == 1 -%} {% include "section_description.html" %} {{ content(kw_all_of.array_items[0]) }} {%- elif kw_any_of and (kw_any_of.array_items | length) == 1 -%} {% include "section_description.html" %} {{ content(kw_any_of.array_items[0]) }} {%- else -%} {# Resolve type #} {%- set type_name = schema | get_type_name -%} {# Display type #} {%- if not schema is combining -%} Type: {{ type_name }} {%- endif -%} {%- set default_value = schema | get_default -%} {%- if default_value -%} {{ " " }}Default: {{ default_value }} {%- endif -%} {%- if kw_additional_properties and kw_additional_properties.literal == False -%} {{ " " }}No Additional Properties {%- endif -%} {% include "section_description.html" %} {# Combining: allOf, anyOf, oneOf, not #} {%- if kw_all_of -%} {% set current_node = keys["allOf"] %}
{{ tabbed_section("allOf", current_node) }}
{%- endif -%} {%- if kw_any_of -%} {% set current_node = keys["anyOf"] %}
{{ tabbed_section("anyOf", current_node) }}
{%- endif -%} {%- if kw_one_of -%} {% set current_node = keys["oneOf"] %}
{{ tabbed_section("oneOf", current_node) }}
{%- endif -%} {%- if kw_not -%} {% include "section_not.html" %} {%- endif -%} {# Enum and const #} {%- if kw_enum -%}

Must be one of:

{%- endif -%} {%- if kw_const -%} Specific value: {{ kw_const.literal | python_to_json }} {%- endif -%} {# Pattern (Regular Expression) #} {%- if kw_pattern -%} Must match regular expression: {{ kw_pattern.literal | escape }} {%- endif -%} {# Conditional subschema, or if-then-else section #} {%- if kw_if and (kw_then or kw_else) -%} {% include "section_conditional_subschema.html" %} {%- endif -%} {# Required properties that are not defined under "properties". They will only be listed #} {% include "section_undocumented_required_properties.html" %} {# Show the requested type(s) #} {% include "badge_type.html" %} {# Show array restrictions #} {%- if type_name.startswith("array") -%} {% include "section_array.html" %} {%- endif -%} {# Display examples #} {%- set examples = schema.examples -%} {%- if examples -%} {% include "section_examples.html" %} {%- endif -%} {%- set required_properties = schema | get_required_properties -%} {%- if kw_properties -%} {% set is_pattern_property = False %} {% set is_additional_properties = False %} {%- for sub_property_name, sub_property in kw_properties.keywords.items() -%} {% include "section_properties.html" %} {%- endfor -%} {%- endif -%} {%- if kw_pattern_properties -%} {% set is_pattern_property = True %} {% set is_additional_properties = False %} {%- for sub_property_name, sub_property in kw_pattern_properties.keywords.items() -%} {% include "section_properties.html" %} {%- endfor -%} {%- endif -%} {%- if kw_additional_properties and kw_additional_properties.literal != False -%} {%- set is_pattern_property = False -%} {%- set is_additional_properties = True -%} {%- set additional_properties_schema = kw_additional_properties.literal != True -%} {%- set sub_property_name = "Additional Properties" -%} {%- set sub_property = kw_additional_properties -%} {% include "section_properties.html" %} {%- endif -%} {%- endif -%} {%- endif -%} {%- endmacro -%}