# API Data Flow (Strict) This document defines the **apps/api** data flow and responsibilities. API scope: - `apps/api/**` ## 1) API role The API is a **delivery application**. Responsibilities: - HTTP transport boundary - authentication and authorization enforcement - request validation (transport shape) - mapping between HTTP DTOs and Core inputs - calling Core use cases - mapping Core results into HTTP responses ## 2) API data types (strict) ### 2.1 Request DTO Definition: HTTP request contract shape. Rules: - lives in the API layer - validated at the API boundary - never enters Core unchanged ### 2.2 Response DTO Definition: HTTP response contract shape. Rules: - lives in the API layer - never contains domain objects ### 2.3 API Presenter Definition: mapping logic from Core results to HTTP response DTOs. Rules: - pure transformation - no business rules - may hold state per request ## 3) Canonical flow ```text HTTP Request ↓ Guards (auth, authorization, feature availability) ↓ Controller (transport-only) ↓ Mapping: Request DTO → Core input ↓ Core Use Case ↓ Mapping: Core result → Response DTO (Presenter) ↓ HTTP Response ``` ## 4) Non-negotiable rules 1. Controllers contain no business rules. 2. Controllers do not construct domain objects. 3. Core results never leave the API without mapping. See authorization model: [`docs/architecture/api/AUTHORIZATION.md`](docs/architecture/api/AUTHORIZATION.md:1).