Skip to content

Commit 711afea

Browse files
.Net: Include the operation path in the KernelFunction.Metadata (#9538)
### Motivation and Context Request for additional metadata for OpenAPI Kernel functions Closes #9496 ### Description Include the operation path in the `KernelFunction.Metadata` ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows the [SK Contribution Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) and the [pre-submission formatting script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts) raises no violations - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄
1 parent 6597b6c commit 711afea

3 files changed

Lines changed: 10 additions & 2 deletions

File tree

‎dotnet/src/Functions/Functions.OpenApi/OpenApiKernelPluginFactory.cs‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ async Task<RestApiOperationResponse> ExecuteAsync(Kernel kernel, KernelFunction
266266
var additionalMetadata = new Dictionary<string, object?>
267267
{
268268
{ OpenApiKernelPluginFactory.OperationExtensionsMethodKey, operation.Method.ToString().ToUpperInvariant() },
269+
{ OpenApiKernelPluginFactory.OperationExtensionsPathKey, operation.Path },
269270
{ OpenApiKernelPluginFactory.OperationExtensionsServerUrlsKey, string.IsNullOrEmpty(operation.Server?.Url) ? Array.Empty<string>() : [ operation.Server!.Url! ] }
270271
};
271272
if (operation.Extensions is { Count: > 0 })
@@ -291,6 +292,9 @@ async Task<RestApiOperationResponse> ExecuteAsync(Kernel kernel, KernelFunction
291292
/// <summary>The metadata property bag key to use when storing the method of an operation.</summary>
292293
private const string OperationExtensionsMethodKey = "method";
293294

295+
/// <summary>The metadata property bag key to use when storing the path of an operation.</summary>
296+
private const string OperationExtensionsPathKey = "path";
297+
294298
/// <summary>The metadata property bag key to use when storing the server of an operation.</summary>
295299
private const string OperationExtensionsServerUrlsKey = "server-urls";
296300

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,13 +276,15 @@ public async Task ItShouldReplicateMetadataToOperationAsync(string documentFileN
276276
// Assert Metadata Keys and Values
277277
Assert.True(plugin.TryGetFunction("OpenApiExtensions", out var function));
278278
var additionalProperties = function.Metadata.AdditionalProperties;
279-
Assert.Equal(3, additionalProperties.Count);
279+
Assert.Equal(4, additionalProperties.Count);
280280

281281
Assert.Contains("method", additionalProperties.Keys);
282+
Assert.Contains("path", additionalProperties.Keys);
282283
Assert.Contains("server-urls", additionalProperties.Keys);
283284
Assert.Contains("operation-extensions", additionalProperties.Keys);
284285

285286
Assert.Equal("GET", additionalProperties["method"]);
287+
Assert.Equal("/api-with-open-api-extensions", additionalProperties["path"]);
286288
var serverUrls = additionalProperties["server-urls"] as string[];
287289
Assert.NotNull(serverUrls);
288290
Assert.Equal(["https://my-key-vault.vault.azure.net"], serverUrls);

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,13 +267,15 @@ public async Task ItShouldReplicateMetadataToOperationAsync(string documentFileN
267267
// Assert Metadata Keys and Values
268268
Assert.True(plugin.TryGetFunction("OpenApiExtensions", out var function));
269269
var additionalProperties = function.Metadata.AdditionalProperties;
270-
Assert.Equal(3, additionalProperties.Count);
270+
Assert.Equal(4, additionalProperties.Count);
271271

272272
Assert.Contains("method", additionalProperties.Keys);
273+
Assert.Contains("path", additionalProperties.Keys);
273274
Assert.Contains("server-urls", additionalProperties.Keys);
274275
Assert.Contains("operation-extensions", additionalProperties.Keys);
275276

276277
Assert.Equal("GET", additionalProperties["method"]);
278+
Assert.Equal("/api-with-open-api-extensions", additionalProperties["path"]);
277279
var serverUrls = additionalProperties["server-urls"] as string[];
278280
Assert.NotNull(serverUrls);
279281
Assert.Equal(["https://my-key-vault.vault.azure.net"], serverUrls);

0 commit comments

Comments
 (0)