Skip to main content

openapi3.Unmarshal

Use the openapi3.Unmarshal function with global, page, or remote resources.

For example, to work with a remote OpenAPI definition:

{{ $url := "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/examples/v3.0/petstore.json" }}
{{ $api := "" }}
{{ with resources.GetRemote $url }}
{{ with .Err }}
{{ errorf "%s" . }}
{{ else }}
{{ $api = . | openapi3.Unmarshal }}
{{ end }}
{{ else }}
{{ errorf "Unable to get remote resource %q" $url }}
{{ end }}

To inspect the data structure:

<pre>{{ debug.Dump $api }}</pre>

To list the GET and POST operations for each of the API paths:

{{ range $path, $details := $api.Paths }}
{{ $path }}
<dl>
{{ with $details.Get }}
<dt>GET</dt>
<dd>{{ .Summary }}</dd>
{{ end }}
{{ with $details.Post }}
<dt>POST</dt>
<dd>{{ .Summary }}</dd>
{{ end }}
</dl>
{{ end }}

Hugo renders this to:

/pets
<dl>
<dt>GET</dt>
<dd>List all pets</dd>
<dt>POST</dt>
<dd>Create a pet</dd>
</dl>
/pets/{petId}
<dl>
<dt>GET</dt>
<dd>Info for a specific pet</dd>
</dl>