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