koprogo_api/application/dto/module_dto.rs
1//! DTOs du registre de modules — Story 5.1 (#585).
2
3use serde::{Deserialize, Serialize};
4use utoipa::ToSchema;
5
6use crate::domain::entities::Module;
7
8/// Réponse de `GET /acps/{id}/modules`.
9///
10/// La forme est **imposée par la moitié frontend déjà livrée**
11/// (`frontend/src/lib/api/modules.ts`, `EnabledModulesResponseDto`), qui a
12/// été écrite en attendant cette story : `acp_id` en `snake_case`.
13///
14/// `modules` porte `Module` et non `String`. Le fil est identique — `Module`
15/// se sérialise en `snake_case` — mais le **schéma** change : il énumère les
16/// sept valeurs au lieu d'annoncer « une chaîne quelconque ». C'est ce qui
17/// permet à `api.d.ts` d'être plus fort que la liste écrite à la main côté
18/// frontend, au lieu d'être plus faible qu'elle.
19#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
20pub struct EnabledModulesResponseDto {
21 pub acp_id: String,
22 pub modules: Vec<Module>,
23}