Skip to content

Commit 912a7bb

Browse files
.Net: Add Summary property to OpenApiOperation model class (#12235)
### Motivation, Context and Description This PR adds the `Summary` property to the `RestApiOperation` model class so it's possible to access it via function metadata.
1 parent 8a68cd4 commit 912a7bb

File tree

7 files changed

+25
-1
lines changed

7 files changed

+25
-1
lines changed

dotnet/src/Functions/Functions.OpenApi/Model/RestApiOperation.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,19 @@ public string? Description
4848
}
4949
}
5050

51+
/// <summary>
52+
/// The operation summary.
53+
/// </summary>
54+
public string? Summary
55+
{
56+
get => this._summary;
57+
set
58+
{
59+
this._freezable.ThrowIfFrozen();
60+
this._summary = value;
61+
}
62+
}
63+
5164
/// <summary>
5265
/// The operation path.
5366
/// </summary>
@@ -399,6 +412,7 @@ value is string { } strValue &&
399412
private IDictionary<string, object?> _extensions = s_emptyDictionary;
400413
private readonly Freezable _freezable = new();
401414
private string? _description;
415+
private string? _summary;
402416

403417
#endregion
404418
}

dotnet/src/Functions/Functions.OpenApi/OpenApi/OpenApiDocumentParser.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,8 @@ internal static List<RestApiOperation> CreateRestApiOperations(OpenApiDocument d
219219
securityRequirements: CreateRestApiOperationSecurityRequirements(operationItem.Security)
220220
)
221221
{
222-
Extensions = CreateRestApiOperationExtensions(operationItem.Extensions, logger)
222+
Extensions = CreateRestApiOperationExtensions(operationItem.Extensions, logger),
223+
Summary = operationItem.Summary
223224
};
224225

225226
operations.Add(operation);

dotnet/src/Functions/Functions.UnitTests/OpenApi/Extensions/OpenApiKernelExtensionsTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ public async Task ItShouldReplicateMetadataToOperationAsync(string documentFileN
287287
Assert.NotNull(operation);
288288
Assert.Equal("GET", additionalProperties["method"]);
289289
Assert.Equal("/api-with-open-api-extensions", operation.Path);
290+
Assert.Equal("Get API with open-api specification extensions", operation.Summary);
290291
var serverUrls = additionalProperties["server-urls"] as string[];
291292
Assert.NotNull(serverUrls);
292293
Assert.Equal(["https://my-key-vault.vault.azure.net"], serverUrls);

dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV20Tests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync()
114114
var putOperation = restApi.Operations.Single(o => o.Id == "SetSecret");
115115
Assert.NotNull(putOperation);
116116
Assert.Equal("Sets a secret in a specified key vault.", putOperation.Description);
117+
Assert.Equal("Create or update secret value", putOperation.Summary);
117118
Assert.Equal("https://my-key-vault.vault.azure.net", putOperation.Servers[0].Url);
118119
Assert.Equal(HttpMethod.Put, putOperation.Method);
119120
Assert.Equal("/secrets/{secret-name}", putOperation.Path);
@@ -166,6 +167,7 @@ public async Task ItCanUseOperationSummaryAsync()
166167
var operation = restApi.Operations.Single(o => o.Id == "Excuses");
167168
Assert.NotNull(operation);
168169
Assert.Equal("Turn a scenario into a creative or humorous excuse to send your boss", operation.Description);
170+
Assert.Equal("Turn a scenario into a creative or humorous excuse to send your boss", operation.Summary);
169171
}
170172

171173
[Fact]
@@ -435,6 +437,7 @@ public async Task ItCanFilterOutSpecifiedOperationsAsync()
435437
Assert.Contains(restApiSpec.Operations, o => o.Id == "SetSecret");
436438
Assert.Contains(restApiSpec.Operations, o => o.Id == "GetSecret");
437439
}
440+
438441
[Fact]
439442
public async Task ItCanParsePathItemPathParametersAsync()
440443
{

dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV30Tests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync()
122122
var putOperation = restApi.Operations.Single(o => o.Id == "SetSecret");
123123
Assert.NotNull(putOperation);
124124
Assert.Equal("Sets a secret in a specified key vault.", putOperation.Description);
125+
Assert.Equal("Create or update secret value", putOperation.Summary);
125126
Assert.Equal("https://my-key-vault.vault.azure.net", putOperation.Servers[0].Url);
126127
Assert.Equal(HttpMethod.Put, putOperation.Method);
127128
Assert.Equal("/secrets/{secret-name}", putOperation.Path);
@@ -197,6 +198,7 @@ public async Task ItCanUseOperationSummaryAsync()
197198
var operation = restApi.Operations.Single(o => o.Id == "Excuses");
198199
Assert.NotNull(operation);
199200
Assert.Equal("Turn a scenario into a creative or humorous excuse to send your boss", operation.Description);
201+
Assert.Equal("Turn a scenario into a creative or humorous excuse to send your boss", operation.Summary);
200202
}
201203

202204
[Fact]

dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiDocumentParserV31Tests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ public async Task ItCanParsePutOperationMetadataSuccessfullyAsync()
122122
var putOperation = restApi.Operations.Single(o => o.Id == "SetSecret");
123123
Assert.NotNull(putOperation);
124124
Assert.Equal("Sets a secret in a specified key vault.", putOperation.Description);
125+
Assert.Equal("Create or update secret value", putOperation.Summary);
125126
Assert.Equal("https://my-key-vault.vault.azure.net", putOperation.Servers[0].Url);
126127
Assert.Equal(HttpMethod.Put, putOperation.Method);
127128
Assert.Equal("/secrets/{secret-name}", putOperation.Path);
@@ -174,6 +175,7 @@ public async Task ItCanUseOperationSummaryAsync()
174175
var operation = restApi.Operations.Single(o => o.Id == "Excuses");
175176
Assert.NotNull(operation);
176177
Assert.Equal("Turn a scenario into a creative or humorous excuse to send your boss", operation.Description);
178+
Assert.Equal("Turn a scenario into a creative or humorous excuse to send your boss", operation.Summary);
177179
}
178180

179181
[Fact]

dotnet/src/Functions/Functions.UnitTests/OpenApi/OpenApiKernelPluginFactoryTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ public async Task ItShouldReplicateMetadataToOperationAsync(string documentFileN
300300
Assert.NotNull(operation);
301301
Assert.Equal("GET", additionalProperties["method"]);
302302
Assert.Equal("/api-with-open-api-extensions", operation.Path);
303+
Assert.Equal("Get API with open-api specification extensions", operation.Summary);
303304
var serverUrls = additionalProperties["server-urls"] as string[];
304305
Assert.NotNull(serverUrls);
305306
Assert.Equal(["https://my-key-vault.vault.azure.net"], serverUrls);

0 commit comments

Comments
 (0)