Something went wrong. Try again.
New TLE Community website using Eleventy. tlecommunity.com
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263{#- Recursive JSON Schema renderer, styled for Tailwind Typography `prose`. Usage: {% from "partials/api-schema.njk" import schema %} {{ schema(node, apiSpec.schemas) }} `$ref` nodes are rendered as links to /developers/api/reference/schemas/ and never expanded inline, so recursion always terminates. -#}{% macro schema(node, schemas, depth) %}{%- if not node -%} <p><em>Not documented.</em></p>{%- elif node["$ref"] -%} {%- set name = node["$ref"] | apiRefName -%} {%- if schemas[name] -%} <p>Object <a href="/developers/api/reference/schemas/#{{ name }}"><code>{{ name }}</code></a>.</p> {%- else -%} <p>Object <code>{{ name }}</code>.</p> {%- endif -%}{%- elif node.properties -%} <div class="overflow-x-auto"> <table> <thead> <tr><th>Field</th><th>Type</th><th>Required</th><th>Description</th></tr> </thead> <tbody> {%- for key, prop in node.properties -%} {%- set isArray = prop.type == "array" and prop["items"] -%} {%- set ref = prop["$ref"] or (isArray and prop["items"]["$ref"]) -%} {%- set refName = ref | apiRefName -%} {%- set nested = prop.properties or (isArray and prop["items"].properties) -%} <tr> <td><code>{{ key }}</code></td> <td> {%- if refName and schemas[refName] -%} <a href="/developers/api/reference/schemas/#{{ refName }}"><code>{{ prop | apiType }}</code></a> {%- else -%} <code>{{ prop | apiType }}</code> {%- endif -%} </td> <td>{{ "yes" if key in (node.required or []) }}</td> <td> {{- prop.description -}} {%- if nested and not refName -%} <details> <summary>fields</summary> {{ schema(prop["items"] if isArray else prop, schemas, (depth or 0) + 1) }} </details> {%- endif -%} </td> </tr> {%- endfor -%} </tbody> </table> </div>{%- elif node.type == "array" -%} <p>Array of:</p> {{ schema(node["items"], schemas, (depth or 0) + 1) }}{%- else -%} <p><code>{{ node | apiType }}</code>{% if node.description %} - {{ node.description }}{% endif %}</p>{%- endif -%}{% endmacro %}