{{/*

  Render a single HTTP API operation: that is, a method+endpoint combination, given:

  * `method`: the method, e.g. GET, PUT
  * `endpoint`: the endpoint
  * `operation_data`: the OpenAPI/Swagger data for the operation
  * `path`: the path where this definition was found, to enable us to resolve "$ref"

  This template renders the operation as a `<section>` containing:

    * an `<h1>` heading containing the method and endpoint
    * a `<details>` element containing the details, including:
      * operation description
      * basic info about the operation
      * request details
      * response details

*/}}

{{ $method := .method }}
{{ $endpoint := .endpoint }}
{{ $operation_data := .operation_data }}
{{ $path := .path }}

<section class="rendered-data http-api {{ $method }}">

<details {{ if not site.Params.ui.rendered_data_collapsed }}open{{ end }}>
<summary>

  <h1 id="{{ lower $method }}{{ anchorize $endpoint }}">
   <span class="http-api-method {{ $method }}">{{ $method }}</span>
   <span class="endpoint{{ if $operation_data.deprecated }} deprecated-inline{{ end }}">{{ $endpoint }}</span>
  </h1>

  <hr/>

{{ if $operation_data.deprecated }}
    {{ partial "alert" (dict "type" "warning" "omit_title" "true" "content" "This API is deprecated and will be removed from a future release.") }}
{{ end }}

{{ if (index $operation_data "x-addedInMatrixVersion") }}
  {{ partial "added-in" (dict "v" (index $operation_data "x-addedInMatrixVersion")) }}
{{ end }}
{{ if (index $operation_data "x-changedInMatrixVersion") }}
  {{ partial "changed-in" (dict "changes_dict" (index $operation_data "x-changedInMatrixVersion")) }}
{{ end -}}

<p>{{ $operation_data.description | markdownify }}</p>

</summary>

<table class="basic-info">
  <tr>
   <th>Rate-limited:</th>
   {{ $rate_limited := index $operation_data.responses "429" }}
   <td>{{ if $rate_limited }}Yes{{ else }}No{{ end }}</td>
  </tr>
 <tr>
  <th>Requires authentication:</th>
  <td>{{ if $operation_data.security }}Yes{{ else }}No{{ end }}</td>
 </tr>
</table>

<hr/>
{{ partial "openapi/render-request"   (dict "parameters" $operation_data.parameters "path" $path) }}
<hr/>
{{ partial "openapi/render-responses" (dict "responses"  $operation_data.responses  "path" $path) }}

</details>

</section>
