The `openapi` type writes ordinary Markdown pages whose bodies are three MDC
components. They are documented because they are part of the public surface — a
consumer can override any of them — not because a page has to be written by hand.

## OpenApiOverview

The document's front page: `info`, the servers, the security schemes, and the
list of tags with a count each.

| Prop        | Type       | Notes                                    |
| :---------- | :--------- | :--------------------------------------- |
| `info`      | object     | `title`, `version`, `summary`, contact   |
| `servers`   | array      | Every server the document declares       |
| `security`  | object     | The document's own requirement           |
| `schemes`   | array      | The security schemes, by name            |
| `tags`      | array      | Each with a `to`, a description, a count |

## OpenApiOperations

A tag's index: every operation under it as a row, with its method, path, summary
and whether it is deprecated.

| Prop           | Type   | Notes                                     |
| :------------- | :----- | :---------------------------------------- |
| `operations`   | array  | Method, path, kind, summary, `to`         |
| `externalDocs` | object | The tag's own link, where it has one      |

## OpenApiOperation

One endpoint: parameters, request body, responses, callbacks, and the
[try-it client](/reference/openapi/try-it).

| Prop              | Type   | Notes                                       |
| :---------------- | :----- | :------------------------------------------ |
| `operation`       | object | The compacted operation                     |
| `servers`         | array  | Resolved for this operation                 |
| `security`        | object | The operation's own requirement, or absent  |
| `securitySchemes` | array  | The schemes those requirements name         |

## Overriding one

Same as any other component the layer ships: a file at the same path in the
consuming site wins.

```
app/components/content/OpenApiOperation.vue
```

The props above are the contract. A rename here is a breaking change of the
layer.

## No heading of its own

None of the three opens on an `<h1>`. The docs shell draws the header —
breadcrumb, title, the copy control beside it — for every generated page whose
body opens on no heading, and a reference page wants exactly that: a title and a
trail like any written page.