* Fix rendering of response examples Fixes the autogeneration of JSON examples for array objects. This fixes a number of "Specification error: Example invalid or not present" errors in the rendered spec. * Unbreak examples for non-objects/arrays The previous change had broken auto-generated examples for everything that wasn't an object or array; fix it up again. * Remove conditions on $example Everything should now have a generated example, so the condition is redundant. Furthermore it was suppressing examples for APIs where the example was an empty dict.
61 lines
2.2 KiB
HTML
61 lines
2.2 KiB
HTML
{{/*
|
|
|
|
Render the request part of a single HTTP API operation, given:
|
|
|
|
* `parameters`: OpenAPI/Swagger data specifying the parameters
|
|
* `path`: the path where this definition was found, to enable us to resolve "$ref"
|
|
|
|
This template renders:
|
|
* the "simple parameters" (header, path, query parameters)
|
|
* body parameters, which may be more complex, containing nested objects
|
|
* response body examples
|
|
|
|
*/}}
|
|
|
|
{{ $parameters := .parameters }}
|
|
{{ $path := .path }}
|
|
|
|
<h2>Request</h2>
|
|
|
|
{{ if $parameters }}
|
|
|
|
{{ $simple_parameters := where $parameters "in" "!=" "body"}}
|
|
{{ if $simple_parameters }}
|
|
<h3>Request parameters</h3>
|
|
|
|
{{ partial "openapi/render-parameters" (dict "parameters" $simple_parameters "type" "header" "caption" "header parameters") }}
|
|
{{ partial "openapi/render-parameters" (dict "parameters" $simple_parameters "type" "path" "caption" "path parameters") }}
|
|
{{ partial "openapi/render-parameters" (dict "parameters" $simple_parameters "type" "query" "caption" "query parameters") }}
|
|
|
|
{{ end }}
|
|
|
|
{{ $body_parameters := where $parameters "in" "body"}}
|
|
{{ if $body_parameters }}
|
|
<h3>Request body</h3>
|
|
|
|
{{/* at most one body param is allowed by the spec */}}
|
|
{{ $body_parameter := index $body_parameters 0 }}
|
|
{{ $schema := partial "json-schema/resolve-refs" (dict "schema" $body_parameter.schema "path" $path) }}
|
|
{{ $schema := partial "json-schema/resolve-allof" $schema }}
|
|
|
|
{{ $additional_types := partial "json-schema/resolve-additional-types" $schema }}
|
|
{{ $additional_types = uniq $additional_types }}
|
|
{{ range $additional_types }}
|
|
{{ partial "openapi/render-object-table" (dict "caption" .title "properties" .properties "required" .required) }}
|
|
{{ end }}
|
|
|
|
<h3>Request body example</h3>
|
|
|
|
{{ $example := partial "json-schema/resolve-example" $schema }}
|
|
{{ $example_json := jsonify (dict "indent" " ") $example }}
|
|
{{ $example_json = replace $example_json "\\u003c" "<" }}
|
|
{{ $example_json = replace $example_json "\\u003e" ">" | safeHTML }}
|
|
|
|
```json
|
|
{{ $example_json }}
|
|
```
|
|
{{ end }}
|
|
|
|
{{ else }}
|
|
<p>No request parameters or request body.</p>
|
|
{{ end }}
|