Skip to content

Roadmap

David Kallesen edited this page Dec 22, 2025 · 1 revision

๐Ÿ—บ๏ธ Roadmap

This document provides a comprehensive view of feature status, planned features, and strategic direction for the Atc.Rest.Api.SourceGenerator project.


๐ŸŽฏ Project Vision

To provide a production-ready, enterprise-grade Roslyn source generator that automatically generates high-quality REST API server and client code from OpenAPI specifications, with full Native AOT support and minimal runtime overhead.

๐ŸŒŸ Core Principles:

  1. โšก Zero-configuration - Works out of the box with sensible defaults
  2. ๐Ÿ”’ Contract-enforced results - Handlers can only return responses defined in OpenAPI
  3. ๐Ÿ›ก๏ธ Type safety - Compile-time validation of API contracts
  4. ๐Ÿš€ Minimal API - Modern ASP.NET Core patterns (not MVC Controllers)
  5. ๐Ÿ“ฆ Native AOT - Full compatibility with ahead-of-time compilation

๐Ÿ“Š Feature Status Overview

๐Ÿ–ฅ๏ธ Server Features

Feature Status
Record type generation โœ… Done
Nullable reference types โœ… Done
Property validation attributes โœ… Done
Array/collection handling โœ… Done
Nested object support โœ… Done
allOf composition (generic types) โœ… Done
Type conflict resolution โœ… Done
Enum generation โœ… Done
oneOf/anyOf polymorphism โœ… Done
AdditionalProperties (Dictionary) โœ… Done
Query/Path parameter DTOs โœ… Done
Handler interfaces per operation โœ… Done
MapGet/MapPost/MapPut/MapDelete โœ… Done
[AsParameters] binding โœ… Done
Endpoint grouping (MapGroup) โœ… Done
IEndpointDefinition pattern โœ… Done
ValidationFilter integration โœ… Done
GlobalErrorHandlingMiddleware โœ… Done
API versioning support โœ… Done
File upload (IFormFile) โœ… Done
multipart/form-data โœ… Done
Handler scaffolding with assembly scanning โœ… Done

๐Ÿ” Security & Authorization

Feature Status
x-authentication-* extensions (ATC) โœ… Done
x-authorize-roles extension โœ… Done
.RequireAuthorization() generation โœ… Done
[AllowAnonymous] override โœ… Done
SecurityPolicies constants โœ… Done
OAuth2 scopes policy generation โœ… Done
Bearer/JWT scheme โœ… Done
API Key scheme โœ… Done
OpenID Connect scheme โœ… Done

๐Ÿšฆ Rate Limiting

Feature Status
x-ratelimit-* extensions โœ… Done
Document/Path/Operation-level policies โœ… Done
.RequireRateLimiting() generation โœ… Done
RateLimitPolicies constants โœ… Done
Fixed/Sliding/TokenBucket limiters โœ… Done
AddApiRateLimiting() DI extension โœ… Done

๐Ÿ—„๏ธ Caching

Feature Status
๐Ÿ“ค Output Caching (x-cache-type: output) โœ… Done
OutputCachePolicies constants โœ… Done
AddApiOutputCaching() DI extension โœ… Done
.CacheOutput() endpoint integration โœ… Done
๐Ÿ”€ HybridCache (x-cache-type: hybrid) โœ… Done
CachePolicies constants โœ… Done
AddApiCaching() DI extension โœ… Done
In-Memory/Distributed/Hybrid modes โœ… Done
Tag-based invalidation โœ… Done

๐Ÿ“ฑ Client Features

Feature Status
TypedClient HTTP client โœ… Done
GET/POST/PUT/DELETE methods โœ… Done
IAsyncEnumerable streaming โœ… Done
File upload (Stream) โœ… Done
PaginatedResult support โœ… Done
EndpointPerOperation mode โœ… Done
BinaryEndpointResponse for downloads โœ… Done
OAuth token management โœ… Done

๐Ÿ”„ Resilience & Retry

Feature Status
x-retry-* extensions โœ… Done
ResiliencePolicies constants โœ… Done
AddApiResilience() DI extension โœ… Done
Exponential backoff retry โœ… Done
Circuit breaker support โœ… Done
Configurable CB parameters โœ… Done
Timeout configuration โœ… Done
Retry-After header handling โœ… Done

โœ… Validation

Feature Status
None / Standard / Strict strategies โœ… Done
Core validation rules (VAL001-002) โœ… Done
Naming rules (NAM001-006) โœ… Done
Schema rules (SCH001-013) โœ… Done
Operation rules (OPR001-025) โœ… Done
Security rules (SEC001-010) โœ… Done

๐Ÿ“‹ Total: 66 validation rules implemented across 9 categories


๐Ÿ“œ OpenAPI Version Support

Version Status
OpenAPI 3.0.x (3.0.0-3.0.4) โœ… Supported
OpenAPI 3.1.x โš ๏ธ Partial support
OpenAPI 2.0 (Swagger) ๐Ÿšซ Blocked (VAL002 error)

โš ๏ธ OpenAPI 3.1 specific features not yet supported:

  • Nullable type arrays (type: [string, null])
  • $ref with sibling properties
  • Webhooks
  • JSON Schema 2020-12

๐Ÿ”ฎ Not Yet Implemented

๐Ÿ–ฅ๏ธ Server Generation

Feature Priority Notes
MVC Controller generation ๐Ÿ’ญ Nice-to-have Only Minimal API supported

๐Ÿ“„ Model Generation

Feature Priority Notes
Recursive schemas ๐Ÿ’ญ Nice-to-have Tree structures
not schemas ๐Ÿ”ฝ Low Negation patterns

๐Ÿ“ฑ Client Generation

Feature Priority Notes
Request/response logging ๐Ÿ’ญ Nice-to-have ILogger integration

๐Ÿš€ Future Enhancements

๐Ÿ“ Custom Templates

Allow developers to customize generated code structure:

{
  "templatePath": "Templates/CustomHandler.template"
}

๐Ÿ—๏ธ Repository Pattern Generation

Auto-generate repository interfaces alongside handlers:

public interface IPetRepository
{
    Task<Pet?> GetByIdAsync(long id, CancellationToken ct);
    Task<Pet[]> ListAsync(int? limit, CancellationToken ct);
}

๐Ÿงช Unit Test Stub Generation

Generate xUnit test stubs for handlers:

public class ListPetsHandlerTests
{
    [Fact]
    public async Task ExecuteAsync_ReturnsOk_WhenPetsExist()
    {
        // Arrange, Act, Assert
    }
}

๐Ÿ”Œ Plugin System

Extensible validation and generation:

public interface IGeneratorPlugin
{
    void OnSchemaProcessed(OpenApiSchema schema, StringBuilder output);
    void OnOperationProcessed(OpenApiOperation operation, StringBuilder output);
}

๐Ÿ“ˆ Implementation Statistics

Category Implemented Percentage
๐Ÿ–ฅ๏ธ Server features 60/60 100%
๐Ÿ“ฑ Client features 26/26 100%
โœ… Validation rules 66/66 100%
๐Ÿ—„๏ธ Caching features 20/20 100%
๐Ÿ“œ OpenAPI 3.0 support ~95% ~95%
๐Ÿ“œ OpenAPI 3.1 support ~70% ~70%

โš ๏ธ Breaking Changes from CLI Tool

If migrating from atc-rest-api-generator CLI:

Change ๐Ÿ”ด Old ๐ŸŸข New
Models Classes Records
Parameters Individual args Parameters class
Request body Separate parameter parameters.Request
Endpoints MVC Controllers Minimal API
Generation CLI command On build
Configuration ApiGeneratorOptions.json Marker files

๐Ÿ“… Version History

๐Ÿท๏ธ Current: Preview

  • โœ… Server Minimal API generation
  • โœ… Client TypedClient + EndpointPerOperation modes
  • โœ… Handler scaffolding
  • โœ… Enum generation
  • โœ… File upload/download support
  • โœ… IAsyncEnumerable streaming
  • โœ… Pagination with allOf
  • โœ… All 66 validation rules implemented
  • โœ… Rate Limiting
  • โœ… Resilience & Retry
  • โœ… Security Enhancements
  • โœ… OAuth Token Management
  • โœ… API Versioning
  • โœ… Server-Side Caching (Output Caching + HybridCache)

๐Ÿท๏ธ Planned: v1.0

  • ๐Ÿ“‹ Full OpenAPI 3.1 support
  • ๐Ÿ“‹ Documentation generation
  • ๐Ÿ“‹ Performance benchmarks

๐Ÿท๏ธ Future: v2.0+

  • ๐Ÿ’ญ MVC Controller support (maybe)
  • ๐Ÿ’ญ Custom templates
  • ๐Ÿ’ญ Unit test generation
  • ๐Ÿ’ญ Repository pattern
  • ๐Ÿ’ญ Plugin system

๐Ÿค Contributing

Want to help implement a feature?

๐ŸŒฑ Good First Issues

  • Add array URL encoding support in TypedClient mode
  • Implement OpenAPI 3.1 nullable type arrays
  • Add request/response logging support

๐Ÿ“ How to Contribute

  1. ๐Ÿ” Check existing issues on GitHub
  2. ๐Ÿ“ Create an issue describing the feature
  3. ๐Ÿด Fork the repository
  4. ๐Ÿ’ป Implement following existing patterns
  5. ๐Ÿงช Add tests using the scenario testing framework
  6. ๐Ÿš€ Submit a PR

๐Ÿ  Home

๐Ÿ“– Getting Started

โš™๏ธ Features

๐Ÿ“‹ Reference


๐Ÿ”— Resources

Clone this wiki locally