Success responses now use ApiResponse<T>{ Success=true, Data=T }
instead of returning raw T — consistent shape for all outcomes.
Ref: IT-628
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- ApiResponse<T>, ApiError in Api/Infrastructure
- ApiControllerBase with IMediator, FromServiceResult, MapServiceError
- EmailTemplatesController: GET list, GET one, POST, PUT, DELETE
- EmailChannelsController: GET list, GET one, POST, PUT, DELETE
Ref: IT-628
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>