https://github.com/fsprojects/swaggerprovider
F# generative Type Provider for Swagger
https://github.com/fsprojects/swaggerprovider
fsharp openapi openapi2 openapi3 swagger typeprovider
Last synced: 6 days ago
JSON representation
F# generative Type Provider for Swagger
- Host: GitHub
- URL: https://github.com/fsprojects/swaggerprovider
- Owner: fsprojects
- License: unlicense
- Created: 2015-03-25T12:54:10.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2026-05-16T09:21:20.000Z (7 days ago)
- Last Synced: 2026-05-16T11:33:53.233Z (6 days ago)
- Topics: fsharp, openapi, openapi2, openapi3, swagger, typeprovider
- Language: F#
- Homepage: https://fsprojects.github.io/SwaggerProvider/
- Size: 4.5 MB
- Stars: 276
- Watchers: 9
- Forks: 60
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
- Agents: AGENTS.md
Awesome Lists containing this project
README
# SwaggerProvider
[](https://www.nuget.org/packages/SwaggerProvider)
[](https://www.nuget.org/packages/SwaggerProvider)
[](http://unlicense.org/)
**SwaggerProvider** is an F# library of generative [Type Providers](https://learn.microsoft.com/en-us/dotnet/fsharp/tutorials/type-providers/) that auto-generate strongly-typed HTTP client code from [OpenAPI 3.0](https://swagger.io/specification/) and [Swagger 2.0](https://swagger.io/specification/v2/) schemas — no code generation step required.
📚 **Full documentation:**
## Quick Start
```fsharp
#r "nuget: SwaggerProvider"
open SwaggerProvider
let [] Schema = "https://petstore.swagger.io/v2/swagger.json"
type PetStore = OpenApiClientProvider
let client = PetStore.Client()
client.GetInventory() |> Async.AwaitTask |> Async.RunSynchronously
```
## Features
- **Compile-Time Types** — generated at compile time directly from live or local schema files, no separate codegen step needed
- Supports **OpenAPI 3.0** and **Swagger 2.0** schemas in JSON and YAML formats
- **Works Everywhere** — F# scripts, .NET projects, and F# Interactive with full IntelliSense and type-checking
- **SSRF Protection** — blocks HTTP and private IP addresses by default to prevent server-side request forgery attacks
- **CancellationToken Support** — every generated method accepts an optional CancellationToken for cancelling long-running requests
- **Fully Customizable** — bring your own HttpClient, DelegatingHandler, or override JSON serialization
## Installation
```bash
dotnet add package SwaggerProvider
```
## Key Parameters
| Parameter | Default | Description |
|-----------|---------|-------------|
| `Schema` | *(required)* | URL or file path to the OpenAPI/Swagger schema |
| `SsrfProtection` | `true` | Block HTTP and private IPs to prevent SSRF attacks |
| `PreferNullable` | `false` | Use `Nullable<_>` instead of `Option<_>` for optional fields |
| `PreferAsync` | `false` | Generate `Async<'T>` instead of `Task<'T>` |
| `IgnoreControllerPrefix` | `true` | Generate a single client class for all operations |
| `IgnoreOperationId` | `false` | Generate method names from paths instead of operation IDs |
| `IgnoreParseErrors` | `false` | Continue generation even when the parser reports schema warnings |
See the [full documentation](https://fsprojects.github.io/SwaggerProvider/) for more details and examples.
## Maintainer(s)
- [@sergey-tihon](https://github.com/sergey-tihon)
The default maintainer account for projects under "fsprojects" is [@fsprojectsgit](https://github.com/fsprojectsgit) — F# Community Project Incubation Space.