-
-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
apiAPI generation and documentationAPI generation and documentationenhancementNew feature or requestNew feature or request
Description
Summary
Implement automatic HTTP handler generation with full OpenAPI/Swagger documentation via utoipa integration.
Motivation
Currently users manually write HTTP handlers. With commands already generating business logic entry points, we can auto-generate the HTTP layer with professional API documentation.
Proposed Syntax
#[derive(Entity)]
#[entity(
table = "users",
commands,
events,
api(
tag = "Users",
tag_description = "User management API",
path_prefix = "/api/v1",
security = "bearer",
public = [Register],
)
)]
pub struct User {
#[id]
id: Uuid,
/// User email address
#[field(create, update, response)]
#[validate(email, max_length = 255)]
#[example = "user@example.com"]
email: String,
#[command(Register, summary = "Register new user")]
#[command(Deactivate, summary = "Deactivate user")]
}Generated Output
- Axum handlers with
#[utoipa::path]annotations - OpenAPI schemas for all DTOs with descriptions, constraints, examples
- Router factory function
- OpenApi struct for Swagger UI
Sub-tasks
- feat(api): parse api(...) entity attributes #76 Parse
api(...)attributes - feat(api): generate HTTP handlers from commands #77 Generate handlers from commands
- feat(api): doc comments to OpenAPI descriptions #78 Doc comments to OpenAPI descriptions
- feat(api): validation attributes to OpenAPI constraints #79 Validation to OpenAPI constraints
- feat(api): example values for OpenAPI schemas #80 Examples support via
#[example] - feat(api): security configuration for endpoints #81 Security configuration
- feat(api): auto-document error responses #82 Error type documentation
- feat(api): API versioning support #83 API versioning support
Dependencies
- utoipa
- utoipa-axum
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
apiAPI generation and documentationAPI generation and documentationenhancementNew feature or requestNew feature or request