# What the SDKs cover

The generator takes OpenAPI 3.0 and 3.1. Swagger 2.0 is refused: convert it first. Whatever it can't turn into code is left out or typed as `unknown`, never guessed, and each case is a line under "Warnings" in the package's `GENERATION.md`.

## Left out

| What | Why |
| --- | --- |
| Webhooks | An SDK only calls the API. |
| Callbacks and response links | The same. |
| Cookie parameters | The SDK doesn't send cookies. |
| A header the SDK sets itself, or one that carries a credential | The client sets it. |
| A header with the same name as a query parameter | They'd be one field. |
| A path that names a parameter nothing declares, or a path parameter that isn't in the path | The method couldn't be built. |
| An API key in a cookie, and security schemes other than API keys, bearer, OAuth 2, OpenID Connect and basic | Not supported. |
| An operation with `x-latitude10-sdk.exclude`, or outside `include` and `exclude` | You asked. |

## Typed as unknown

| What | Note |
| --- | --- |
| A `$ref` to another file or a URL | Only local `$ref`s are read. |
| A `$ref` that doesn't resolve, or a chain of too many | |
| A schema nested too deeply | |
| `not`, and `patternProperties` | They can't be typed. |
| Schemas that refer to each other with no object in between | |
| A document with more schema types than the generator takes | The rest are `unknown`. |

## The operations cap

A document with more operations than the generator takes is refused with `403`, whatever the plan. Below that, a document with more operations than your plan's endpoints is refused too: use `include` or `exclude` to generate fewer. See [Plans and limits](../get-started/plans-and-limits#sdks).

## Where this comes from

- `app/sdk/_lib/model.ts`
- `app/sdk/_lib/builds.ts`
- `app/sdk/_lib/names.ts`
- `tests/fixtures/sdk/`
