File: ApiDescriptionGroup.cs
Web Access
Project: src\src\Mvc\Mvc.ApiExplorer\src\Microsoft.AspNetCore.Mvc.ApiExplorer.csproj (Microsoft.AspNetCore.Mvc.ApiExplorer)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Microsoft.AspNetCore.Mvc.ApiExplorer;
 
/// <summary>
/// Represents a group of related APIs.
/// </summary>
/// <remarks>
/// Endpoints are grouped by their <see cref="ApiDescription.GroupName"/>, which can be set
/// using the <see cref="Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithGroupName{TBuilder}(TBuilder, string)">WithGroupName</see> extension method on minimal API endpoints or the
/// <c>[ApiExplorerSettings(GroupName = "...")]</c> attribute on controller actions. Endpoints
/// without an explicit group name are placed in a single group with a <see langword="null"/>
/// <see cref="GroupName"/>.
/// <para>
/// Note that <see cref="Microsoft.AspNetCore.Builder.EndpointRouteBuilderExtensions.MapGroup(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder, string)">MapGroup</see> does not set the group name for its endpoints. It only applies
/// a route prefix. To assign a group name to all endpoints in a route group, chain
/// <see cref="Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithGroupName{TBuilder}(TBuilder, string)">WithGroupName</see> on the <see cref="Microsoft.AspNetCore.Builder.EndpointRouteBuilderExtensions.MapGroup(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder, string)">MapGroup</see> call.
/// </para>
/// </remarks>
public class ApiDescriptionGroup
{
    /// <summary>
    /// Creates a new <see cref="ApiDescriptionGroup"/>.
    /// </summary>
    /// <param name="groupName">The group name.</param>
    /// <param name="items">A collection of <see cref="ApiDescription"/> items for this group.</param>
    public ApiDescriptionGroup(string? groupName, IReadOnlyList<ApiDescription> items)
    {
        GroupName = groupName;
        Items = items;
    }
 
    /// <summary>
    /// The group name.
    /// </summary>
    public string? GroupName { get; }
 
    /// <summary>
    /// A collection of <see cref="ApiDescription"/> items for this group.
    /// </summary>
    public IReadOnlyList<ApiDescription> Items { get; }
}