# Add item sequence ```mermaid sequenceDiagram participant Client as HTTP Client participant Middleware as HttpJwtMiddleware participant Server as HttpServer participant Controller as StoreController participant AuthService as IAuthService participant UseCase as AddItem participant Clock as ITimeProvider participant Policy as ItemExpirationPolicy participant OrderService as IOrderService participant HttpClient as HttpOrderService participant Repo as IItemRepository Client->>Server: POST /items with JWT Server->>Middleware: Validate token Middleware-->>Server: token valid Server->>Controller: Forward request Controller->>AuthService: Extract user ID from token AuthService-->>Controller: User ID Controller->>Controller: Parse request body to Item Controller->>UseCase: execute(item) UseCase->>Clock: now() Clock-->>UseCase: current time UseCase->>Policy: isExpired(item, currentTime) Policy-->>UseCase: boolean alt Item is expired UseCase->>OrderService: orderItem(item) OrderService->>HttpClient: POST to order URL HttpClient-->>OrderService: Response OrderService-->>UseCase: void end UseCase->>Repo: save(item) Repo->>Repo: Persist to file storage Repo-->>UseCase: Item ID UseCase-->>Controller: Item ID Controller->>Controller: Build success response Controller-->>Client: 201 Created with Item ID alt Error occurs UseCase-->>Controller: Exception Controller->>Controller: Build error response Controller-->>Client: 4xx/5xx error end alt Authentication fails Middleware-->>Client: 401 Unauthorized end ```