# RustAPI Macros
**Procedural macros that power the RustAPI developer experience.**
> ℹ️ **Note**: These macros are re-exported by `rustapi-rs`. You do not need to add this crate manually.
## Attribute Macros
### `#[rustapi::main]`
Replaces `#[tokio::main]`. Sets up the runtime, tracing subscriber, and other framework essentials.
### HTTP Method Handlers
Registers a function as a route handler.
- `#[rustapi::get("/users/{id}")]`
- `#[rustapi::post("/users")]`
- `#[rustapi::put("/users/{id}")]`
- `#[rustapi::delete("/users/{id}")]`
- `#[rustapi::patch("/users/{id}")]`
- `#[rustapi::head("/health")]`
- `#[rustapi::options("/cors")]`
### OpenAPI Metadata
Enrich your auto-generated documentation.
- `#[rustapi::tag("Auth")]`: Groups endpoints.
- `#[rustapi::summary("Logs in a user")]`: Brief summary.
- `#[rustapi::description("Full markdown description...")]`: Detailed docs.
## Derive Macros
### `#[derive(Schema)]`
Generates a JSON Schema for the struct, used by `rustapi-openapi`.
*Wraps `utoipa::ToSchema` via `rustapi-openapi` integration.*
### `#[derive(Validate)]`
Generates validation logic.
*Wraps `validator::Validate` via `rustapi-validate` integration.*