Skip to content

Commit 5c56379

Browse files
Merge pull request #1729 from microsoft/mk/update-packages
Update packages
2 parents 4afdd15 + a9075aa commit 5c56379

36 files changed

+431
-400
lines changed

.azure-pipelines/ci-build.yml

+286-336
Large diffs are not rendered by default.

.github/workflows/auto-merge-dependabot.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
steps:
2020
- name: Dependabot metadata
2121
id: metadata
22-
uses: dependabot/fetch-metadata@v2.0.0
22+
uses: dependabot/fetch-metadata@v2.2.0
2323
with:
2424
github-token: "${{ secrets.GITHUB_TOKEN }}"
2525

.github/workflows/docker.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Check out the repo
1818
uses: actions/checkout@v4
1919
- name: Login to GitHub package feed
20-
uses: docker/login-action@v3.1.0
20+
uses: docker/login-action@v3.2.0
2121
with:
2222
username: ${{ secrets.ACR_USERNAME }}
2323
password: ${{ secrets.ACR_PASSWORD }}
@@ -30,13 +30,13 @@ jobs:
3030
id: getversion
3131
- name: Push to GitHub Packages - Nightly
3232
if: ${{ github.ref == 'refs/heads/vnext' }}
33-
uses: docker/build-push-action@v5.3.0
33+
uses: docker/build-push-action@v6.3.0
3434
with:
3535
push: true
3636
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:nightly
3737
- name: Push to GitHub Packages - Release
3838
if: ${{ github.ref == 'refs/heads/master' }}
39-
uses: docker/build-push-action@v5.3.0
39+
uses: docker/build-push-action@v6.3.0
4040
with:
4141
push: true
4242
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.getversion.outputs.version }}

.github/workflows/sonarcloud.yml

+3-14
Original file line numberDiff line numberDiff line change
@@ -52,28 +52,17 @@ jobs:
5252
path: ~/.sonar/cache
5353
key: ${{ runner.os }}-sonar
5454
restore-keys: ${{ runner.os }}-sonar
55-
- name: Cache SonarCloud scanner
56-
id: cache-sonar-scanner
57-
uses: actions/cache@v4
58-
with:
59-
path: ./.sonar/scanner
60-
key: ${{ runner.os }}-sonar-scanner
61-
restore-keys: ${{ runner.os }}-sonar-scanner
6255
- name: Install SonarCloud scanner
63-
if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
64-
shell: pwsh
65-
run: |
66-
New-Item -Path ./.sonar/scanner -ItemType Directory
67-
dotnet tool update dotnet-sonarscanner --tool-path ./.sonar/scanner
56+
run: dotnet tool install dotnet-sonarscanner --create-manifest-if-needed
6857
- name: Build and analyze
6958
env:
7059
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
7160
CollectCoverage: true
7261
CoverletOutputFormat: 'opencover' # https://github.com/microsoft/vstest/issues/4014#issuecomment-1307913682
7362
shell: pwsh
7463
run: |
75-
./.sonar/scanner/dotnet-sonarscanner begin /k:"microsoft_OpenAPI.NET" /o:"microsoft" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.opencover.reportsPaths="test/**/coverage.opencover.xml"
64+
dotnet tool run dotnet-sonarscanner begin /k:"microsoft_OpenAPI.NET" /o:"microsoft" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.opencover.reportsPaths="test/**/coverage.opencover.xml"
7665
dotnet workload restore
7766
dotnet build
7867
dotnet test Microsoft.OpenApi.sln --no-build --verbosity normal /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
79-
./.sonar/scanner/dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
68+
dotnet tool run dotnet-sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}"

.vscode/launch.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// If you have changed target frameworks, make sure to update the program path.
1313
"program": "${workspaceFolder}/src/Microsoft.OpenApi.Hidi/bin/Debug/net8.0/Microsoft.OpenApi.Hidi.dll",
1414
"args": ["plugin",
15-
"-m","C:\\Users\\darrmi\\src\\github\\microsoft\\openapi.net\\test\\Microsoft.OpenApi.Hidi.Tests\\UtilityFiles\\exampleapimanifest.json",
15+
"-m","${workspaceFolder}/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/exampleapimanifest.json",
1616
"--of","./output"],
1717
"cwd": "${workspaceFolder}/src/Microsoft.OpenApi.Hidi",
1818
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console

CODE_OF_CONDUCT.md

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Microsoft Open Source Code of Conduct
2+
3+
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
4+
5+
Resources:
6+
7+
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
8+
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
9+
- Contact [[email protected]](mailto:[email protected]) with questions or concerns
10+
- Employees can reach out at [aka.ms/opensource/moderation-support](https://aka.ms/opensource/moderation-support)

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,4 +133,4 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope
133133
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
134134
contact [[email protected]](mailto:[email protected]) with any additional questions or comments.
135135

136-
To provide feedback and ask questions you can use Stack Overflow with the [OpenAPI.NET](https://stackoverflow.com/questions/tagged/openapi.net) tag or use the OpenAPI.NET Slack channel which you can join by registering for the HTTP APIs team at http://slack.httpapis.com.
136+
To provide feedback and ask questions you can use Stack Overflow with the [OpenAPI.NET](https://stackoverflow.com/questions/tagged/openapi.net) tag.

src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public async Task<int> InvokeAsync(InvocationContext context)
3333
try
3434
{
3535
if (hidiOptions.OpenApi is null) throw new InvalidOperationException("OpenApi file is required");
36-
await OpenApiService.ValidateOpenApiDocument(hidiOptions.OpenApi, logger, cancellationToken).ConfigureAwait(false);
37-
return 0;
36+
var isValid = await OpenApiService.ValidateOpenApiDocument(hidiOptions.OpenApi, logger, cancellationToken).ConfigureAwait(false);
37+
return isValid is not false ? 0 : -1;
3838
}
3939
#if RELEASE
4040
#pragma warning disable CA1031 // Do not catch general exception types

src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<Nullable>enable</Nullable>
1010
<ToolCommandName>hidi</ToolCommandName>
1111
<PackageOutputPath>./../../artifacts</PackageOutputPath>
12-
<Version>1.4.1</Version>
12+
<Version>1.4.6</Version>
1313
<Description>OpenAPI.NET CLI tool for slicing OpenAPI documents</Description>
1414
<SignAssembly>true</SignAssembly>
1515
<!-- https://github.com/dotnet/sourcelink/blob/main/docs/README.md#embeduntrackedsources -->
@@ -34,8 +34,8 @@
3434
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" />
3535
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
3636
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
37-
<PackageReference Include="Microsoft.OData.Edm" Version="7.20.0" />
38-
<PackageReference Include="Microsoft.OpenApi.OData" Version="1.6.1" />
37+
<PackageReference Include="Microsoft.OData.Edm" Version="7.21.3" />
38+
<PackageReference Include="Microsoft.OpenApi.OData" Version="1.6.7" />
3939
<PackageReference Include="Microsoft.OpenApi.ApiManifest" Version="0.5.0-preview" />
4040
<PackageReference Include="System.CommandLine.Hosting" Version="0.4.0-alpha.22272.1" />
4141
</ItemGroup>

src/Microsoft.OpenApi.Hidi/OpenApiService.cs

+9-2
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,8 @@ private static MemoryStream ApplyFilterToCsdl(Stream csdlStream, string entitySe
335335
/// <summary>
336336
/// Implementation of the validate command
337337
/// </summary>
338-
public static async Task ValidateOpenApiDocument(
338+
/// <returns><see langword="true"/> when valid, <see langword="false"/> when invalid and <see langword="null"/> when cancelled</returns>
339+
public static async Task<bool?> ValidateOpenApiDocument(
339340
string openApi,
340341
ILogger logger,
341342
CancellationToken cancellationToken = default)
@@ -345,11 +346,13 @@ public static async Task ValidateOpenApiDocument(
345346
throw new ArgumentNullException(nameof(openApi));
346347
}
347348

349+
ReadResult? result = null;
350+
348351
try
349352
{
350353
using var stream = await GetStream(openApi, logger, cancellationToken).ConfigureAwait(false);
351354

352-
var result = await ParseOpenApi(openApi, false, logger, stream, cancellationToken).ConfigureAwait(false);
355+
result = await ParseOpenApi(openApi, false, logger, stream, cancellationToken).ConfigureAwait(false);
353356

354357
using (logger.BeginScope("Calculating statistics"))
355358
{
@@ -371,6 +374,10 @@ public static async Task ValidateOpenApiDocument(
371374
{
372375
throw new InvalidOperationException($"Could not validate the document, reason: {ex.Message}", ex);
373376
}
377+
378+
if (result is null) return null;
379+
380+
return result.OpenApiDiagnostic.Errors.Count == 0;
374381
}
375382

376383
private static async Task<ReadResult> ParseOpenApi(string openApiFile, bool inlineExternal, ILogger logger, Stream stream, CancellationToken cancellationToken = default)

src/Microsoft.OpenApi.Hidi/readme.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ This command accepts the following parameters:
9595
hidi transform --openapi files\People.yml --format yaml --output files\People2.yml --version OpenApi3_0 --filterByCollection Graph-Collection-0017059134807617005.postman_collection.json
9696
9797
3. CSDL--->OpenAPI conversion and filtering
98-
hidi transform --input Files/Todo.xml --output Files/Todo-subset.yml --format yaml --version OpenApi3_0 --filterByOperationIds Todos.Todo.UpdateTodo
98+
hidi transform --csdl Files/Todo.xml --output Files/Todo-subset.yml --format yaml --version OpenApi3_0 --filterByOperationIds Todos.Todo.UpdateTodo
9999
100100
4. CSDL Filtering by EntitySets and Singletons
101101
hidi transform --cs dataverse.csdl --csdlFilter "appointments,opportunities" -o appointmentsAndOpportunities.yaml --ll trace

src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<TargetFramework>netstandard2.0</TargetFramework>
44
<LangVersion>latest</LangVersion>
55
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
6-
<Version>1.6.14</Version>
6+
<Version>1.6.15</Version>
77
<Description>OpenAPI.NET Readers for JSON and YAML documents</Description>
88
<SignAssembly>true</SignAssembly>
99
<!-- https://github.com/dotnet/sourcelink/blob/main/docs/README.md#embeduntrackedsources -->
@@ -27,7 +27,7 @@
2727
<PackageReference Include="JsonSchema.Net" Version="4.1.5" />
2828
<PackageReference Include="JsonSchema.Net.OpenApi" Version="1.1.0" />
2929
<PackageReference Include="SharpYaml" Version="2.1.1" />
30-
<PackageReference Include="System.Text.Json" Version="7.0.2" />
30+
<PackageReference Include="System.Text.Json" Version="8.0.4" />
3131
</ItemGroup>
3232

3333
<ItemGroup>

src/Microsoft.OpenApi.Workbench/Microsoft.OpenApi.Workbench.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</PropertyGroup>
1010
<ItemGroup>
1111
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.4.421302" PrivateAssets="all" />
12-
<PackageReference Include="Microsoft.Windows.Compatibility" Version="8.0.4" />
12+
<PackageReference Include="Microsoft.Windows.Compatibility" Version="8.0.7" />
1313
</ItemGroup>
1414
<ItemGroup>
1515
<Resource Include="Themes\Metro\HowToApplyTheme.txt" />

src/Microsoft.OpenApi/Extensions/OpenApiTypeMapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation. All rights reserved.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

44
using System;

src/Microsoft.OpenApi/Microsoft.OpenApi.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<TargetFramework>netstandard2.0</TargetFramework>
44
<LangVersion>Latest</LangVersion>
55
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
6-
<Version>1.6.14</Version>
6+
<Version>1.6.15</Version>
77
<Description>.NET models with JSON and YAML writers for OpenAPI specification</Description>
88
<SignAssembly>true</SignAssembly>
99
<!-- https://github.com/dotnet/sourcelink/blob/main/docs/README.md#embeduntrackedsources -->
@@ -26,7 +26,7 @@
2626
<PackageReference Include="JsonSchema.Net.OpenApi" Version="1.1.0" />
2727
</ItemGroup>
2828
<ItemGroup>
29-
<PackageReference Include="System.Text.Json" Version="7.0.2" />
29+
<PackageReference Include="System.Text.Json" Version="8.0.4" />
3030
</ItemGroup>
3131

3232
<ItemGroup>

src/Microsoft.OpenApi/MicrosoftExtensions/OpenApiDeprecationExtension.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
7979
/// <exception cref="ArgumentOutOfRangeException">When the source element is not an object</exception>
8080
public static OpenApiDeprecationExtension Parse(OpenApiAny source)
8181
{
82-
if (source.Node is not JsonObject rawObject) throw new ArgumentOutOfRangeException(nameof(source));
82+
if (source.Node is not JsonObject rawObject) return null;
8383
var extension = new OpenApiDeprecationExtension();
8484
if (rawObject.TryGetPropertyValue(nameof(RemovalDate).ToFirstCharacterLowerCase(), out var removalDate) && removalDate is JsonNode removalDateValue)
8585
extension.RemovalDate = removalDateValue.GetValue<DateTimeOffset>();

src/Microsoft.OpenApi/MicrosoftExtensions/OpenApiEnumFlagsExtension.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// ------------------------------------------------------------
1+
// ------------------------------------------------------------
22
// Copyright (c) Microsoft Corporation. All rights reserved.
33
// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
44
// ------------------------------------------------------------

src/Microsoft.OpenApi/MicrosoftExtensions/OpenApiEnumValuesDescriptionExtension.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
6565
/// <exception cref="ArgumentOutOfRangeException">When the source element is not an object</exception>
6666
public static OpenApiEnumValuesDescriptionExtension Parse(OpenApiAny source)
6767
{
68-
if (source.Node is not JsonObject rawObject) throw new ArgumentOutOfRangeException(nameof(source));
68+
if (source.Node is not JsonObject rawObject) return null;
6969
var extension = new OpenApiEnumValuesDescriptionExtension();
7070
if (rawObject.TryGetPropertyValue("values", out var values) && values is JsonArray valuesArray)
7171
{

src/Microsoft.OpenApi/MicrosoftExtensions/OpenApiPagingExtension.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
7474
/// <exception cref="ArgumentOutOfRangeException">When the source element is not an object</exception>
7575
public static OpenApiPagingExtension Parse(OpenApiAny source)
7676
{
77-
if (source.Node is not JsonObject rawObject) throw new ArgumentOutOfRangeException(nameof(source));
77+
if (source.Node is not JsonObject rawObject) return null;
7878
var extension = new OpenApiPagingExtension();
7979
if (rawObject.TryGetPropertyValue(nameof(NextLinkName).ToFirstCharacterLowerCase(), out var nextLinkName) && nextLinkName is JsonNode nextLinkNameStr)
8080
{

src/Microsoft.OpenApi/MicrosoftExtensions/OpenApiPrimaryErrorMessageExtension.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
4040
/// <returns>The <see cref="OpenApiPrimaryErrorMessageExtension"/>.</returns>
4141
public static OpenApiPrimaryErrorMessageExtension Parse(OpenApiAny source)
4242
{
43-
if (source.Node is not JsonNode rawObject) throw new ArgumentOutOfRangeException(nameof(source));
43+
if (source.Node is not JsonNode rawObject) return null;
4444
return new()
4545
{
4646
IsPrimaryErrorMessage = rawObject.GetValue<bool>()

src/Microsoft.OpenApi/MicrosoftExtensions/OpenApiReservedParameterExtension.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public bool? IsReserved
4242
/// <returns></returns>
4343
public static OpenApiReservedParameterExtension Parse(OpenApiAny source)
4444
{
45-
if (source.Node is not JsonNode rawBoolean) throw new ArgumentOutOfRangeException(nameof(source));
45+
if (source.Node is not JsonNode rawBoolean) return null;
4646
return new()
4747
{
4848
IsReserved = rawBoolean.GetValue<bool>()

src/Microsoft.OpenApi/Properties/SRResource.Designer.cs

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Microsoft.OpenApi/Properties/SRResource.resx

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@
139139
<value>Invalid Reference identifier '{0}'.</value>
140140
</data>
141141
<data name="InvalidReferenceType" xml:space="preserve">
142-
<value>Invalid Reference Type.</value>
142+
<value>Invalid Reference Type '{0}'.</value>
143143
</data>
144144
<data name="LocalReferenceRequiresType" xml:space="preserve">
145145
<value>Local reference must have type specified.</value>

src/Microsoft.OpenApi/Reader/V3/OpenApiV3Deserializer.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,10 @@ public static OpenApiAny LoadAny(ParseNode node, OpenApiDocument hostDocument =
170170

171171
private static IOpenApiExtension LoadExtension(string name, ParseNode node)
172172
{
173-
if (node.Context.ExtensionParsers.TryGetValue(name, out var parser))
173+
if (node.Context.ExtensionParsers.TryGetValue(name, out var parser) && parser(
174+
node.CreateAny(), OpenApiSpecVersion.OpenApi3_0) is { } result)
174175
{
175-
return parser(node.CreateAny(), OpenApiSpecVersion.OpenApi3_0);
176+
return result;
176177
}
177178
else
178179
{

test/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313
<ItemGroup>
1414
<PackageReference Include="coverlet.msbuild" Version="6.0.2" PrivateAssets="all" />
15-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
15+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
1616
<PackageReference Include="Moq" Version="4.20.70" />
17-
<PackageReference Include="xunit" Version="2.7.1" />
18-
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.8" PrivateAssets="all" />
17+
<PackageReference Include="xunit" Version="2.9.0" />
18+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" PrivateAssets="all" />
1919
<PackageReference Include="coverlet.collector" Version="6.0.2" PrivateAssets="all" />
2020
</ItemGroup>
2121

test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs

+25
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,31 @@ public async Task ValidateCommandProcessesOpenApi()
151151
Assert.True(true);
152152
}
153153

154+
[Fact]
155+
public async Task ValidFileReturnsTrue()
156+
{
157+
var isValid = await OpenApiService.ValidateOpenApiDocument(Path.Combine("UtilityFiles", "SampleOpenApi.yml"), _logger);
158+
159+
Assert.True(isValid);
160+
}
161+
162+
[Fact]
163+
public async Task InvalidFileReturnsFalse()
164+
{
165+
var isValid = await OpenApiService.ValidateOpenApiDocument(Path.Combine("UtilityFiles", "InvalidSampleOpenApi.yml"), _logger);
166+
167+
Assert.False(isValid);
168+
}
169+
170+
[Fact]
171+
public async Task CancellingValidationReturnsNull()
172+
{
173+
using var cts = new CancellationTokenSource();
174+
await cts.CancelAsync();
175+
var isValid = await OpenApiService.ValidateOpenApiDocument(Path.Combine("UtilityFiles", "SampleOpenApi.yml"), _logger, cts.Token);
176+
177+
Assert.Null(isValid);
178+
}
154179

155180
[Fact]
156181
public async Task TransformCommandConvertsOpenApi()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
openapi: 3.0.0
2+
info:
3+
title: Sample OpenApi
4+
version: 1.0.0
5+
paths:
6+
/api/editresource:
7+
get:
8+
operationId: api.ListEditresource
9+
patch:
10+
operationId: api.UpdateEditresource
11+
responses:
12+
'200':
13+
description: OK
14+
/api/viewresource:
15+
get:
16+
operationId: api.ListViewresource
17+
responses:
18+
'200':
19+
description: OK

0 commit comments

Comments
 (0)