* 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.
47 lines
1.5 KiB
HTML
47 lines
1.5 KiB
HTML
{{/*
|
|
|
|
For complex objects, example content is sometimes attached to the
|
|
object's individual properties (and subproperties...), so to get
|
|
a complete example for the whole object we need to iterate through
|
|
its properties (and subproperties...) and assemble them.
|
|
|
|
That's what this template does.
|
|
|
|
*/}}
|
|
|
|
{{ $this_object := partial "json-schema/resolve-allof" . }}
|
|
|
|
{{ $example := $this_object.example }}
|
|
|
|
{{ if eq $this_object.type "object" }}
|
|
{{ if not $example }}
|
|
{{ $example = dict }}
|
|
{{ end }}
|
|
|
|
{{ range $key, $property := $this_object.properties}}
|
|
{{ $this_property_example := partial "json-schema/resolve-example" $property }}
|
|
{{ if $this_property_example }}
|
|
{{ $example = merge (dict $key $this_property_example) $example }}
|
|
{{ end }}
|
|
{{ end }}
|
|
|
|
{{ else if eq $this_object.type "array" }}
|
|
|
|
{{ if not $example }}
|
|
{{/* the "items" within an array can either be an object (where we have a
|
|
list of items which match the schema), or a list (for tuple
|
|
validation, where each item has a different schema).
|
|
|
|
TODO: support tuple validation here.
|
|
*/}}
|
|
{{ if reflect.IsMap $this_object.items }}
|
|
{{ $items_example := partial "json-schema/resolve-example" $this_object.items }}
|
|
{{ $example = slice $items_example }}
|
|
{{ else }}
|
|
{{ $example = slice }}
|
|
{{ end }}
|
|
{{ end }}
|
|
|
|
{{ end }}
|
|
|
|
{{ return $example }}
|