diff --git a/layouts/partials/openapi/render-object-table.html b/layouts/partials/openapi/render-object-table.html index 6caca3756..e78dd901c 100644 --- a/layouts/partials/openapi/render-object-table.html +++ b/layouts/partials/openapi/render-object-table.html @@ -94,24 +94,21 @@ {{ end }} - {{/* NB: the OpenAPI spec says "Consistent with JSON Schema, additionalProperties - defaults to true." Our schemas tend to omit additionalProperties; I think we - effectively assume it defaults to false. Therefore: we only output regarding - additionalProperties if it is explicitly set (i.e. is non-nil). */}} + {{/* Additional properties should either be an OpenAPI schema object, or a + boolean. If it's the former, look for a `description` and render it as a note. + If it's `true`, do nothing. If it's `false`, raise a build-time error: + "Everything is extensible in Matrix unless otherwise noted". */}} {{ if (ne $additionalProperties nil )}} {{ if (and (reflect.IsMap $additionalProperties)) -}} {{ if (index $additionalProperties "description") -}} -May have additional properties: {{ $additionalProperties.description }} +Notes on additional properties: {{ $additionalProperties.description }} {{ end }} - {{/* TODO: should we handle the case where additional properties are permitted, - but must follow an explicit schema? */}} - {{ else if $additionalProperties -}} -May have additional properties. + {{/* TODO: should we handle the case where additional properties are + permitted, but must follow an explicit schema? */}} {{ else if (not $additionalProperties) -}} - {{/* At present we don't have any schema with additionalProperties: false. - But if we ever do, let's support it. */}} + {{ errorf "Unexpected additionalProperties=false for %s" $caption }} May **not** have additional properties. {{ end }}