Skip to content

SwaggerProvider

SwaggerProvider is an F# generative Type Provider that auto-generates strongly-typed HTTP clients from OpenAPI 3.0 and Swagger 2.0 schemas — no code generation step required.

The single provider, OpenApiClientProvider, uses Microsoft.OpenApi.Readers to parse both OpenAPI and Swagger schemas in JSON and YAML formats, and works on net8.0+.

Getting Started

F# Interactive

Create a new F# script file (e.g. openapi.fsx) and paste:

fsharp
#r "nuget: SwaggerProvider"

open SwaggerProvider

let [<Literal>] Schema = "https://petstore.swagger.io/v2/swagger.json"
type PetStore = OpenApiClientProvider<Schema>

let client = PetStore.Client()

client.GetInventory()
|> Async.AwaitTask
|> Async.RunSynchronously

New Project

bash
dotnet new console --name apiclient --language F#
cd apiclient
dotnet add package SwaggerProvider

Replace the content of Program.fs with:

fsharp
open SwaggerProvider

let [<Literal>] Schema = "https://petstore.swagger.io/v2/swagger.json"
type PetStore = OpenApiClientProvider<Schema>

[<EntryPoint>]
let main argv =
    let client = PetStore.Client()
    client.GetInventory()
    |> Async.AwaitTask
    |> Async.RunSynchronously
    |> printfn "%O"
    0

Then build and run:

bash
dotnet run

See OpenApiClientProvider for full parameter documentation and Customization for advanced scenarios.