Skip to content

Add contract-derived OpenAPI operation metadata - #796

Merged
AndreaCuneo merged 3 commits into
masterfrom
copilot/docs-mediator-framework-progress
Jul 26, 2026
Merged

Add contract-derived OpenAPI operation metadata#796
AndreaCuneo merged 3 commits into
masterfrom
copilot/docs-mediator-framework-progress

Conversation

Copilot AI commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Generated mediator endpoints lacked stable OpenAPI tags and operation IDs, producing flat API documentation and unreliable generated client method names. gRPC grouping also did not share HTTP taxonomy.

  • Contract metadata
    • Added transport-neutral [ApiTag("...")].
    • Defaults tags to the contract namespace’s final segment.
  • Minimal API generator
    • Emits .WithTags(...) and .WithName(...) for all endpoint shapes.
    • Adds version suffixes for expanded endpoints.
    • Reports ARKMF016 for duplicate operation names.
  • gRPC generator
    • Uses [ApiTag] as the service-group fallback; [ServiceGroup] remains authoritative.
  • Coverage
    • Updated sample contracts, generator tests, design documentation, and progress tracking.
[ApiTag("Greetings")]
[HttpEndpoint("GET", "/api/v{version}/greetings/{id}")]
public sealed record GetGreetingQuery : IQuery<GreetingResponse>;

Copilot AI and others added 2 commits July 26, 2026 09:05
Co-authored-by: AndreaCuneo <5227688+AndreaCuneo@users.noreply.github.com>
Co-authored-by: AndreaCuneo <5227688+AndreaCuneo@users.noreply.github.com>
Copilot AI requested review from Copilot and removed request for Copilot July 26, 2026 09:28
@AndreaCuneo
AndreaCuneo marked this pull request as ready for review July 26, 2026 09:28
@AndreaCuneo
AndreaCuneo requested a review from a team as a code owner July 26, 2026 09:28
Copilot AI review requested due to automatic review settings July 26, 2026 09:28

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds transport-neutral, contract-derived API taxonomy so generated HTTP + gRPC surfaces share stable grouping and operation naming, improving OpenAPI output and downstream client generation stability.

Changes:

  • Introduces [ApiTag("...")] with namespace-last-segment defaulting.
  • Minimal API generator now emits .WithTags(...) + .WithName(...) for all endpoints and reports ARKMF016 on duplicate operation names.
  • gRPC generator uses [ApiTag] as the fallback service grouping when [ServiceGroup] is absent; docs/tests updated accordingly.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/Ark.Tools.MediatorFramework.Tests/GeneratorSnapshotTests.cs Extends generator snapshot coverage for tags, operation names, duplicate detection, and gRPC fallback grouping.
src/mediator-framework/Ark.Tools.MediatorFramework/ApiTagAttribute.cs Adds new public attribute to override default API tag/group derivation.
src/mediator-framework/Ark.Tools.MediatorFramework.MinimalApi.Generators/MinimalApiEndpointGenerator.cs Emits OpenAPI metadata (tags/name) and adds ARKMF016 duplicate operation name diagnostic.
src/mediator-framework/Ark.Tools.MediatorFramework.Grpc.Generators/GrpcEndpointGenerator.cs Uses [ApiTag] as grouping fallback when [ServiceGroup] is not present.
samples/Ark.MediatorFramework.Sample/src/Ark.MediatorFramework.Sample.Application/GreetingContracts.cs Updates sample contract to demonstrate tagging.
docs/mediator-framework/progress/tasks/README.md Marks NET-06 as completed in progress tracking.
docs/mediator-framework/progress/tasks/aspnetcore/NET-06-openapi-tags-operation-names.md Checks off acceptance criteria for NET-06 task.
docs/mediator-framework/progress/tasks.md Marks T12.1 as completed.
docs/mediator-framework/design.md Documents [ApiTag] behavior and new diagnostic ARKMF016.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/mediator-framework/Ark.Tools.MediatorFramework/ApiTagAttribute.cs Outdated
Comment thread docs/mediator-framework/design.md Outdated
Comment thread tests/Ark.Tools.MediatorFramework.Tests/GeneratorSnapshotTests.cs
… fix ARKMF016 full type names; document GrpcMethod default

Co-authored-by: AndreaCuneo <5227688+AndreaCuneo@users.noreply.github.com>
Copilot AI requested review from Copilot and removed request for Copilot July 26, 2026 09:52
Copilot AI requested a review from AndreaCuneo July 26, 2026 09:56
@AndreaCuneo
AndreaCuneo merged commit dd5fe7d into master Jul 26, 2026
7 checks passed
@AndreaCuneo
AndreaCuneo deleted the copilot/docs-mediator-framework-progress branch July 26, 2026 10:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants