<style>
  .md-content__button {
    display: none;
  }
</style>
# SAT {{ name | replace("_", " ") }} Specification


## Spec

The specification for {{ name | replace("_", " ") }} has the following fields.

!!! warning ""

    The specification is not entirely finalised or fixed. Field names and types
    may change over the course of the project.

{% if fields %}

{% for key, value in fields.items() if not value.hide -%}

{% if value.capabilities is defined -%}
### {{ key }} { #{{ key | lower | replace("_", "-") | replace("*", "") }} }

{{ (value.description) }}
{% if value.props %}
**Properties**
{% for item in value.props %}
`{{ item.name }}`

:   {% if item.type or (item.required is defined and item.required == True) %}*{{ item.type }}*{% if item.required is defined and item.required == True %} **(required)**{% endif %}<br>
    {% endif %}{{ (item.description | indent(4, False)) }}
{% endfor %}
{% endif %}
**Capabilities**
{% for cap in value.capabilities %}
`{{ cap.name }}`

:   {% if cap.description %}{{ (cap.description | indent(4, False)) }}
    {% endif %}{% for item in cap.fields %}
    `{{ item.name }}`

    :   {% if item.type or (item.required is defined and item.required == True) %}*{{ item.type }}*{% if item.required is defined and item.required == True %} **(required)**{% endif %}<br>
        {% endif %}{{ (item.description | indent(8, False)) }}{% if item.default %}<br>
        **default**: *{{ item.default }}*{% endif %}
    {% endfor %}
{% endfor %}
{% else -%}
`{{ key }}`{ #{{ key | lower | replace("_", "-") | replace("*", "") }} }

:   {% if value.type or (value.required is defined and value.required == True) or (value.schema is defined and value.schema) %}*{{ value.type if value.type is defined else "" }} {{ "of [" + value.schema + "](#types." + value.schema | lower + ")" if value.schema is defined and value.schema else "" }}*{% if value.required is defined and value.required == True %} **(required)**{% endif %}<br>
    {% endif %}{{ (value.description | indent(4, False)) }}

{% endif -%}
{% endfor %}
{% endif %}

{% if types %}
## Types

{% for key, value in types.items() %}

`{{ key }}`{ #types.{{ key | lower | replace("_", "-") | replace("*", "") }} }

:   {{ (value.description | indent(4, False)) }}
    {% for item in value.fields %}
    `{{ item.name }}`

    :   {% if item.type or (item.required is defined and item.required == True) %}*{{ item.type if item.type is defined else "" }}*{% if item.required is defined and item.required == True %} **(required)**{% endif %}<br>
        {% endif %}{{ (item.description | indent(8, False)) }}
    {% endfor %}

{% endfor %}

{% if show_primitives %}
`string`{ #types.string }

:   Primitive string type

`map`{ #types.map }

:   Primitive map type

`list`{ #types.list }

:   Primitive list type
{% endif %}
{% endif %}