--- title: openapi3.Unmarshal description: Unmarshals the given resource into an OpenAPI 3 document. categories: [] keywords: [] action: aliases: [] related: [] returnType: openapi3.OpenAPIDocument signatures: ['openapi3.Unmarshal RESOURCE'] --- Use the `openapi3.Unmarshal` function with [global], [page], or [remote] resources. [global]: /getting-started/glossary/#global-resource [page]: /getting-started/glossary/#page-resource [remote]: /getting-started/glossary/#remote-resource [OpenAPI]: https://www.openapis.org/ For example, to work with a remote [OpenAPI] definition: ```go-html-template {{ $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: ```go-html-template
{{ debug.Dump $api }}
``` To list the GET and POST operations for each of the API paths: ```go-html-template {{ range $path, $details := $api.Paths }}

{{ $path }}

{{ with $details.Get }}
GET
{{ .Summary }}
{{ end }} {{ with $details.Post }}
POST
{{ .Summary }}
{{ end }}
{{ end }} ``` Hugo renders this to: ```html

/pets

GET
List all pets
POST
Create a pet

/pets/{petId}

GET
Info for a specific pet
```