diff --git a/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj b/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj
index 048220ec..ff7dd0b7 100644
--- a/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj
+++ b/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj
@@ -26,6 +26,7 @@
- Changed target framework to net8.0
- Adds support for retrieving collection of enum values from UpdateMethod property of UpdateRestrictions annotation #564
- Adds nullable to double schema conversions #581
+ - Updates tag names for actions/functions operations #585
Microsoft.OpenApi.OData.Reader
..\..\tool\Microsoft.OpenApi.OData.snk
diff --git a/src/Microsoft.OpenApi.OData.Reader/Operation/EdmOperationOperationHandler.cs b/src/Microsoft.OpenApi.OData.Reader/Operation/EdmOperationOperationHandler.cs
index 72ebb225..55ad88b2 100644
--- a/src/Microsoft.OpenApi.OData.Reader/Operation/EdmOperationOperationHandler.cs
+++ b/src/Microsoft.OpenApi.OData.Reader/Operation/EdmOperationOperationHandler.cs
@@ -1,94 +1,94 @@
-// ------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// ------------------------------------------------------------
-
-using System.Collections.Generic;
-using System.Linq;
-using Microsoft.OData.Edm;
-using Microsoft.OpenApi.Any;
-using Microsoft.OpenApi.Models;
-using Microsoft.OpenApi.OData.Common;
-using Microsoft.OpenApi.OData.Edm;
-using Microsoft.OpenApi.OData.Generator;
-using Microsoft.OpenApi.OData.Vocabulary.Capabilities;
-using Microsoft.OpenApi.OData.Vocabulary.Core;
-
-namespace Microsoft.OpenApi.OData.Operation
-{
- ///
- /// Base class for operation of .
- ///
- internal abstract class EdmOperationOperationHandler : OperationHandler
- {
- private OperationRestrictionsType _operationRestriction;
-
- ///
- /// Gets the navigation source.
- ///
- protected IEdmNavigationSource NavigationSource { get; private set; }
-
- ///
- /// Gets the Edm operation.
- ///
- protected IEdmOperation EdmOperation { get; private set; }
-
- ///
- /// Gets the OData operation segment.
- ///
- protected ODataOperationSegment OperationSegment { get; private set; }
-
- ///
- /// Gets a value indicating whether the path has type cast segment or not.
- ///
- protected bool HasTypeCast { get; private set; }
-
- ///
- protected override void Initialize(ODataContext context, ODataPath path)
+// ------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
+// ------------------------------------------------------------
+
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.OData.Edm;
+using Microsoft.OpenApi.Any;
+using Microsoft.OpenApi.Models;
+using Microsoft.OpenApi.OData.Common;
+using Microsoft.OpenApi.OData.Edm;
+using Microsoft.OpenApi.OData.Generator;
+using Microsoft.OpenApi.OData.Vocabulary.Capabilities;
+using Microsoft.OpenApi.OData.Vocabulary.Core;
+
+namespace Microsoft.OpenApi.OData.Operation
+{
+ ///
+ /// Base class for operation of .
+ ///
+ internal abstract class EdmOperationOperationHandler : OperationHandler
+ {
+ private OperationRestrictionsType _operationRestriction;
+
+ ///
+ /// Gets the navigation source.
+ ///
+ protected IEdmNavigationSource NavigationSource { get; private set; }
+
+ ///
+ /// Gets the Edm operation.
+ ///
+ protected IEdmOperation EdmOperation { get; private set; }
+
+ ///
+ /// Gets the OData operation segment.
+ ///
+ protected ODataOperationSegment OperationSegment { get; private set; }
+
+ ///
+ /// Gets a value indicating whether the path has type cast segment or not.
+ ///
+ protected bool HasTypeCast { get; private set; }
+
+ ///
+ protected override void Initialize(ODataContext context, ODataPath path)
{
- base.Initialize(context, path);
-
- // It's bound operation, the first segment must be the navigaiton source.
- ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment;
- NavigationSource = navigationSourceSegment.NavigationSource;
-
- OperationSegment = path.LastSegment as ODataOperationSegment;
- EdmOperation = OperationSegment.Operation;
-
- HasTypeCast = path.Segments.Any(s => s is ODataTypeCastSegment);
-
+ base.Initialize(context, path);
+
+ // It's bound operation, the first segment must be the navigaiton source.
+ ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment;
+ NavigationSource = navigationSourceSegment.NavigationSource;
+
+ OperationSegment = path.LastSegment as ODataOperationSegment;
+ EdmOperation = OperationSegment.Operation;
+
+ HasTypeCast = path.Segments.Any(s => s is ODataTypeCastSegment);
+
_operationRestriction = Context.Model.GetRecord(TargetPath, CapabilitiesConstants.OperationRestrictions);
var operationRestrictions = Context.Model.GetRecord(EdmOperation, CapabilitiesConstants.OperationRestrictions);
_operationRestriction?.MergePropertiesIfNull(operationRestrictions);
- _operationRestriction ??= operationRestrictions;
- }
-
- ///
- protected override void SetBasicInfo(OpenApiOperation operation)
- {
- // Summary
- operation.Summary = "Invoke " + (EdmOperation.IsAction() ? "action " : "function ") + EdmOperation.Name;
-
- // Description
- operation.Description = Context.Model.GetDescriptionAnnotation(TargetPath) ?? Context.Model.GetDescriptionAnnotation(EdmOperation);
-
- // OperationId
- if (Context.Settings.EnableOperationId)
- {
- // When the key segment is available,
- // its EntityType name will be used
- // in the operationId to avoid potential
- // duplicates in entity vs entityset functions/actions
-
- List identifiers = new();
- foreach (ODataSegment segment in Path.Segments)
- {
- if (segment is ODataKeySegment keySegment)
- {
- if (!keySegment.IsAlternateKey)
- {
- identifiers.Add(segment.EntityType.Name);
- continue;
+ _operationRestriction ??= operationRestrictions;
+ }
+
+ ///
+ protected override void SetBasicInfo(OpenApiOperation operation)
+ {
+ // Summary
+ operation.Summary = "Invoke " + (EdmOperation.IsAction() ? "action " : "function ") + EdmOperation.Name;
+
+ // Description
+ operation.Description = Context.Model.GetDescriptionAnnotation(TargetPath) ?? Context.Model.GetDescriptionAnnotation(EdmOperation);
+
+ // OperationId
+ if (Context.Settings.EnableOperationId)
+ {
+ // When the key segment is available,
+ // its EntityType name will be used
+ // in the operationId to avoid potential
+ // duplicates in entity vs entityset functions/actions
+
+ List identifiers = new();
+ foreach (ODataSegment segment in Path.Segments)
+ {
+ if (segment is ODataKeySegment keySegment)
+ {
+ if (!keySegment.IsAlternateKey)
+ {
+ identifiers.Add(segment.EntityType.Name);
+ continue;
}
// We'll consider alternate keys in the operation id to eliminate potential duplicates with operation id of primary path
@@ -100,175 +100,203 @@ protected override void SetBasicInfo(OpenApiOperation operation)
{
identifiers.Add(keySegment.Identifier);
}
- }
- else
- {
+ }
+ else
+ {
identifiers.Add(segment.Identifier);
- }
- }
-
- string operationId = string.Join(".", identifiers);
-
- if (EdmOperation.IsAction())
- {
- operation.OperationId = operationId;
- }
- else
- {
- if (Path.LastSegment is ODataOperationSegment operationSegment &&
- Context.Model.IsOperationOverload(operationSegment.Operation))
- {
- operation.OperationId = operationId + "-" + Path.LastSegment.GetPathHash(Context.Settings);
- }
- else
- {
- operation.OperationId = operationId;
- }
- }
- }
-
- base.SetBasicInfo(operation);
- }
-
- ///
- protected override void SetTags(OpenApiOperation operation)
- {
- string value = EdmOperation.IsAction() ? "Actions" : "Functions";
- OpenApiTag tag = new OpenApiTag
- {
- Name = NavigationSource.Name + "." + value,
- };
- tag.Extensions.Add(Constants.xMsTocType, new OpenApiString("container"));
- operation.Tags.Add(tag);
-
- Context.AppendTag(tag);
-
- base.SetTags(operation);
- }
-
- ///
- protected override void SetParameters(OpenApiOperation operation)
- {
- base.SetParameters(operation);
-
- if (EdmOperation.IsFunction())
- {
- IEdmFunction function = (IEdmFunction)EdmOperation;
- AppendSystemQueryOptions(function, operation);
- }
- }
-
- ///
- protected override void SetResponses(OpenApiOperation operation)
- {
- operation.Responses = Context.CreateResponses(EdmOperation);
- base.SetResponses(operation);
- }
-
- ///
- protected override void SetSecurity(OpenApiOperation operation)
- {
- if (_operationRestriction == null || _operationRestriction.Permissions == null)
- {
- return;
- }
-
- operation.Security = Context.CreateSecurityRequirements(_operationRestriction.Permissions).ToList();
- }
-
- ///
- protected override void AppendCustomParameters(OpenApiOperation operation)
- {
- if (_operationRestriction == null)
- {
- return;
- }
-
- if (_operationRestriction.CustomHeaders != null)
- {
- AppendCustomParameters(operation, _operationRestriction.CustomHeaders, ParameterLocation.Header);
- }
-
- if (_operationRestriction.CustomQueryOptions != null)
- {
- AppendCustomParameters(operation, _operationRestriction.CustomQueryOptions, ParameterLocation.Query);
- }
- }
-
- private void AppendSystemQueryOptions(IEdmFunction function, OpenApiOperation operation)
- {
- if (function.ReturnType.IsCollection())
- {
- // $top
- if (Context.CreateTop(function) is OpenApiParameter topParameter)
- {
- operation.Parameters.AppendParameter(topParameter);
- }
-
- // $skip
- if (Context.CreateSkip(function) is OpenApiParameter skipParameter)
- {
- operation.Parameters.AppendParameter(skipParameter);
- }
-
- // $search
- if (Context.CreateSearch(function) is OpenApiParameter searchParameter)
- {
- operation.Parameters.AppendParameter(searchParameter);
- }
-
- // $filter
- if (Context.CreateFilter(function) is OpenApiParameter filterParameter)
- {
- operation.Parameters.AppendParameter(filterParameter);
- }
-
- // $count
- if (Context.CreateCount(function) is OpenApiParameter countParameter)
- {
- operation.Parameters.AppendParameter(countParameter);
- }
-
- if (function.ReturnType?.Definition?.AsElementType() is IEdmEntityType entityType)
- {
- // $select
- if (Context.CreateSelect(function, entityType) is OpenApiParameter selectParameter)
- {
- operation.Parameters.AppendParameter(selectParameter);
- }
-
- // $orderby
- if (Context.CreateOrderBy(function, entityType) is OpenApiParameter orderbyParameter)
- {
- operation.Parameters.AppendParameter(orderbyParameter);
- }
-
- // $expand
- if (Context.CreateExpand(function, entityType) is OpenApiParameter expandParameter)
- {
- operation.Parameters.AppendParameter(expandParameter);
- }
- }
- }
- }
-
- ///
- protected override void SetCustomLinkRelType()
- {
- if (Context.Settings.CustomHttpMethodLinkRelMapping != null && EdmOperation != null)
- {
- LinkRelKey key = EdmOperation.IsAction() ? LinkRelKey.Action : LinkRelKey.Function;
- Context.Settings.CustomHttpMethodLinkRelMapping.TryGetValue(key, out string linkRelValue);
- CustomLinkRel = linkRelValue;
- }
- }
-
- ///
- protected override void SetExternalDocs(OpenApiOperation operation)
- {
- if (Context.Settings.ShowExternalDocs)
- {
- var externalDocs = Context.Model.GetLinkRecord(TargetPath, CustomLinkRel) ??
+ }
+ }
+
+ string operationId = string.Join(".", identifiers);
+
+ if (EdmOperation.IsAction())
+ {
+ operation.OperationId = operationId;
+ }
+ else
+ {
+ if (Path.LastSegment is ODataOperationSegment operationSegment &&
+ Context.Model.IsOperationOverload(operationSegment.Operation))
+ {
+ operation.OperationId = operationId + "-" + Path.LastSegment.GetPathHash(Context.Settings);
+ }
+ else
+ {
+ operation.OperationId = operationId;
+ }
+ }
+ }
+
+ base.SetBasicInfo(operation);
+ }
+
+ ///
+ protected override void SetTags(OpenApiOperation operation)
+ {
+ GenerateTagName(out string tagName);
+ OpenApiTag tag = new()
+ {
+ Name = tagName,
+ };
+ tag.Extensions.Add(Constants.xMsTocType, new OpenApiString("container"));
+ operation.Tags.Add(tag);
+
+ Context.AppendTag(tag);
+
+ base.SetTags(operation);
+ }
+
+ ///
+ /// Genrates the tag name for the operation.
+ ///
+ /// The generated tag name.
+ /// The number of segments to skip.
+ private void GenerateTagName(out string tagName, int skip = 1)
+ {
+ var targetSegment = Path.Segments.Reverse().Skip(skip).FirstOrDefault();
+
+ switch (targetSegment)
+ {
+ case ODataNavigationPropertySegment:
+ tagName = EdmModelHelper.GenerateNavigationPropertyPathTagName(Path, Context);
+ break;
+ case ODataOperationSegment:
+ case ODataOperationImportSegment:
+ // Previous segmment could be a navigation property or a navigation source segment
+ case ODataKeySegment:
+ skip += 1;
+ GenerateTagName(out tagName, skip);
+ break;
+ // ODataNavigationSourceSegment
+ default:
+ tagName = NavigationSource.Name + "." + NavigationSource.EntityType.Name;
+ break;
+ }
+ }
+
+ ///
+ protected override void SetParameters(OpenApiOperation operation)
+ {
+ base.SetParameters(operation);
+
+ if (EdmOperation.IsFunction())
+ {
+ IEdmFunction function = (IEdmFunction)EdmOperation;
+ AppendSystemQueryOptions(function, operation);
+ }
+ }
+
+ ///
+ protected override void SetResponses(OpenApiOperation operation)
+ {
+ operation.Responses = Context.CreateResponses(EdmOperation);
+ base.SetResponses(operation);
+ }
+
+ ///
+ protected override void SetSecurity(OpenApiOperation operation)
+ {
+ if (_operationRestriction == null || _operationRestriction.Permissions == null)
+ {
+ return;
+ }
+
+ operation.Security = Context.CreateSecurityRequirements(_operationRestriction.Permissions).ToList();
+ }
+
+ ///
+ protected override void AppendCustomParameters(OpenApiOperation operation)
+ {
+ if (_operationRestriction == null)
+ {
+ return;
+ }
+
+ if (_operationRestriction.CustomHeaders != null)
+ {
+ AppendCustomParameters(operation, _operationRestriction.CustomHeaders, ParameterLocation.Header);
+ }
+
+ if (_operationRestriction.CustomQueryOptions != null)
+ {
+ AppendCustomParameters(operation, _operationRestriction.CustomQueryOptions, ParameterLocation.Query);
+ }
+ }
+
+ private void AppendSystemQueryOptions(IEdmFunction function, OpenApiOperation operation)
+ {
+ if (function.ReturnType.IsCollection())
+ {
+ // $top
+ if (Context.CreateTop(function) is OpenApiParameter topParameter)
+ {
+ operation.Parameters.AppendParameter(topParameter);
+ }
+
+ // $skip
+ if (Context.CreateSkip(function) is OpenApiParameter skipParameter)
+ {
+ operation.Parameters.AppendParameter(skipParameter);
+ }
+
+ // $search
+ if (Context.CreateSearch(function) is OpenApiParameter searchParameter)
+ {
+ operation.Parameters.AppendParameter(searchParameter);
+ }
+
+ // $filter
+ if (Context.CreateFilter(function) is OpenApiParameter filterParameter)
+ {
+ operation.Parameters.AppendParameter(filterParameter);
+ }
+
+ // $count
+ if (Context.CreateCount(function) is OpenApiParameter countParameter)
+ {
+ operation.Parameters.AppendParameter(countParameter);
+ }
+
+ if (function.ReturnType?.Definition?.AsElementType() is IEdmEntityType entityType)
+ {
+ // $select
+ if (Context.CreateSelect(function, entityType) is OpenApiParameter selectParameter)
+ {
+ operation.Parameters.AppendParameter(selectParameter);
+ }
+
+ // $orderby
+ if (Context.CreateOrderBy(function, entityType) is OpenApiParameter orderbyParameter)
+ {
+ operation.Parameters.AppendParameter(orderbyParameter);
+ }
+
+ // $expand
+ if (Context.CreateExpand(function, entityType) is OpenApiParameter expandParameter)
+ {
+ operation.Parameters.AppendParameter(expandParameter);
+ }
+ }
+ }
+ }
+
+ ///
+ protected override void SetCustomLinkRelType()
+ {
+ if (Context.Settings.CustomHttpMethodLinkRelMapping != null && EdmOperation != null)
+ {
+ LinkRelKey key = EdmOperation.IsAction() ? LinkRelKey.Action : LinkRelKey.Function;
+ Context.Settings.CustomHttpMethodLinkRelMapping.TryGetValue(key, out string linkRelValue);
+ CustomLinkRel = linkRelValue;
+ }
+ }
+
+ ///
+ protected override void SetExternalDocs(OpenApiOperation operation)
+ {
+ if (Context.Settings.ShowExternalDocs)
+ {
+ var externalDocs = Context.Model.GetLinkRecord(TargetPath, CustomLinkRel) ??
Context.Model.GetLinkRecord(EdmOperation, CustomLinkRel);
if (externalDocs != null)
@@ -278,24 +306,24 @@ protected override void SetExternalDocs(OpenApiOperation operation)
Description = CoreConstants.ExternalDocsDescription,
Url = externalDocs.Href
};
- }
- }
- }
-
- //
- protected override void SetExtensions(OpenApiOperation operation)
- {
- if (Context.Settings.EnablePagination && EdmOperation.ReturnType?.TypeKind() == EdmTypeKind.Collection)
- {
- OpenApiObject extension = new OpenApiObject
- {
- { "nextLinkName", new OpenApiString("@odata.nextLink")},
- { "operationName", new OpenApiString(Context.Settings.PageableOperationName)}
- };
-
- operation.Extensions.Add(Constants.xMsPageable, extension);
- }
- base.SetExtensions(operation);
- }
- }
-}
+ }
+ }
+ }
+
+ //
+ protected override void SetExtensions(OpenApiOperation operation)
+ {
+ if (Context.Settings.EnablePagination && EdmOperation.ReturnType?.TypeKind() == EdmTypeKind.Collection)
+ {
+ OpenApiObject extension = new OpenApiObject
+ {
+ { "nextLinkName", new OpenApiString("@odata.nextLink")},
+ { "operationName", new OpenApiString(Context.Settings.PageableOperationName)}
+ };
+
+ operation.Extensions.Add(Constants.xMsPageable, extension);
+ }
+ base.SetExtensions(operation);
+ }
+ }
+}
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EdmActionOperationHandlerTests.cs b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EdmActionOperationHandlerTests.cs
index 323e27f1..0dc4cb81 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EdmActionOperationHandlerTests.cs
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EdmActionOperationHandlerTests.cs
@@ -40,7 +40,7 @@ public void CreateOperationForEdmActionReturnsCorrectOperation()
Assert.Equal("Details of the shared trip.", operation.Description);
Assert.NotNull(operation.Tags);
var tag = Assert.Single(operation.Tags);
- Assert.Equal("People.Actions", tag.Name);
+ Assert.Equal("People.Person", tag.Name);
Assert.NotNull(operation.Parameters);
Assert.Single(operation.Parameters);
@@ -79,7 +79,7 @@ public void CreateOperationForEdmActionReturnsCorrectOperationHierarchicalClass(
Assert.Equal($"Invoke action {actionName}", operation.Summary);
Assert.NotNull(operation.Tags);
var tag = Assert.Single(operation.Tags);
- Assert.Equal($"{entitySetName}.Actions", tag.Name);
+ Assert.Equal($"{entitySetName}.AccountApiModel", tag.Name);
Assert.NotNull(operation.Parameters);
Assert.Single(operation.Parameters);
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EdmFunctionOperationHandlerTests.cs b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EdmFunctionOperationHandlerTests.cs
index 9675534b..49322066 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EdmFunctionOperationHandlerTests.cs
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EdmFunctionOperationHandlerTests.cs
@@ -100,7 +100,7 @@ public void CreateOperationForEdmFunctionReturnsCorrectOperation(bool useHTTPSta
Assert.Equal("Invoke function GetFavoriteAirline", operation.Summary);
Assert.NotNull(operation.Tags);
var tag = Assert.Single(operation.Tags);
- Assert.Equal("People.Functions", tag.Name);
+ Assert.Equal("People.Person", tag.Name);
Assert.NotNull(operation.Parameters);
Assert.Single(operation.Parameters);
@@ -138,7 +138,7 @@ public void CreateOperationForEdmFunctionReturnsCorrectOperationHierarchicalClas
Assert.Equal("Collection of contract attachments.", operation.Description);
Assert.NotNull(operation.Tags);
var tag = Assert.Single(operation.Tags);
- Assert.Equal($"{entitySetName}.Functions", tag.Name);
+ Assert.Equal($"{entitySetName}.AccountApiModel", tag.Name);
Assert.NotNull(operation.Parameters);
Assert.Equal(6, operation.Parameters.Count); // id, top, skip, count, search, filter
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.V2.json b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.V2.json
index 10e4853a..9e0f2d6e 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.V2.json
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.V2.json
@@ -591,7 +591,7 @@
"/Documents({Id})/Default.Upload": {
"post": {
"tags": [
- "Documents.Actions"
+ "Documents.DocumentDto"
],
"summary": "Invoke action Upload",
"operationId": "Documents.DocumentDto.Upload",
@@ -3519,7 +3519,7 @@
"/Tasks({Id})/Default.Upload": {
"post": {
"tags": [
- "Tasks.Actions"
+ "Tasks.DocumentDto"
],
"summary": "Invoke action Upload",
"operationId": "Tasks.DocumentDto.Upload",
@@ -6275,10 +6275,6 @@
"name": "Documents.DocumentDto",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "Documents.Actions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "Documents.RevisionDto",
"x-ms-docs-toc-type": "page"
@@ -6319,10 +6315,6 @@
"name": "Tasks.DocumentDto",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "Tasks.Actions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "Tasks.RevisionDto",
"x-ms-docs-toc-type": "page"
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.V2.yaml b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.V2.yaml
index 2f7e0c2c..95a8470c 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.V2.yaml
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.V2.yaml
@@ -413,7 +413,7 @@ paths:
'/Documents({Id})/Default.Upload':
post:
tags:
- - Documents.Actions
+ - Documents.DocumentDto
summary: Invoke action Upload
operationId: Documents.DocumentDto.Upload
parameters:
@@ -2495,7 +2495,7 @@ paths:
'/Tasks({Id})/Default.Upload':
post:
tags:
- - Tasks.Actions
+ - Tasks.DocumentDto
summary: Invoke action Upload
operationId: Tasks.DocumentDto.Upload
parameters:
@@ -4545,8 +4545,6 @@ tags:
x-ms-docs-toc-type: page
- name: Documents.DocumentDto
x-ms-docs-toc-type: page
- - name: Documents.Actions
- x-ms-docs-toc-type: container
- name: Documents.RevisionDto
x-ms-docs-toc-type: page
- name: Documents.DocumentTagRelDto
@@ -4567,8 +4565,6 @@ tags:
x-ms-docs-toc-type: page
- name: Tasks.DocumentDto
x-ms-docs-toc-type: page
- - name: Tasks.Actions
- x-ms-docs-toc-type: container
- name: Tasks.RevisionDto
x-ms-docs-toc-type: page
- name: Tasks.DocumentTagRelDto
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.json b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.json
index fb7abaef..cbcfc72c 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.json
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.json
@@ -663,7 +663,7 @@
"description": "Provides operations to call the Upload method.",
"post": {
"tags": [
- "Documents.Actions"
+ "Documents.DocumentDto"
],
"summary": "Invoke action Upload",
"operationId": "Documents.DocumentDto.Upload",
@@ -3940,7 +3940,7 @@
"description": "Provides operations to call the Upload method.",
"post": {
"tags": [
- "Tasks.Actions"
+ "Tasks.DocumentDto"
],
"summary": "Invoke action Upload",
"operationId": "Tasks.DocumentDto.Upload",
@@ -7481,10 +7481,6 @@
"name": "Documents.DocumentDto",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "Documents.Actions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "Documents.RevisionDto",
"x-ms-docs-toc-type": "page"
@@ -7525,10 +7521,6 @@
"name": "Tasks.DocumentDto",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "Tasks.Actions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "Tasks.RevisionDto",
"x-ms-docs-toc-type": "page"
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.yaml b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.yaml
index 9b580a01..57e9b6dc 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.yaml
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.yaml
@@ -460,7 +460,7 @@ paths:
description: Provides operations to call the Upload method.
post:
tags:
- - Documents.Actions
+ - Documents.DocumentDto
summary: Invoke action Upload
operationId: Documents.DocumentDto.Upload
parameters:
@@ -2771,7 +2771,7 @@ paths:
description: Provides operations to call the Upload method.
post:
tags:
- - Tasks.Actions
+ - Tasks.DocumentDto
summary: Invoke action Upload
operationId: Tasks.DocumentDto.Upload
parameters:
@@ -5384,8 +5384,6 @@ tags:
x-ms-docs-toc-type: page
- name: Documents.DocumentDto
x-ms-docs-toc-type: page
- - name: Documents.Actions
- x-ms-docs-toc-type: container
- name: Documents.RevisionDto
x-ms-docs-toc-type: page
- name: Documents.DocumentTagRelDto
@@ -5406,8 +5404,6 @@ tags:
x-ms-docs-toc-type: page
- name: Tasks.DocumentDto
x-ms-docs-toc-type: page
- - name: Tasks.Actions
- x-ms-docs-toc-type: container
- name: Tasks.RevisionDto
x-ms-docs-toc-type: page
- name: Tasks.DocumentTagRelDto
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.json b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.json
index f26cdbed..dd93b464 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.json
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.json
@@ -7215,7 +7215,7 @@
"/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()": {
"get": {
"tags": [
- "Me.Functions"
+ "Me.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "Me.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee.Trips.Trip.GetInvolvedPeople",
@@ -7696,7 +7696,7 @@
"/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFavoriteAirline()": {
"get": {
"tags": [
- "Me.Functions"
+ "Me.Person"
],
"summary": "Invoke function GetFavoriteAirline",
"operationId": "Me.GetFavoriteAirline",
@@ -7722,7 +7722,7 @@
"/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFriendsTrips(userName='{userName}')": {
"get": {
"tags": [
- "Me.Functions"
+ "Me.Person"
],
"summary": "Invoke function GetFriendsTrips",
"operationId": "Me.GetFriendsTrips",
@@ -7799,7 +7799,7 @@
"/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetPeersForTrip": {
"post": {
"tags": [
- "Me.Actions"
+ "Me.Person"
],
"summary": "Invoke action GetPeersForTrip",
"operationId": "Me.GetPeersForTrip",
@@ -10930,7 +10930,7 @@
"/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Hire": {
"post": {
"tags": [
- "Me.Actions"
+ "Me.Person"
],
"summary": "Invoke action Hire",
"description": "Hires someone for the company.",
@@ -11287,7 +11287,7 @@
"/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()": {
"get": {
"tags": [
- "Me.Functions"
+ "Me.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "Me.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Trips.Trip.GetInvolvedPeople",
@@ -11768,7 +11768,7 @@
"/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.ShareTrip": {
"post": {
"tags": [
- "Me.Actions"
+ "Me.Person"
],
"summary": "Invoke action ShareTrip",
"description": "Details of the shared trip.",
@@ -11800,7 +11800,7 @@
"/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.UpdatePersonLastName(lastName='{lastName}')": {
"get": {
"tags": [
- "Me.Functions"
+ "Me.Person"
],
"summary": "Invoke function UpdatePersonLastName",
"operationId": "Me.UpdatePersonLastName",
@@ -12245,7 +12245,7 @@
"/Me/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()": {
"get": {
"tags": [
- "Me.Functions"
+ "Me.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "Me.Trips.Trip.GetInvolvedPeople",
@@ -15601,7 +15601,7 @@
"/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFavoriteAirline()": {
"get": {
"tags": [
- "NewComePeople.Functions"
+ "NewComePeople.Person"
],
"summary": "Invoke function GetFavoriteAirline",
"operationId": "NewComePeople.Person.GetFavoriteAirline",
@@ -15630,7 +15630,7 @@
"/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFriendsTrips(userName='{userName}')": {
"get": {
"tags": [
- "NewComePeople.Functions"
+ "NewComePeople.Person"
],
"summary": "Invoke function GetFriendsTrips",
"operationId": "NewComePeople.Person.GetFriendsTrips",
@@ -15715,7 +15715,7 @@
"/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetPeersForTrip": {
"post": {
"tags": [
- "NewComePeople.Actions"
+ "NewComePeople.Person"
],
"summary": "Invoke action GetPeersForTrip",
"operationId": "NewComePeople.Person.GetPeersForTrip",
@@ -15747,7 +15747,7 @@
"/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Hire": {
"post": {
"tags": [
- "NewComePeople.Actions"
+ "NewComePeople.Person"
],
"summary": "Invoke action Hire",
"description": "Hires someone for the company.",
@@ -15794,7 +15794,7 @@
"/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.ShareTrip": {
"post": {
"tags": [
- "NewComePeople.Actions"
+ "NewComePeople.Person"
],
"summary": "Invoke action ShareTrip",
"description": "Details of the shared trip.",
@@ -15827,7 +15827,7 @@
"/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.UpdatePersonLastName(lastName='{lastName}')": {
"get": {
"tags": [
- "NewComePeople.Functions"
+ "NewComePeople.Person"
],
"summary": "Invoke function UpdatePersonLastName",
"operationId": "NewComePeople.Person.UpdatePersonLastName",
@@ -16275,7 +16275,7 @@
"/NewComePeople/{UserName}/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()": {
"get": {
"tags": [
- "NewComePeople.Functions"
+ "NewComePeople.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "NewComePeople.Person.Trips.Trip.GetInvolvedPeople",
@@ -23947,7 +23947,7 @@
"/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()": {
"get": {
"tags": [
- "People.Functions"
+ "People.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "People.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee.Trips.Trip.GetInvolvedPeople",
@@ -24492,7 +24492,7 @@
"/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFavoriteAirline()": {
"get": {
"tags": [
- "People.Functions"
+ "People.Person"
],
"summary": "Invoke function GetFavoriteAirline",
"operationId": "People.Person.GetFavoriteAirline",
@@ -24528,7 +24528,7 @@
"/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFriendsTrips(userName='{userName}')": {
"get": {
"tags": [
- "People.Functions"
+ "People.Person"
],
"summary": "Invoke function GetFriendsTrips",
"operationId": "People.Person.GetFriendsTrips",
@@ -24613,7 +24613,7 @@
"/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetPeersForTrip": {
"post": {
"tags": [
- "People.Actions"
+ "People.Person"
],
"summary": "Invoke action GetPeersForTrip",
"operationId": "People.Person.GetPeersForTrip",
@@ -28312,7 +28312,7 @@
"/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Hire": {
"post": {
"tags": [
- "People.Actions"
+ "People.Person"
],
"summary": "Invoke action Hire",
"description": "Hires someone for the company.",
@@ -28717,7 +28717,7 @@
"/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()": {
"get": {
"tags": [
- "People.Functions"
+ "People.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "People.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Trips.Trip.GetInvolvedPeople",
@@ -29262,7 +29262,7 @@
"/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.ShareTrip": {
"post": {
"tags": [
- "People.Actions"
+ "People.Person"
],
"summary": "Invoke action ShareTrip",
"description": "Details of the shared trip.",
@@ -29302,7 +29302,7 @@
"/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.UpdatePersonLastName(lastName='{lastName}')": {
"get": {
"tags": [
- "People.Functions"
+ "People.Person"
],
"summary": "Invoke function UpdatePersonLastName",
"operationId": "People.Person.UpdatePersonLastName",
@@ -29836,7 +29836,7 @@
"/People/{UserName}/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()": {
"get": {
"tags": [
- "People.Functions"
+ "People.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "People.Person.Trips.Trip.GetInvolvedPeople",
@@ -31836,18 +31836,10 @@
"name": "Me.Trip",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "Me.Functions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "Me.Trips.PlanItem",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "Me.Actions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "NewComePeople.Person",
"x-ms-docs-toc-type": "page"
@@ -31860,14 +31852,6 @@
"name": "NewComePeople.Person.Location",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "NewComePeople.Functions",
- "x-ms-docs-toc-type": "container"
- },
- {
- "name": "NewComePeople.Actions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "NewComePeople.Trip",
"x-ms-docs-toc-type": "page"
@@ -31892,18 +31876,10 @@
"name": "People.Trip",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "People.Functions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "People.Trips.PlanItem",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "People.Actions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "ResetDataSource",
"x-ms-docs-toc-type": "container"
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.yaml b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.yaml
index b960188e..d36ed3de 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.yaml
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.yaml
@@ -4849,7 +4849,7 @@ paths:
'/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()':
get:
tags:
- - Me.Functions
+ - Me.Trip
summary: Invoke function GetInvolvedPeople
operationId: Me.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee.Trips.Trip.GetInvolvedPeople
produces:
@@ -5174,7 +5174,7 @@ paths:
/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFavoriteAirline():
get:
tags:
- - Me.Functions
+ - Me.Person
summary: Invoke function GetFavoriteAirline
operationId: Me.GetFavoriteAirline
responses:
@@ -5193,7 +5193,7 @@ paths:
'/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFriendsTrips(userName=''{userName}'')':
get:
tags:
- - Me.Functions
+ - Me.Person
summary: Invoke function GetFriendsTrips
operationId: Me.GetFriendsTrips
parameters:
@@ -5241,7 +5241,7 @@ paths:
/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetPeersForTrip:
post:
tags:
- - Me.Actions
+ - Me.Person
summary: Invoke action GetPeersForTrip
operationId: Me.GetPeersForTrip
parameters:
@@ -7352,7 +7352,7 @@ paths:
/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Hire:
post:
tags:
- - Me.Actions
+ - Me.Person
summary: Invoke action Hire
description: Hires someone for the company.
operationId: Me.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Hire
@@ -7602,7 +7602,7 @@ paths:
'/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()':
get:
tags:
- - Me.Functions
+ - Me.Trip
summary: Invoke function GetInvolvedPeople
operationId: Me.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Trips.Trip.GetInvolvedPeople
produces:
@@ -7927,7 +7927,7 @@ paths:
/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.ShareTrip:
post:
tags:
- - Me.Actions
+ - Me.Person
summary: Invoke action ShareTrip
description: Details of the shared trip.
operationId: Me.ShareTrip
@@ -7949,7 +7949,7 @@ paths:
'/Me/Microsoft.OData.Service.Sample.TrippinInMemory.Models.UpdatePersonLastName(lastName=''{lastName}'')':
get:
tags:
- - Me.Functions
+ - Me.Person
summary: Invoke function UpdatePersonLastName
operationId: Me.UpdatePersonLastName
parameters:
@@ -8262,7 +8262,7 @@ paths:
'/Me/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()':
get:
tags:
- - Me.Functions
+ - Me.Trip
summary: Invoke function GetInvolvedPeople
operationId: Me.Trips.Trip.GetInvolvedPeople
produces:
@@ -10502,7 +10502,7 @@ paths:
'/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFavoriteAirline()':
get:
tags:
- - NewComePeople.Functions
+ - NewComePeople.Person
summary: Invoke function GetFavoriteAirline
operationId: NewComePeople.Person.GetFavoriteAirline
parameters:
@@ -10522,7 +10522,7 @@ paths:
'/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFriendsTrips(userName=''{userName}'')':
get:
tags:
- - NewComePeople.Functions
+ - NewComePeople.Person
summary: Invoke function GetFriendsTrips
operationId: NewComePeople.Person.GetFriendsTrips
parameters:
@@ -10576,7 +10576,7 @@ paths:
'/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetPeersForTrip':
post:
tags:
- - NewComePeople.Actions
+ - NewComePeople.Person
summary: Invoke action GetPeersForTrip
operationId: NewComePeople.Person.GetPeersForTrip
parameters:
@@ -10597,7 +10597,7 @@ paths:
'/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Hire':
post:
tags:
- - NewComePeople.Actions
+ - NewComePeople.Person
summary: Invoke action Hire
description: Hires someone for the company.
operationId: NewComePeople.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Hire
@@ -10629,7 +10629,7 @@ paths:
'/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.ShareTrip':
post:
tags:
- - NewComePeople.Actions
+ - NewComePeople.Person
summary: Invoke action ShareTrip
description: Details of the shared trip.
operationId: NewComePeople.Person.ShareTrip
@@ -10651,7 +10651,7 @@ paths:
'/NewComePeople/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.UpdatePersonLastName(lastName=''{lastName}'')':
get:
tags:
- - NewComePeople.Functions
+ - NewComePeople.Person
summary: Invoke function UpdatePersonLastName
operationId: NewComePeople.Person.UpdatePersonLastName
parameters:
@@ -10959,7 +10959,7 @@ paths:
'/NewComePeople/{UserName}/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()':
get:
tags:
- - NewComePeople.Functions
+ - NewComePeople.Trip
summary: Invoke function GetInvolvedPeople
operationId: NewComePeople.Person.Trips.Trip.GetInvolvedPeople
produces:
@@ -16203,7 +16203,7 @@ paths:
'/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()':
get:
tags:
- - People.Functions
+ - People.Trip
summary: Invoke function GetInvolvedPeople
operationId: People.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee.Trips.Trip.GetInvolvedPeople
produces:
@@ -16576,7 +16576,7 @@ paths:
'/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFavoriteAirline()':
get:
tags:
- - People.Functions
+ - People.Person
summary: Invoke function GetFavoriteAirline
operationId: People.Person.GetFavoriteAirline
parameters:
@@ -16602,7 +16602,7 @@ paths:
'/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetFriendsTrips(userName=''{userName}'')':
get:
tags:
- - People.Functions
+ - People.Person
summary: Invoke function GetFriendsTrips
operationId: People.Person.GetFriendsTrips
parameters:
@@ -16656,7 +16656,7 @@ paths:
'/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetPeersForTrip':
post:
tags:
- - People.Actions
+ - People.Person
summary: Invoke action GetPeersForTrip
operationId: People.Person.GetPeersForTrip
parameters:
@@ -19189,7 +19189,7 @@ paths:
'/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Hire':
post:
tags:
- - People.Actions
+ - People.Person
summary: Invoke action Hire
description: Hires someone for the company.
operationId: People.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Hire
@@ -19475,7 +19475,7 @@ paths:
'/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()':
get:
tags:
- - People.Functions
+ - People.Trip
summary: Invoke function GetInvolvedPeople
operationId: People.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Trips.Trip.GetInvolvedPeople
produces:
@@ -19848,7 +19848,7 @@ paths:
'/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.ShareTrip':
post:
tags:
- - People.Actions
+ - People.Person
summary: Invoke action ShareTrip
description: Details of the shared trip.
operationId: People.Person.ShareTrip
@@ -19876,7 +19876,7 @@ paths:
'/People/{UserName}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.UpdatePersonLastName(lastName=''{lastName}'')':
get:
tags:
- - People.Functions
+ - People.Person
summary: Invoke function UpdatePersonLastName
operationId: People.Person.UpdatePersonLastName
parameters:
@@ -20256,7 +20256,7 @@ paths:
'/People/{UserName}/Trips/{TripId}/Microsoft.OData.Service.Sample.TrippinInMemory.Models.GetInvolvedPeople()':
get:
tags:
- - People.Functions
+ - People.Trip
summary: Invoke function GetInvolvedPeople
operationId: People.Person.Trips.Trip.GetInvolvedPeople
produces:
@@ -21578,22 +21578,14 @@ tags:
x-ms-docs-toc-type: page
- name: Me.Trip
x-ms-docs-toc-type: page
- - name: Me.Functions
- x-ms-docs-toc-type: container
- name: Me.Trips.PlanItem
x-ms-docs-toc-type: page
- - name: Me.Actions
- x-ms-docs-toc-type: container
- name: NewComePeople.Person
x-ms-docs-toc-type: page
- name: NewComePeople.Location
x-ms-docs-toc-type: page
- name: NewComePeople.Person.Location
x-ms-docs-toc-type: page
- - name: NewComePeople.Functions
- x-ms-docs-toc-type: container
- - name: NewComePeople.Actions
- x-ms-docs-toc-type: container
- name: NewComePeople.Trip
x-ms-docs-toc-type: page
- name: NewComePeople.Trips.PlanItem
@@ -21606,11 +21598,7 @@ tags:
x-ms-docs-toc-type: page
- name: People.Trip
x-ms-docs-toc-type: page
- - name: People.Functions
- x-ms-docs-toc-type: container
- name: People.Trips.PlanItem
x-ms-docs-toc-type: page
- - name: People.Actions
- x-ms-docs-toc-type: container
- name: ResetDataSource
x-ms-docs-toc-type: container
\ No newline at end of file
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.json b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.json
index 4ec8abe8..1e3f588e 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.json
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.json
@@ -7977,7 +7977,7 @@
"description": "Provides operations to call the GetInvolvedPeople method.",
"get": {
"tags": [
- "Me.Functions"
+ "Me.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "Me.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee.Trips.Trip.GetInvolvedPeople",
@@ -8518,7 +8518,7 @@
"description": "Provides operations to call the GetFavoriteAirline method.",
"get": {
"tags": [
- "Me.Functions"
+ "Me.Person"
],
"summary": "Invoke function GetFavoriteAirline",
"operationId": "Me.GetFavoriteAirline",
@@ -8544,7 +8544,7 @@
"description": "Provides operations to call the GetFriendsTrips method.",
"get": {
"tags": [
- "Me.Functions"
+ "Me.Person"
],
"summary": "Invoke function GetFriendsTrips",
"operationId": "Me.GetFriendsTrips",
@@ -8638,7 +8638,7 @@
"description": "Provides operations to call the GetPeersForTrip method.",
"post": {
"tags": [
- "Me.Actions"
+ "Me.Person"
],
"summary": "Invoke action GetPeersForTrip",
"operationId": "Me.GetPeersForTrip",
@@ -12054,7 +12054,7 @@
"description": "Provides operations to call the Hire method.",
"post": {
"tags": [
- "Me.Actions"
+ "Me.Person"
],
"summary": "Invoke action Hire",
"description": "Hires someone for the company.",
@@ -12449,7 +12449,7 @@
"description": "Provides operations to call the GetInvolvedPeople method.",
"get": {
"tags": [
- "Me.Functions"
+ "Me.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "Me.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Trips.Trip.GetInvolvedPeople",
@@ -12990,7 +12990,7 @@
"description": "Provides operations to call the ShareTrip method.",
"post": {
"tags": [
- "Me.Actions"
+ "Me.Person"
],
"summary": "Invoke action ShareTrip",
"description": "Details of the shared trip.",
@@ -13020,7 +13020,7 @@
"description": "Provides operations to call the UpdatePersonLastName method.",
"get": {
"tags": [
- "Me.Functions"
+ "Me.Person"
],
"summary": "Invoke function UpdatePersonLastName",
"operationId": "Me.UpdatePersonLastName",
@@ -13500,7 +13500,7 @@
"description": "Provides operations to call the GetInvolvedPeople method.",
"get": {
"tags": [
- "Me.Functions"
+ "Me.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "Me.Trips.Trip.GetInvolvedPeople",
@@ -17309,7 +17309,7 @@
"description": "Provides operations to call the GetFavoriteAirline method.",
"get": {
"tags": [
- "NewComePeople.Functions"
+ "NewComePeople.Person"
],
"summary": "Invoke function GetFavoriteAirline",
"operationId": "NewComePeople.Person.GetFavoriteAirline",
@@ -17340,7 +17340,7 @@
"description": "Provides operations to call the GetFriendsTrips method.",
"get": {
"tags": [
- "NewComePeople.Functions"
+ "NewComePeople.Person"
],
"summary": "Invoke function GetFriendsTrips",
"operationId": "NewComePeople.Person.GetFriendsTrips",
@@ -17444,7 +17444,7 @@
"description": "Provides operations to call the GetPeersForTrip method.",
"post": {
"tags": [
- "NewComePeople.Actions"
+ "NewComePeople.Person"
],
"summary": "Invoke action GetPeersForTrip",
"operationId": "NewComePeople.Person.GetPeersForTrip",
@@ -17478,7 +17478,7 @@
"description": "Provides operations to call the Hire method.",
"post": {
"tags": [
- "NewComePeople.Actions"
+ "NewComePeople.Person"
],
"summary": "Invoke action Hire",
"description": "Hires someone for the company.",
@@ -17534,7 +17534,7 @@
"description": "Provides operations to call the ShareTrip method.",
"post": {
"tags": [
- "NewComePeople.Actions"
+ "NewComePeople.Person"
],
"summary": "Invoke action ShareTrip",
"description": "Details of the shared trip.",
@@ -17569,7 +17569,7 @@
"description": "Provides operations to call the UpdatePersonLastName method.",
"get": {
"tags": [
- "NewComePeople.Functions"
+ "NewComePeople.Person"
],
"summary": "Invoke function UpdatePersonLastName",
"operationId": "NewComePeople.Person.UpdatePersonLastName",
@@ -18074,7 +18074,7 @@
"description": "Provides operations to call the GetInvolvedPeople method.",
"get": {
"tags": [
- "NewComePeople.Functions"
+ "NewComePeople.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "NewComePeople.Person.Trips.Trip.GetInvolvedPeople",
@@ -26697,7 +26697,7 @@
"description": "Provides operations to call the GetInvolvedPeople method.",
"get": {
"tags": [
- "People.Functions"
+ "People.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "People.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee.Trips.Trip.GetInvolvedPeople",
@@ -27318,7 +27318,7 @@
"description": "Provides operations to call the GetFavoriteAirline method.",
"get": {
"tags": [
- "People.Functions"
+ "People.Person"
],
"summary": "Invoke function GetFavoriteAirline",
"operationId": "People.Person.GetFavoriteAirline",
@@ -27356,7 +27356,7 @@
"description": "Provides operations to call the GetFriendsTrips method.",
"get": {
"tags": [
- "People.Functions"
+ "People.Person"
],
"summary": "Invoke function GetFriendsTrips",
"operationId": "People.Person.GetFriendsTrips",
@@ -27460,7 +27460,7 @@
"description": "Provides operations to call the GetPeersForTrip method.",
"post": {
"tags": [
- "People.Actions"
+ "People.Person"
],
"summary": "Invoke action GetPeersForTrip",
"operationId": "People.Person.GetPeersForTrip",
@@ -31602,7 +31602,7 @@
"description": "Provides operations to call the Hire method.",
"post": {
"tags": [
- "People.Actions"
+ "People.Person"
],
"summary": "Invoke action Hire",
"description": "Hires someone for the company.",
@@ -32061,7 +32061,7 @@
"description": "Provides operations to call the GetInvolvedPeople method.",
"get": {
"tags": [
- "People.Functions"
+ "People.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "People.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Trips.Trip.GetInvolvedPeople",
@@ -32682,7 +32682,7 @@
"description": "Provides operations to call the ShareTrip method.",
"post": {
"tags": [
- "People.Actions"
+ "People.Person"
],
"summary": "Invoke action ShareTrip",
"description": "Details of the shared trip.",
@@ -32724,7 +32724,7 @@
"description": "Provides operations to call the UpdatePersonLastName method.",
"get": {
"tags": [
- "People.Functions"
+ "People.Person"
],
"summary": "Invoke function UpdatePersonLastName",
"operationId": "People.Person.UpdatePersonLastName",
@@ -33315,7 +33315,7 @@
"description": "Provides operations to call the GetInvolvedPeople method.",
"get": {
"tags": [
- "People.Functions"
+ "People.Trip"
],
"summary": "Invoke function GetInvolvedPeople",
"operationId": "People.Person.Trips.Trip.GetInvolvedPeople",
@@ -35864,18 +35864,10 @@
"name": "Me.Trip",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "Me.Functions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "Me.Trips.PlanItem",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "Me.Actions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "NewComePeople.Person",
"x-ms-docs-toc-type": "page"
@@ -35888,14 +35880,6 @@
"name": "NewComePeople.Person.Location",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "NewComePeople.Functions",
- "x-ms-docs-toc-type": "container"
- },
- {
- "name": "NewComePeople.Actions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "NewComePeople.Trip",
"x-ms-docs-toc-type": "page"
@@ -35920,18 +35904,10 @@
"name": "People.Trip",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "People.Functions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "People.Trips.PlanItem",
"x-ms-docs-toc-type": "page"
},
- {
- "name": "People.Actions",
- "x-ms-docs-toc-type": "container"
- },
{
"name": "ResetDataSource",
"x-ms-docs-toc-type": "container"
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.yaml b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.yaml
index 0469102c..4d17cc15 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.yaml
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.yaml
@@ -5335,7 +5335,7 @@ paths:
description: Provides operations to call the GetInvolvedPeople method.
get:
tags:
- - Me.Functions
+ - Me.Trip
summary: Invoke function GetInvolvedPeople
operationId: Me.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee.Trips.Trip.GetInvolvedPeople
parameters:
@@ -5701,7 +5701,7 @@ paths:
description: Provides operations to call the GetFavoriteAirline method.
get:
tags:
- - Me.Functions
+ - Me.Person
summary: Invoke function GetFavoriteAirline
operationId: Me.GetFavoriteAirline
responses:
@@ -5720,7 +5720,7 @@ paths:
description: Provides operations to call the GetFriendsTrips method.
get:
tags:
- - Me.Functions
+ - Me.Person
summary: Invoke function GetFriendsTrips
operationId: Me.GetFriendsTrips
parameters:
@@ -5781,7 +5781,7 @@ paths:
description: Provides operations to call the GetPeersForTrip method.
post:
tags:
- - Me.Actions
+ - Me.Person
summary: Invoke action GetPeersForTrip
operationId: Me.GetPeersForTrip
requestBody:
@@ -8079,7 +8079,7 @@ paths:
description: Provides operations to call the Hire method.
post:
tags:
- - Me.Actions
+ - Me.Person
summary: Invoke action Hire
description: Hires someone for the company.
operationId: Me.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Hire
@@ -8352,7 +8352,7 @@ paths:
description: Provides operations to call the GetInvolvedPeople method.
get:
tags:
- - Me.Functions
+ - Me.Trip
summary: Invoke function GetInvolvedPeople
operationId: Me.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Trips.Trip.GetInvolvedPeople
parameters:
@@ -8718,7 +8718,7 @@ paths:
description: Provides operations to call the ShareTrip method.
post:
tags:
- - Me.Actions
+ - Me.Person
summary: Invoke action ShareTrip
description: Details of the shared trip.
operationId: Me.ShareTrip
@@ -8740,7 +8740,7 @@ paths:
description: Provides operations to call the UpdatePersonLastName method.
get:
tags:
- - Me.Functions
+ - Me.Person
summary: Invoke function UpdatePersonLastName
operationId: Me.UpdatePersonLastName
parameters:
@@ -9075,7 +9075,7 @@ paths:
description: Provides operations to call the GetInvolvedPeople method.
get:
tags:
- - Me.Functions
+ - Me.Trip
summary: Invoke function GetInvolvedPeople
operationId: Me.Trips.Trip.GetInvolvedPeople
parameters:
@@ -11598,7 +11598,7 @@ paths:
description: Provides operations to call the GetFavoriteAirline method.
get:
tags:
- - NewComePeople.Functions
+ - NewComePeople.Person
summary: Invoke function GetFavoriteAirline
operationId: NewComePeople.Person.GetFavoriteAirline
parameters:
@@ -11619,7 +11619,7 @@ paths:
description: Provides operations to call the GetFriendsTrips method.
get:
tags:
- - NewComePeople.Functions
+ - NewComePeople.Person
summary: Invoke function GetFriendsTrips
operationId: NewComePeople.Person.GetFriendsTrips
parameters:
@@ -11687,7 +11687,7 @@ paths:
description: Provides operations to call the GetPeersForTrip method.
post:
tags:
- - NewComePeople.Actions
+ - NewComePeople.Person
summary: Invoke action GetPeersForTrip
operationId: NewComePeople.Person.GetPeersForTrip
parameters:
@@ -11710,7 +11710,7 @@ paths:
description: Provides operations to call the Hire method.
post:
tags:
- - NewComePeople.Actions
+ - NewComePeople.Person
summary: Invoke action Hire
description: Hires someone for the company.
operationId: NewComePeople.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Hire
@@ -11745,7 +11745,7 @@ paths:
description: Provides operations to call the ShareTrip method.
post:
tags:
- - NewComePeople.Actions
+ - NewComePeople.Person
summary: Invoke action ShareTrip
description: Details of the shared trip.
operationId: NewComePeople.Person.ShareTrip
@@ -11769,7 +11769,7 @@ paths:
description: Provides operations to call the UpdatePersonLastName method.
get:
tags:
- - NewComePeople.Functions
+ - NewComePeople.Person
summary: Invoke function UpdatePersonLastName
operationId: NewComePeople.Person.UpdatePersonLastName
parameters:
@@ -12110,7 +12110,7 @@ paths:
description: Provides operations to call the GetInvolvedPeople method.
get:
tags:
- - NewComePeople.Functions
+ - NewComePeople.Trip
summary: Invoke function GetInvolvedPeople
operationId: NewComePeople.Person.Trips.Trip.GetInvolvedPeople
parameters:
@@ -17935,7 +17935,7 @@ paths:
description: Provides operations to call the GetInvolvedPeople method.
get:
tags:
- - People.Functions
+ - People.Trip
summary: Invoke function GetInvolvedPeople
operationId: People.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Employee.Trips.Trip.GetInvolvedPeople
parameters:
@@ -18357,7 +18357,7 @@ paths:
description: Provides operations to call the GetFavoriteAirline method.
get:
tags:
- - People.Functions
+ - People.Person
summary: Invoke function GetFavoriteAirline
operationId: People.Person.GetFavoriteAirline
parameters:
@@ -18384,7 +18384,7 @@ paths:
description: Provides operations to call the GetFriendsTrips method.
get:
tags:
- - People.Functions
+ - People.Person
summary: Invoke function GetFriendsTrips
operationId: People.Person.GetFriendsTrips
parameters:
@@ -18452,7 +18452,7 @@ paths:
description: Provides operations to call the GetPeersForTrip method.
post:
tags:
- - People.Actions
+ - People.Person
summary: Invoke action GetPeersForTrip
operationId: People.Person.GetPeersForTrip
parameters:
@@ -21251,7 +21251,7 @@ paths:
description: Provides operations to call the Hire method.
post:
tags:
- - People.Actions
+ - People.Person
summary: Invoke action Hire
description: Hires someone for the company.
operationId: People.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Hire
@@ -21568,7 +21568,7 @@ paths:
description: Provides operations to call the GetInvolvedPeople method.
get:
tags:
- - People.Functions
+ - People.Trip
summary: Invoke function GetInvolvedPeople
operationId: People.Person.Microsoft.OData.Service.Sample.TrippinInMemory.Models.Manager.Trips.Trip.GetInvolvedPeople
parameters:
@@ -21990,7 +21990,7 @@ paths:
description: Provides operations to call the ShareTrip method.
post:
tags:
- - People.Actions
+ - People.Person
summary: Invoke action ShareTrip
description: Details of the shared trip.
operationId: People.Person.ShareTrip
@@ -22020,7 +22020,7 @@ paths:
description: Provides operations to call the UpdatePersonLastName method.
get:
tags:
- - People.Functions
+ - People.Person
summary: Invoke function UpdatePersonLastName
operationId: People.Person.UpdatePersonLastName
parameters:
@@ -22433,7 +22433,7 @@ paths:
description: Provides operations to call the GetInvolvedPeople method.
get:
tags:
- - People.Functions
+ - People.Trip
summary: Invoke function GetInvolvedPeople
operationId: People.Person.Trips.Trip.GetInvolvedPeople
parameters:
@@ -24071,22 +24071,14 @@ tags:
x-ms-docs-toc-type: page
- name: Me.Trip
x-ms-docs-toc-type: page
- - name: Me.Functions
- x-ms-docs-toc-type: container
- name: Me.Trips.PlanItem
x-ms-docs-toc-type: page
- - name: Me.Actions
- x-ms-docs-toc-type: container
- name: NewComePeople.Person
x-ms-docs-toc-type: page
- name: NewComePeople.Location
x-ms-docs-toc-type: page
- name: NewComePeople.Person.Location
x-ms-docs-toc-type: page
- - name: NewComePeople.Functions
- x-ms-docs-toc-type: container
- - name: NewComePeople.Actions
- x-ms-docs-toc-type: container
- name: NewComePeople.Trip
x-ms-docs-toc-type: page
- name: NewComePeople.Trips.PlanItem
@@ -24099,11 +24091,7 @@ tags:
x-ms-docs-toc-type: page
- name: People.Trip
x-ms-docs-toc-type: page
- - name: People.Functions
- x-ms-docs-toc-type: container
- name: People.Trips.PlanItem
x-ms-docs-toc-type: page
- - name: People.Actions
- x-ms-docs-toc-type: container
- name: ResetDataSource
x-ms-docs-toc-type: container
\ No newline at end of file