{# Bengal OpenAPI Responses ======================== Displays API responses with status code tabs and schema information. Context: - responses: List/tuple of OpenAPIResponseMetadata or dict with: - status_code: HTTP status code (e.g., "200", "404") - description: Response description - content_type: Media type - schema_ref: Reference to response schema - schema: Inline schema (optional) - example: Example response (optional) Kida Features: - {% match %} for status code color classification - {% with %} for nil-safe optional sections - {% spaceless %} for compact tab output - Optional chaining (?.) and null coalescing (??) #} {# Status code category helper #} {% def status_category(code) %} {% let code_str = code | string %} {% match code_str | first %} {% case '2' %}success {% case '3' %}redirect {% case '4' %}client-error {% case '5' %}server-error {% case _ %}info {% end %} {% end %} {# Status code color class helper #} {% def status_color_class(code) %} {% let code_str = code | string %} {% match code_str | first %} {% case '2' %}badge--success {% case '3' %}badge--info {% case '4' %}badge--warning {% case '5' %}badge--danger {% case _ %}badge--outline {% end %} {% end %}

Responses

{# Response Tabs #} {% if responses | length > 1 %}
{% for response in responses %} {% let code = response?.status_code ?? '200' %} {% let category = status_category(code) %} {% let color_class = status_color_class(code) %} {% spaceless %} {% end %} {% end %}
{% end %} {# Response Panels #}
{% for response in responses %} {% let code = response?.status_code ?? '200' %} {% let description = response?.description ?? '' %} {% let content_type = response?.content_type %} {% let schema_ref = response?.schema_ref %} {% let inline_schema = response?.schema %} {% let example = response?.example %} {% let category = status_category(code) %}
{# Status + Description Header #}
{{ code }} {% if description %} {{ description }} {% end %}
{# Content Type #} {% with content_type as ct %}
Content-Type: {{ ct }}
{% end %} {# Schema Reference #} {% with schema_ref as ref %} {% let schema_name = ref | split('#/components/schemas/') | last %} {% end %} {# Inline Schema #} {% with inline_schema as s %} {% let schema = s %} {% let depth = 0 %} {% include 'autodoc/openapi/partials/schema-viewer.html' %} {% end %} {# Example Response #} {% with example as ex %}
Example Response
{{ ex | tojson(indent=2) }}
{% end %}
{% end %}