Skip to content

Commit eba398d

Browse files
authored
feat: Microsoft.OpenApi v2.x (OpenAPI v3.1 Support) and .NET 10 (#269)
* feat: update tools and readme * hk: deps update & Microsoft.OpenApi 2.3 * migrate v3 provider to new api * small fixes for test server * feat: pre-release swashbuckle * feat: add yaml schema format support * refact selectors * fix: one null ref * fix: few more errors * fix: unit tests * update deps * fix: schema generation * feat: update to net20 * feat: update notes * fix: update version * fix: downgrade microsoft.openapi to v2 (supported by aspnet.core .net10) * fix: but runtime for net10 * feat: update deps * fix: paket lock * fixes by Claude Opus 4.5 * fix: update release notes * fix: support allOf with one element
1 parent ffe4428 commit eba398d

29 files changed

+509
-434
lines changed

.config/dotnet-tools.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@
33
"isRoot": true,
44
"tools": {
55
"paket": {
6-
"version": "9.0.2",
6+
"version": "10.0.0-alpha011",
77
"commands": [
88
"paket"
99
],
1010
"rollForward": false
1111
},
1212
"dotnet-serve": {
13-
"version": "1.10.175",
13+
"version": "1.10.190",
1414
"commands": [
1515
"dotnet-serve"
1616
],
1717
"rollForward": false
1818
},
1919
"fantomas": {
20-
"version": "7.0.3",
20+
"version": "7.0.5",
2121
"commands": [
2222
"fantomas"
2323
],

.github/workflows/dotnetcore.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ jobs:
1818

1919
steps:
2020
- uses: actions/checkout@v1
21-
- name: Setup .NET 9.0 SDK
21+
- name: Setup .NET 10.0 SDK
2222
uses: actions/setup-dotnet@v4
2323
with:
24-
dotnet-version: "9.0.x"
24+
dotnet-version: "10.0.x"
2525
- name: Install local tools
2626
run: dotnet tool restore
2727
- name: Paket Restore

AGENTS.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
- **Format Check**: `dotnet fake build -t CheckFormat` (validates Fantomas formatting)
55
- **Format**: `dotnet fake build -t Format` (applies Fantomas formatting)
66
- **All Tests**: `dotnet fake build -t RunTests` (builds + starts test server + runs all tests)
7-
- **Unit Tests Only**: `dotnet build && dotnet tests/SwaggerProvider.Tests/bin/Release/net9.0/SwaggerProvider.Tests.dll`
7+
- **Unit Tests Only**: `dotnet build && dotnet tests/SwaggerProvider.Tests/bin/Release/net10.0/SwaggerProvider.Tests.dll`
88
- **Provider Tests (Integration)**:
99
1. Build test server: `dotnet build tests/Swashbuckle.WebApi.Server/Swashbuckle.WebApi.Server.fsproj -c Release`
10-
2. Start server in background: `dotnet tests/Swashbuckle.WebApi.Server/bin/Release/net9.0/Swashbuckle.WebApi.Server.dll`
10+
2. Start server in background: `dotnet tests/Swashbuckle.WebApi.Server/bin/Release/net10.0/Swashbuckle.WebApi.Server.dll`
1111
3. Build tests: `dotnet build SwaggerProvider.TestsAndDocs.sln -c Release`
12-
4. Run tests: `dotnet tests/SwaggerProvider.ProviderTests/bin/Release/net9.0/SwaggerProvider.ProviderTests.dll`
12+
4. Run tests: `dotnet tests/SwaggerProvider.ProviderTests/bin/Release/net10.0/SwaggerProvider.ProviderTests.dll`
1313
- **Single Test**: Run via xunit runner: `dotnet [assembly] [filter]`
1414

1515
## Code Style Guidelines
1616

17-
**Language**: F# (net9.0 target framework)
17+
**Language**: F# (net10.0 target framework)
1818

1919
**Imports & Namespaces**:
2020

@@ -60,4 +60,4 @@
6060

6161
- Type Providers use `ProvidedApiClientBase` and compiler pipeline (DefinitionCompiler, OperationCompiler)
6262
- SSRF protection enabled by default; disable with `SsrfProtection=false` static parameter
63-
- Target net9.0; use implicit async/await (task expressions)
63+
- Target net10.0; use implicit async/await (task expressions)

README.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# SwaggerProvider [![NuGet Badge](https://buildstats.info/nuget/SwaggerProvider)](https://www.nuget.org/packages/SwaggerProvider)
1+
# SwaggerProvider
22

3-
This SwaggerProvider can be used to access RESTful API generated using [Swagger.io](http://swagger.io)
3+
![NuGet Version](https://badgen.net/nuget/v/SwaggerProvider) ![NuGet Downloads](https://badgen.net/nuget/dt/SwaggerProvider)
44

5-
[![Build Status](https://github.com/fsprojects/SwaggerProvider/workflows/Build%20and%20Test/badge.svg?branch=master)](https://github.com/fsprojects/SwaggerProvider/actions?query=branch%3Amaster)
5+
This SwaggerProvider can be used to access RESTful API generated using [Swagger.io](http://swagger.io)
66

7-
Documentation: http://fsprojects.github.io/SwaggerProvider/
7+
Documentation: <http://fsprojects.github.io/SwaggerProvider/>
88

99
**Security:** SSRF protection is enabled by default. For local development, use static parameter `SsrfProtection=false`.
1010

@@ -13,10 +13,8 @@ Documentation: http://fsprojects.github.io/SwaggerProvider/
1313
Swagger is available for ASP.NET WebAPI APIs with [Swashbuckle](https://github.com/domaindrivendev/Swashbuckle).
1414
Also possible to [Create an ASP.NET API app in Azure App Service](https://azure.microsoft.com/en-us/documentation/articles/app-service-dotnet-create-api-app/)
1515

16-
1716
## Maintainer(s)
1817

1918
- [@sergey-tihon](https://github.com/sergey-tihon)
2019

2120
The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)
22-

build.fsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ let webApiInputStream = StreamRef.Empty
9191
Target.create "StartServer" (fun _ ->
9292
Target.activateFinal "StopServer"
9393

94-
CreateProcess.fromRawCommandLine "dotnet" "tests/Swashbuckle.WebApi.Server/bin/Release/net9.0/Swashbuckle.WebApi.Server.dll"
94+
CreateProcess.fromRawCommandLine "dotnet" "tests/Swashbuckle.WebApi.Server/bin/Release/net10.0/Swashbuckle.WebApi.Server.dll"
9595
|> CreateProcess.withStandardInput(CreatePipe webApiInputStream)
9696
|> Proc.start
9797
|> ignore
@@ -116,9 +116,9 @@ Target.create "BuildTests" (fun _ -> dotnet "build" "SwaggerProvider.TestsAndDoc
116116
let runTests assembly =
117117
dotnet $"{assembly}" ""
118118

119-
Target.create "RunUnitTests" (fun _ -> runTests "tests/SwaggerProvider.Tests/bin/Release/net9.0/SwaggerProvider.Tests.dll")
119+
Target.create "RunUnitTests" (fun _ -> runTests "tests/SwaggerProvider.Tests/bin/Release/net10.0/SwaggerProvider.Tests.dll")
120120

121-
Target.create "RunIntegrationTests" (fun _ -> runTests "tests/SwaggerProvider.ProviderTests/bin/Release/net9.0/SwaggerProvider.ProviderTests.dll")
121+
Target.create "RunIntegrationTests" (fun _ -> runTests "tests/SwaggerProvider.ProviderTests/bin/Release/net10.0/SwaggerProvider.ProviderTests.dll")
122122

123123
Target.create "RunTests" ignore
124124

docs/RELEASE_NOTES.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
#### 3.0.0-beta02 - Dec 22, 2025
1+
#### 3.0.0-beta03 - Dec 24, 2025
22

3-
- Server-Side Request Forgery (SSRF) protection for IP V4 (#271) and V6 (#272)
3+
- feat: Microsoft.OpenApi v2.x with OpenAPI v3.1 Support
4+
- feat: Server-Side Request Forgery (SSRF) protection for IP V4 (#271) and V6 (#272)
45
- feat: handle text/plain payload types (#276)
6+
- fix: removed dependency on Microsoft.OpenApi.Readers
57
- fix: error messages when `operationId` is not provided (minimal api) (#277)
8+
- hk: dependencies update
69

710
#### 2.3.2 - Oct 11, 2025
811

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"sdk": {
3-
"version": "9.0.101",
3+
"version": "10.0.100",
44
"rollForward": "minor"
55
}
66
}

paket.dependencies

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
version 8.0.3
1+
version 9.0.2
22
source https://api.nuget.org/v3/index.json
33
storage: none
44

5-
nuget FSharp.Core ~> 6 // We need task{} CE from F# 6.0
6-
nuget System.Text.Json ~> 6
5+
nuget FSharp.Core ~> 8
6+
nuget System.Text.Json ~> 8
77
nuget FSharp.SystemTextJson
8-
nuget Microsoft.OpenApi.Readers
8+
nuget Microsoft.OpenApi ~> 2 # https://github.com/microsoft/OpenAPI.NET/blob/main/CONTRIBUTING.md#branches-and-support-policy
9+
nuget Microsoft.OpenApi.YamlReader
910
nuget NETStandard.Library.NETFramework
1011

1112
# delete when we drop custom parser for v2
@@ -20,26 +21,26 @@ github fsprojects/FSharp.Data:main src/FSharp.Data.Runtime.Utilities/NameUtils.f
2021

2122
group Server
2223
source https://api.nuget.org/v3/index.json
23-
framework: net9.0
24+
framework: net10.0
2425

2526
nuget Microsoft.AspNetCore
2627
nuget Microsoft.AspNetCore.Mvc
2728
nuget Microsoft.AspNetCore.HttpsPolicy
2829
nuget Swashbuckle.AspNetCore
29-
nuget Microsoft.OpenApi
30+
nuget Microsoft.OpenApi ~> 2
3031
nuget FSharp.Core
3132
nuget System.Text.Json
3233

3334

3435
group Test
3536
source https://api.nuget.org/v3/index.json
36-
frameworks: net9.0
37+
frameworks: net10.0
3738

3839
nuget FSharp.Compiler.Service
3940
nuget FSharp.Core
4041

4142
nuget Microsoft.NET.Test.Sdk
4243
nuget FsUnit.Xunit
4344

44-
nuget Microsoft.OpenApi.Readers redirects: force
45+
nuget Microsoft.OpenApi ~> 2
4546
nuget FSharp.SystemTextJson

0 commit comments

Comments
 (0)