openapi: 3.0.0 paths: /api/v2: get: description: Returns a simple greeting message from the application. operationId: AppController_getHello parameters: [] responses: "200": description: Returns a greeting message. content: application/json: schema: type: string summary: Get application greeting tags: - App /api/v2/config: get: operationId: getConfig parameters: [] responses: "200": description: Configuration du client content: application/json: schema: $ref: "#/components/schemas/ConfigDto" summary: Récupérer la configuration du client tags: - Config /api/v2/tokens: get: description: Cette méthode permet de récupérer les tokens (applicatifs et personnels), avec pagination et filtre optionnel par type. operationId: TokenController_list parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: kind required: false in: query description: Filtre par type de token (service ou personal) schema: type: string enum: - personal - service responses: "200": description: Liste paginée des tokens récupérée avec succès content: application/json: schema: $ref: "#/components/schemas/PaginatedTokenDto" summary: Récupère les tokens de manière paginée tags: &a1 - tokens post: description: Cette méthode permet de créer un nouveau token de service. operationId: TokenController_createService parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateServiceTokenDto" responses: "201": description: Token créé avec succès content: application/json: schema: $ref: "#/components/schemas/ExposedTokenDto" summary: Crée un nouveau token de service tags: *a1 /api/v2/tokens/personal: get: description: Cette méthode permet de récupérer tous les tokens personnels. operationId: TokenController_findPersonal parameters: [] responses: "200": description: Liste des tokens récupérée avec succès content: application/json: schema: type: array items: $ref: "#/components/schemas/TokenDto" summary: Récupère tous les tokens personnels tags: *a1 post: description: Cette méthode permet de créer un nouveau token personnel. operationId: TokenController_createPersonal parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreatePersonalTokenDto" responses: "201": description: Token créé avec succès content: application/json: schema: $ref: "#/components/schemas/ExposedTokenDto" summary: Crée un nouveau token personnel tags: *a1 /api/v2/tokens/{id}/regenerate: post: description: Cette méthode permet de régénérer un token de service. operationId: TokenController_regenerate parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/RegenerateTokenDto" responses: "200": description: Token régénéré avec succès content: application/json: schema: $ref: "#/components/schemas/TokenDto" summary: Régénère un token de service tags: *a1 /api/v2/tokens/{id}: delete: description: Cette méthode permet de supprimer (révoquer) un token de service. operationId: TokenController_delete parameters: - name: id required: true in: path schema: type: string responses: "204": description: Token supprimé avec succès summary: Supprime (révoque) un token de service tags: *a1 /api/v2/tokens/personal/{id}: delete: description: Cette méthode permet de supprimer (révoquer) un token personnel. operationId: TokenController_deletePersonal parameters: - name: id required: true in: path schema: type: string responses: "204": description: Token supprimé avec succès summary: Supprime (révoque) un token personnel tags: *a1 /api/v2/users/me: get: operationId: UserController_findMe parameters: [] responses: "200": description: Informations utilisateur trouvées content: application/json: schema: $ref: "#/components/schemas/UserWithPermissions" "404": description: Utilisateur non trouvé summary: Récupérer ses propres informations utilisateur tags: &a2 - users patch: description: "Permet à un utilisateur de modifier ses propres préférences (ex: notifications par email)." operationId: UserController_updateMe parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateUserPreferencesDto" responses: "200": description: Préférences mises à jour avec succès content: application/json: schema: $ref: "#/components/schemas/UserWithPermissions" "404": description: Utilisateur non trouvé summary: Mettre à jour ses propres préférences utilisateur tags: *a2 /api/v2/users/me/subscribe/{appId}: post: operationId: UserController_subscribe parameters: - name: appId required: true in: path description: ID de l'application à suivre schema: type: string responses: "200": description: Abonnement pris en compte content: application/json: schema: $ref: "#/components/schemas/UserWithPermissions" "201": description: Abonnement pris en compte content: application/json: schema: $ref: "#/components/schemas/UserWithPermissions" summary: S'abonner aux notifications d'une application tags: *a2 delete: operationId: UserController_unsubscribe parameters: - name: appId required: true in: path description: ID de l'application à ne plus suivre schema: type: string responses: "200": description: Désabonnement pris en compte content: application/json: schema: $ref: "#/components/schemas/UserWithPermissions" summary: Se désabonner des notifications d'une application tags: *a2 /api/v2/users/by-email/{email}/sync-organization-from-maia: get: description: Interroge MAIA pour récupérer l'organisation et les informations personnelles associées à cet email, sans modifier l'utilisateur en base. operationId: UserController_syncOrganizationFromMaiaByEmail parameters: - name: email required: true in: path description: Email de l'utilisateur schema: type: string responses: "200": description: Informations MAIA récupérées content: application/json: schema: $ref: "#/components/schemas/MaiaOrganizationSuggestionDto" "403": description: Accès refusé - Privilège admin requis "404": description: Utilisateur non trouvé summary: Récupérer les informations MAIA d'un utilisateur par email tags: *a2 /api/v2/users/{id}/sync-organization-from-maia: post: description: Recherche l'utilisateur dans MAIA à partir de son email, crée l'organisation si nécessaire, puis l'associe à l'utilisateur ciblé. operationId: UserController_syncOrganizationFromMaia parameters: - name: id required: true in: path description: ID de l'utilisateur schema: type: string responses: "200": description: Organisation synchronisée avec succès content: application/json: schema: $ref: "#/components/schemas/UserWithPermissions" "403": description: Accès refusé - Privilège admin requis "404": description: Utilisateur non trouvé summary: Synchroniser l'organisation d'un utilisateur depuis MAIA tags: *a2 /api/v2/users/sync-organizations-from-maia: post: description: Lance une synchronisation des organisations utilisateurs depuis MAIA en tâche de fond. operationId: UserController_syncOrganizationsFromMaia parameters: [] requestBody: required: false content: application/json: schema: $ref: "#/components/schemas/SyncOrganizationsDto" responses: "200": description: Batch MAIA lancé en tâche de fond content: application/json: schema: $ref: "#/components/schemas/SyncOrganizationsResponseDto" "403": description: Accès refusé - Privilège admin requis summary: Synchroniser les organisations depuis MAIA (batch) tags: *a2 /api/v2/users/impersonate/stop: post: description: Clôture la session d'impersonation active de l'administrateur. À appeler en conservant le header d'impersonation pour que le serveur identifie l'administrateur réel. operationId: UserController_stopImpersonation parameters: [] responses: "204": description: Impersonation arrêtée summary: Arrêter l'impersonation en cours tags: *a2 /api/v2/users/{id}/impersonate: post: description: "Démarre une session d'impersonation : l'administrateur se fait passer pour l'utilisateur cible. Renvoie les informations de l'utilisateur impersonné. Accès limité aux administrateurs." operationId: UserController_impersonate parameters: - name: id required: true in: path description: ID de l'utilisateur à impersonner schema: type: string responses: "200": description: Session d'impersonation démarrée content: application/json: schema: $ref: "#/components/schemas/UserWithPermissions" "403": description: Accès refusé - Privilège admin requis, ou utilisateur hors du périmètre de l'administrateur "404": description: Utilisateur non trouvé summary: Impersonner un utilisateur tags: *a2 /api/v2/users/{id}/block: post: description: "Empêche un utilisateur de s'authentifier (ex : a quitté l'organisation). Rejeté à l'authentification quel que soit le moyen d'accès (SSO ou token API). Accès limité aux administrateurs." operationId: UserController_block parameters: - name: id required: true in: path description: ID de l'utilisateur à bloquer schema: type: string responses: "200": description: Utilisateur bloqué avec succès content: application/json: schema: $ref: "#/components/schemas/UserWithPermissions" "403": description: Accès refusé - Privilège admin requis "404": description: Utilisateur non trouvé summary: Bloquer l'accès d'un utilisateur tags: *a2 /api/v2/users/{id}/unblock: post: description: Rétablit l'accès d'un utilisateur précédemment bloqué. Accès limité aux administrateurs. operationId: UserController_unblock parameters: - name: id required: true in: path description: ID de l'utilisateur à débloquer schema: type: string responses: "200": description: Utilisateur débloqué avec succès content: application/json: schema: $ref: "#/components/schemas/UserWithPermissions" "403": description: Accès refusé - Privilège admin requis "404": description: Utilisateur non trouvé summary: Débloquer l'accès d'un utilisateur tags: *a2 /api/v2/users/{id}: patch: description: Permet de modifier les permissions d'un utilisateur. Accès limité aux administrateurs. operationId: UserController_update parameters: - name: id required: true in: path description: ID de l'utilisateur schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateUserDto" responses: "200": description: Utilisateur mis à jour avec succès content: application/json: schema: $ref: "#/components/schemas/UserWithPermissions" "403": description: |- Une conformité RGAA existe déjà pour cette application Accès refusé - Privilège admin requis "404": description: Utilisateur non trouvé summary: Mettre à jour les permissions d'un utilisateur tags: *a2 /api/v2/users/{id}/permission-logs: get: description: Retourne l'historique des changements de rôle et de permissions d'un utilisateur, avec la date et l'email de l'auteur de chaque modification. Accès limité aux administrateurs. operationId: UserController_findPermissionLogs parameters: - name: id required: true in: path description: ID de l'utilisateur schema: type: string responses: "200": description: Historique des modifications de droits content: application/json: schema: type: array items: $ref: "#/components/schemas/UserPermissionLogDto" "403": description: Accès refusé - Privilège admin requis summary: Récupérer l'historique des modifications de droits d'un utilisateur tags: *a2 /api/v2/users: get: description: Récupère la liste de tous les utilisateurs avec leurs permissions. Supporte la recherche par email. Accès limité aux administrateurs. operationId: UserController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: type required: false in: query description: Type d'utilisateur. Utiliser les valeurs de /userTypes schema: default: - human example: - human type: array items: type: string enum: - human - bot - name: search required: false in: query schema: type: string responses: "200": description: Liste paginée des utilisateurs content: application/json: schema: $ref: "#/components/schemas/PaginatedUserWithPermissions" "403": description: Accès refusé - Privilège admin requis summary: Lister tous les utilisateurs tags: *a2 /api/v2/organization-maia-references: post: operationId: OrganizationMaiaReferencesController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateOrganizationMaiaReferenceDto" responses: "201": description: Référence créée content: application/json: schema: $ref: "#/components/schemas/OrganizationMaiaReferenceDto" "404": description: Organisation non trouvée "409": description: La référence MAIA existe déjà summary: Créer une référence MAIA vers une organisation tags: &a3 - organization-maia-references get: operationId: OrganizationMaiaReferencesController_findAll parameters: - name: organizationId required: false in: query description: Filtrer par organisation locale schema: example: f09ed26a-8415-476a-be3b-ada479291c34 type: string responses: "200": description: Liste des références MAIA content: application/json: schema: $ref: "#/components/schemas/PaginatedOrganizationMaiaReferenceDto" summary: Lister les références MAIA tags: *a3 /api/v2/organization-maia-references/{id}: delete: operationId: OrganizationMaiaReferencesController_remove parameters: - name: id required: true in: path schema: type: string responses: "204": description: Référence supprimée summary: Supprimer une référence MAIA tags: *a3 /api/v2/email/logs: get: operationId: EmailController_findLogs parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc responses: "200": description: Liste paginée de l'historique des e-mails envoyés content: application/json: schema: $ref: "#/components/schemas/PaginatedEmailLogDto" summary: Liste l'historique des e-mails envoyés (admin) tags: &a4 - email /api/v2/email/digest: post: operationId: EmailController_runDigest parameters: - name: day required: false in: query schema: type: string responses: "204": description: Digest déclenché summary: Exécute le digest email des abonnés (admin) tags: *a4 /api/v2/applications/{applicationId}/metadatas: get: operationId: ApplicationMetadatasController_find parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: createdAtGte required: false in: query description: Date de création minimum (inclusive) schema: example: 2023-01-01T00:00:00.000Z type: string - name: createdAtLte required: false in: query description: Date de création maximum (inclusive) schema: example: 2023-12-31T23:59:59.999Z type: string responses: "200": description: Liste des metadatas content: application/json: schema: $ref: "#/components/schemas/PaginatedMetadataDto" summary: Récupérer toutes les metadatas d'une application tags: &a5 - Metadatas /api/v2/applications/{applicationId}/metadatas/first-last: get: operationId: ApplicationMetadatasController_getFirstAndLastMetadata parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "200": description: La première et la dernière metadata content: application/json: schema: $ref: "#/components/schemas/FirstLastMetadataDto" summary: Retourne la première et la dernière metadata d'une application tags: *a5 /api/v2/metadatas: get: operationId: MetadatasController_find parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: createdAtGte required: false in: query description: Date de création minimum (inclusive) schema: example: 2023-01-01T00:00:00.000Z type: string - name: createdAtLte required: false in: query description: Date de création maximum (inclusive) schema: example: 2023-12-31T23:59:59.999Z type: string responses: "200": description: Récupérer toutes les metadatas content: application/json: schema: $ref: "#/components/schemas/PaginatedMetadataDto" summary: Récupérer toutes les metadatas tags: &a6 - Metadatas /api/v2/metadatas/{id}: get: operationId: MetadatasController_findOne parameters: - name: id required: true in: path description: ID de la metadata schema: type: string responses: "200": description: Détails de la metadata content: application/json: schema: $ref: "#/components/schemas/MetadataDto" summary: Récupérer une metadata par son ID tags: *a6 /api/v2/applications: post: description: " **Ce endpoint permet de créer une application complète.** Vous devez fournir les informations suivantes : - **label**: Le libellé de l'application. - **shortName**: Le nom court de l'application. - **logo**: L'URL du logo (peut être vide). - **description**: Une description détaillée de l'application. - **purposes**: Les domaines d'activité (ex: finance, HR, operations). - **tags**: Des tags pour catégoriser l'application. \ - **firstProductionDate**: Date de première mise en production. \ - **plannedDecommissioningDate**: Date prévue de déclassement. \ - **source**: La source du libelé. \ - **value**: Le libellé alternatif. - **compliances**: La liste des conformités associées avec : \ - Champs spécifiques selon le type de conformité (DIMA, PDMA, HOMOLOGATION, RGAA, DSFR, RGPD). \ " operationId: ApplicationController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateApplicationDto" responses: "201": description: Application créée avec succès. content: application/json: schema: $ref: "#/components/schemas/ApplicationDto" summary: Créer une nouvelle application tags: &a7 - applications get: description: >- Endpoint unifié pour rechercher, filtrer et paginer les applications. Supporte tous les types de filtres : label, shortName, tags, priorityRestart, hostingSearch, etc. Inclut la pagination et le tri. operationId: ApplicationController_search parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: search required: false in: query description: Recherche sur les labels et shortName schema: example: Mon Application type: string - name: q required: false in: query description: Recherche full-text sur l'ensemble des informations descriptives de la fiche (libellé, nom court, description, finalités, populations cibles, tags, labels, acteurs). Insensible à la casse et aux accents, avec lemmatisation française et tri par pertinence. Tous les mots saisis doivent être présents (ET) ; la ponctuation est ignorée. schema: maxLength: 200 example: gestion des factures type: string - name: qPrefix required: false in: query description: Recherche full-text en mode préfixe, pour l'autocomplétion au fil de la frappe (chaque mot saisi est traité comme un préfixe). Même périmètre que `q`. Prioritaire sur `q` s'il est fourni. Limité aux 200 résultats les plus pertinents. schema: maxLength: 200 example: tow muel type: string - name: label required: false in: query description: Recherche par label schema: example: Mon Application type: string - name: shortName required: false in: query description: Recherche par shortName schema: type: string - name: tag required: false in: query description: Filtrer par tags (un ou plusieurs) schema: type: array items: type: string - name: priorityRestart required: false in: query description: Filtrer par une ou plusieurs priorités de redémarrage (R0 à R3) schema: example: - R1 - R2 type: array items: type: string enum: - R0 - R1 - R1_STAR - R2 - R3 - name: actorType required: false in: query description: Type d'acteur. Utiliser les valeurs de /actorTypes schema: example: MOA type: string - name: actorEmail required: false in: query description: Email d'un acteur pour filtrer les applications schema: example: user@example.com type: string - name: missingMoa required: false in: query description: Filtrer les applications sans MOA schema: example: true type: boolean - name: missingMoe required: false in: query description: Filtrer les applications sans MOE schema: example: true type: boolean - name: missingHosting required: false in: query description: Filtrer les applications sans hébergement schema: example: true type: boolean - name: currentStatus__in required: false in: query description: Filtrer par un ou plusieurs status du statut courant schema: type: array items: type: string enum: - under_construction - to_validate - poc - in_production_mvp - in_production - in_production_decommissioning - decommissioned - deleted - name: currentStatus__isNull required: false in: query description: Filtrer les applications sans statut schema: example: true type: boolean - name: subscribersEmail required: false in: query description: Filtrer les applications abonné schema: example: true type: boolean - name: myApplications required: false in: query description: Filtrer les applications par acteur et groupe acteurs schema: example: true type: boolean - name: organization required: false in: query description: Nom de l'organisation liée à l'application schema: example: Direction des systèmes d'information type: string - name: hostingSearch required: false in: query description: Recherche unifiée sur tous les champs d'hébergement (site, plateforme, fournisseur, bâtiment, salle) schema: example: Paris type: string - name: hostingSite required: false in: query description: Filtrer par site d'hébergement schema: example: Paris type: string - name: hostingPlatform required: false in: query description: Filtrer par plateforme d'hébergement schema: example: AWS type: string - name: hostingProvider required: false in: query description: Filtrer par fournisseur d'hébergement schema: example: Amazon type: string - name: hostingBuilding required: false in: query description: Filtrer par bâtiment d'hébergement schema: example: Bâtiment A type: string - name: hostingRoom required: false in: query description: Filtrer par pièce d'hébergement schema: example: Salle 101 type: string - name: compliance__in required: false in: query description: "[Déprécié] Filtrer par conformité présente. Utiliser plutôt compliancePresent__in." deprecated: true schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: compliancePresent__in required: false in: query description: Critères de conformité devant être présents (renseignés) sur l'application schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: complianceAbsent__in required: false in: query description: "Critères de conformité absents : pour un critère booléen (pra, dsfr) = explicitement Non (false) ; pour les autres = non renseigné" schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: complianceUnset__in required: false in: query description: Critères de conformité non renseignés (valeur nulle). Pertinent pour les critères booléens (pra, dsfr) schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: link required: false in: query description: Recherche par lien (ressource externe) schema: type: string - name: iqGte required: false in: query description: Recherche par indice de qualité minimum schema: minimum: 0 default: 0 type: number - name: iqLte required: false in: query description: Recherche par indice de qualité maximum schema: maximum: 100 default: 100 type: number - name: columns required: false in: query description: Colonnes à inclure dans l'export schema: example: id,label,shortName,description type: string - name: isActor required: false in: query description: "Ne retourne que les applications dont l'utilisateur est acteur, defaut: false" schema: default: false type: string - name: is_part_of required: false in: query description: Filtrée sur la relation de type Fait partie de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: in_replacement_of required: false in: query description: Filtrée sur la relation de type Remplace schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: is_service_user_of required: false in: query description: Filtrée sur la relation de type Utilise le service de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: is_data_user_of required: false in: query description: Filtrée sur la relation de type Utilise la donnée de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: use_sso_of required: false in: query description: Filtrée sur la relation de type Utilise le SSO de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: relationAppId required: false in: query description: Filtrage des relations sur cette app schema: type: string - name: businessDivisionId required: false in: query description: Filtrage des directions de metier MOA (une ou plusieurs) schema: type: array items: type: string - name: is_mediation_service required: false in: query description: Filtrée sur la mediation de service schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: dataSourceName required: false in: query description: Recherche par nom de source de données schema: type: string - name: millesime required: false in: query description: Millésime (année) de la campagne dette IT à présenter. Par défaut, le millésime le plus récent disponible. schema: minimum: 2000 maximum: 2100 example: 2026 type: number responses: "200": description: Liste des applications correspondant aux critères de recherche avec pagination. content: application/json: schema: $ref: "#/components/schemas/ApplicationSearchResultDto" summary: Rechercher et filtrer les applications tags: *a7 /api/v2/applications/count-by-month: get: operationId: ApplicationController_countByMonth parameters: [] responses: "200": description: Nombre d'applications par mois content: application/json: schema: type: array items: $ref: "#/components/schemas/CountByMonthDto" summary: Liste le nombre d'applications sur les 6 derniers mois tags: *a7 /api/v2/applications/count-by-iq: get: operationId: ApplicationController_countByIq parameters: [] responses: "200": description: Nombre d'applications par indice de qualité content: application/json: schema: type: array items: $ref: "#/components/schemas/CountByIqDto" summary: Liste le nombre d'applications par indice de qualité (de 0% à 100%) tags: *a7 /api/v2/applications/{applicationId}/my-perms: get: operationId: ApplicationController_getMyPerms parameters: - name: applicationId required: true in: path schema: type: string responses: "200": description: Droits de l'utilisateur sur l'application content: application/json: schema: type: array items: type: string enum: - AppRead - ComplianceWrite - RelationRead - RelationWrite - ActorRead - ActorWrite - ComplianceRead - AppWrite - HostingRead - HostingWrite - LinkRead - LinkWrite - MetadataRead - DataRead - DataWrite - TechnologyRead - TechnologyWrite - ReportRead - ReportManage - ReportPost - AppWritePriority summary: Lister les droits de l'utilisateur sur l'application tags: *a7 /api/v2/applications/export/excel: get: description: >- Permet d'exporter les applications en un fichier Excel. Vous pouvez ajouter des filtres de recherche pour n'exporter que les applications correspondantes. Si aucun filtre n'est appliqué, toutes les applications sont exportées. Accès limité aux utilisateurs avec privilège admin. operationId: ApplicationController_exportExcel parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: search required: false in: query description: Recherche sur les labels et shortName schema: example: Mon Application type: string - name: q required: false in: query description: Recherche full-text sur l'ensemble des informations descriptives de la fiche (libellé, nom court, description, finalités, populations cibles, tags, labels, acteurs). Insensible à la casse et aux accents, avec lemmatisation française et tri par pertinence. Tous les mots saisis doivent être présents (ET) ; la ponctuation est ignorée. schema: maxLength: 200 example: gestion des factures type: string - name: qPrefix required: false in: query description: Recherche full-text en mode préfixe, pour l'autocomplétion au fil de la frappe (chaque mot saisi est traité comme un préfixe). Même périmètre que `q`. Prioritaire sur `q` s'il est fourni. Limité aux 200 résultats les plus pertinents. schema: maxLength: 200 example: tow muel type: string - name: label required: false in: query description: Recherche par label schema: example: Mon Application type: string - name: shortName required: false in: query description: Recherche par shortName schema: type: string - name: tag required: false in: query description: Filtrer par tags (un ou plusieurs) schema: type: array items: type: string - name: priorityRestart required: false in: query description: Filtrer par une ou plusieurs priorités de redémarrage (R0 à R3) schema: example: - R1 - R2 type: array items: type: string enum: - R0 - R1 - R1_STAR - R2 - R3 - name: actorType required: false in: query description: Type d'acteur. Utiliser les valeurs de /actorTypes schema: example: MOA type: string - name: actorEmail required: false in: query description: Email d'un acteur pour filtrer les applications schema: example: user@example.com type: string - name: missingMoa required: false in: query description: Filtrer les applications sans MOA schema: example: true type: boolean - name: missingMoe required: false in: query description: Filtrer les applications sans MOE schema: example: true type: boolean - name: missingHosting required: false in: query description: Filtrer les applications sans hébergement schema: example: true type: boolean - name: currentStatus__in required: false in: query description: Filtrer par un ou plusieurs status du statut courant schema: type: array items: type: string enum: - under_construction - to_validate - poc - in_production_mvp - in_production - in_production_decommissioning - decommissioned - deleted - name: currentStatus__isNull required: false in: query description: Filtrer les applications sans statut schema: example: true type: boolean - name: subscribersEmail required: false in: query description: Filtrer les applications abonné schema: example: true type: boolean - name: myApplications required: false in: query description: Filtrer les applications par acteur et groupe acteurs schema: example: true type: boolean - name: organization required: false in: query description: Nom de l'organisation liée à l'application schema: example: Direction des systèmes d'information type: string - name: hostingSearch required: false in: query description: Recherche unifiée sur tous les champs d'hébergement (site, plateforme, fournisseur, bâtiment, salle) schema: example: Paris type: string - name: hostingSite required: false in: query description: Filtrer par site d'hébergement schema: example: Paris type: string - name: hostingPlatform required: false in: query description: Filtrer par plateforme d'hébergement schema: example: AWS type: string - name: hostingProvider required: false in: query description: Filtrer par fournisseur d'hébergement schema: example: Amazon type: string - name: hostingBuilding required: false in: query description: Filtrer par bâtiment d'hébergement schema: example: Bâtiment A type: string - name: hostingRoom required: false in: query description: Filtrer par pièce d'hébergement schema: example: Salle 101 type: string - name: compliance__in required: false in: query description: "[Déprécié] Filtrer par conformité présente. Utiliser plutôt compliancePresent__in." deprecated: true schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: compliancePresent__in required: false in: query description: Critères de conformité devant être présents (renseignés) sur l'application schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: complianceAbsent__in required: false in: query description: "Critères de conformité absents : pour un critère booléen (pra, dsfr) = explicitement Non (false) ; pour les autres = non renseigné" schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: complianceUnset__in required: false in: query description: Critères de conformité non renseignés (valeur nulle). Pertinent pour les critères booléens (pra, dsfr) schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: link required: false in: query description: Recherche par lien (ressource externe) schema: type: string - name: iqGte required: false in: query description: Recherche par indice de qualité minimum schema: minimum: 0 default: 0 type: number - name: iqLte required: false in: query description: Recherche par indice de qualité maximum schema: maximum: 100 default: 100 type: number - name: columns required: false in: query description: Colonnes à inclure dans l'export schema: example: id,label,shortName,description type: string - name: isActor required: false in: query description: "Ne retourne que les applications dont l'utilisateur est acteur, defaut: false" schema: default: false type: string - name: is_part_of required: false in: query description: Filtrée sur la relation de type Fait partie de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: in_replacement_of required: false in: query description: Filtrée sur la relation de type Remplace schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: is_service_user_of required: false in: query description: Filtrée sur la relation de type Utilise le service de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: is_data_user_of required: false in: query description: Filtrée sur la relation de type Utilise la donnée de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: use_sso_of required: false in: query description: Filtrée sur la relation de type Utilise le SSO de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: relationAppId required: false in: query description: Filtrage des relations sur cette app schema: type: string - name: businessDivisionId required: false in: query description: Filtrage des directions de metier MOA (une ou plusieurs) schema: type: array items: type: string - name: is_mediation_service required: false in: query description: Filtrée sur la mediation de service schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: dataSourceName required: false in: query description: Recherche par nom de source de données schema: type: string - name: millesime required: false in: query description: Millésime (année) de la campagne dette IT à présenter. Par défaut, le millésime le plus récent disponible. schema: minimum: 2000 maximum: 2100 example: 2026 type: number responses: "200": description: Export Excel des applications content: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: schema: type: string format: binary "403": description: Accès refusé - Privilège admin requis summary: Exporter les applications en Excel tags: *a7 /api/v2/applications/{applicationId}: get: description: " Ce endpoint permet de récupérer les détails complets d'une application en fonction de son identifiant unique. Le paramètre **id** doit être fourni dans l'URL. \ " operationId: ApplicationController_findOne parameters: - name: applicationId required: true in: path schema: type: string responses: "200": description: Application trouvée avec succès content: application/json: schema: $ref: "#/components/schemas/ApplicationDto" summary: Récupérer une application spécifique par ID tags: *a7 patch: description: " Ce endpoint permet de mettre à jour une application existante.\ \ Vous devez fournir l'identifiant de l'application dans l'URL et les nouvelles données dans le corps de la requête. Les données de mise à jour doivent correspondre aux champs. \ " operationId: ApplicationController_update parameters: - name: applicationId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/PatchApplicationDto" responses: "200": description: Application mise à jour avec succès content: application/json: schema: $ref: "#/components/schemas/ApplicationDto" summary: Mettre à jour une application tags: *a7 delete: description: Supprime une application par son ID. operationId: ApplicationController_remove parameters: - name: applicationId required: true in: path schema: type: string responses: "204": description: Application supprimée avec succès. "404": description: Application non trouvée. summary: Supprimer une application tags: *a7 /api/v2/applications/{applicationId}/quality-summary: get: description: Retourne les indicateurs OUI/NON pour l'indice de qualité. Accessible à tous les rôles ayant AppRead. operationId: ApplicationController_getQualitySummary parameters: - name: applicationId required: true in: path schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/QualitySummaryDto" summary: Récupérer le résumé qualité d'une application tags: *a7 /api/v2/applications/data-quality/update: get: description: " Ce endpoint permet de mettre à jour l'indice de qualité des applications existantes. \ Seulement accessible par les administrateurs. \ " operationId: ApplicationController_updateAllApplicationsQuality parameters: [] responses: "202": description: Mise à jour des indices de qualité en cours... content: application/json: schema: type: string "403": description: Accès refusé - Privilège admin requis summary: Mettre à jour l'indice de qualité de toutes les applications tags: *a7 /api/v2/applications/{applicationId}/statuses: post: operationId: StatusesController_create parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateApplicationStatusDto" responses: "201": description: Statut créé avec succès content: application/json: schema: $ref: "#/components/schemas/ApplicationStatusDto" summary: Créer un nouveau statut pour une application tags: &a8 - statuses get: operationId: StatusesController_find parameters: - name: applicationId required: true in: path schema: type: string responses: "200": description: Historique des statuts récupéré avec succès content: application/json: schema: type: array items: $ref: "#/components/schemas/ApplicationStatusDto" summary: Récupérer l'historique des statuts d'une application tags: *a8 /api/v2/applications/{applicationId}/statuses/{statusId}: patch: operationId: StatusesController_update parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: statusId required: true in: path description: ID du statut schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateApplicationStatusDto" responses: "200": description: Statut modifié avec succès content: application/json: schema: $ref: "#/components/schemas/ApplicationStatusDto" summary: Modifier un statut existant tags: *a8 delete: operationId: StatusesController_delete parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: statusId required: true in: path description: ID du statut schema: type: string responses: "204": description: Statut supprimé avec succès summary: Supprimer un statut tags: *a8 /api/v2/tags: post: description: " Ce endpoint permet de créer un tag. Information requise :\ - **name** : nom unique du tag \ " operationId: TagsController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateTagDto" responses: "201": description: Tag créé avec succès content: application/json: schema: $ref: "#/components/schemas/TagDto" "403": description: Accès refusé - Privilège admin requis summary: Créer un nouveau tag. tags: &a9 - Tags get: description: " \ Cette route permet de rechercher selon les paramètres fournis : \ \ \ - Retourne une liste paginée ou non de tags. \ - Filtrage possible par nom. \ - Tri possible par : \ - `popularité` (défaut) \ - `name` \ - `createdAt` \ - Ordre : `asc` ou `desc`. \ " operationId: TagsController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: name required: false in: query description: Recherche sur le nom schema: example: tag1 type: string responses: "200": description: Liste des tags trouvés content: application/json: schema: $ref: "#/components/schemas/PaginatedTagDto" summary: Rechercher des tags. tags: *a9 /api/v2/tags/{id}: get: operationId: TagsController_findOne parameters: - name: id required: true in: path description: ID du tag à trouver schema: type: string responses: "200": description: Tag trouvé avec succès content: application/json: schema: $ref: "#/components/schemas/TagDto" "404": description: Tag non trouvé summary: Rechercher un tag par id. tags: *a9 patch: operationId: TagsController_update parameters: - name: id required: true in: path description: ID du tag à modifier schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateTagDto" responses: "200": description: Tag mis à jour avec succès content: application/json: schema: $ref: "#/components/schemas/TagDto" "403": description: Accès refusé - Privilège admin requis "404": description: Tag non trouvé summary: Modifier un tag. tags: *a9 delete: operationId: TagsController_delete parameters: - name: id required: true in: path description: ID du tag à supprimer schema: type: string responses: "204": description: Tag supprimé avec succès "403": description: Accès refusé - Privilège admin requis "404": description: Tag non trouvé summary: Supprimer un tag. tags: *a9 /api/v2/business-division: get: description: " \ Cette route permet de rechercher selon les paramètres fournis : \ \ \ - Retourne une liste paginée ou non de business division. \ - Filtrage possible par nom. \ - Tri possible par : \ - `label` \ - Ordre : `asc` ou `desc`. \ " operationId: BusinessDivisionController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: label required: false in: query description: Recherche sur le nom schema: example: farm type: string responses: "200": description: Liste des tags trouvés content: application/json: schema: $ref: "#/components/schemas/PaginatedBusinessDivisionDTO" summary: Rechercher des Business division. tags: &a10 - Business Division post: description: " Ce endpoint permet de créer une nouvelle direction métier (business division). Information requise : - **label** : nom unique de la direction métier \ " operationId: BusinessDivisionController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateBusinessDivisionDto" responses: "201": description: Direction métier créée avec succès content: application/json: schema: $ref: "#/components/schemas/BusinessDivisionDTO" "403": description: Accès refusé - Privilège admin requis "409": description: Une direction métier existe déjà avec ce nom summary: Créer une direction métier. tags: *a10 /api/v2/business-division/{id}: patch: operationId: BusinessDivisionController_update parameters: - name: id required: true in: path description: ID de la direction métier à modifier schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateBusinessDivisionDto" responses: "200": description: Direction métier mise à jour avec succès content: application/json: schema: $ref: "#/components/schemas/BusinessDivisionDTO" "403": description: Accès refusé - Privilège admin requis "404": description: Direction métier non trouvée "409": description: Une direction métier existe déjà avec ce nom summary: Modifier une direction métier tags: *a10 delete: operationId: BusinessDivisionController_remove parameters: - name: id required: true in: path description: ID de la direction métier à supprimer schema: type: string responses: "204": description: Direction métier supprimée avec succès "403": description: Accès refusé - Privilège admin requis "404": description: Direction métier non trouvée summary: Supprimer une direction métier tags: *a10 get: operationId: BusinessDivisionController_findById parameters: - name: id required: true in: path description: ID du Business Division à trouver schema: type: string responses: "200": description: Business division content: application/json: schema: $ref: "#/components/schemas/BusinessDivisionDTO" "404": description: Business Division non trouvé summary: Rechercher un Business division par id. tags: *a10 /api/v2/data-catalog/descriptions: post: operationId: DataCatalogController_createDescription parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateDataDescriptionDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/DataDescriptionDto" security: &a11 - bearer: [] summary: Créer une data description tags: &a12 - Data Catalog get: operationId: DataCatalogController_findAllDescriptions parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: name required: false in: query description: Filtre par nom (recherche partielle, insensible à la casse) schema: type: string responses: "200": description: "" content: application/json: schema: type: array items: $ref: "#/components/schemas/DataDescriptionDto" security: *a11 summary: Lister les data descriptions tags: *a12 /api/v2/data-catalog/descriptions/{id}: patch: operationId: DataCatalogController_updateDescription parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateDataDescriptionDto" responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/DataDescriptionDto" security: *a11 summary: Mettre à jour une data description tags: *a12 delete: operationId: DataCatalogController_deleteDescription parameters: - name: id required: true in: path schema: type: string responses: "204": description: Data description deleted successfully security: *a11 summary: Supprimer une data description tags: *a12 /api/v2/data-catalog/applications/{applicationId}/{dataApplicationId}: get: operationId: DataCatalogController_findOneApplicationData parameters: - name: applicationId required: true in: path schema: type: string - name: dataApplicationId required: true in: path schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/DataApplicationDto" security: *a11 summary: Détail d'une donnée dans une application tags: *a12 patch: operationId: DataCatalogController_updateApplicationData parameters: - name: applicationId required: true in: path schema: type: string - name: dataApplicationId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateDataApplicationDto" responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/DataApplicationDto" security: *a11 summary: Mettre à jour une donnée applicative tags: *a12 delete: operationId: DataCatalogController_deleteApplicationData parameters: - name: applicationId required: true in: path schema: type: string - name: dataApplicationId required: true in: path schema: type: string responses: "204": description: Data application deleted successfully security: *a11 summary: Détacher une donnée d'une application tags: *a12 /api/v2/data-catalog/applications/{applicationId}: get: operationId: DataCatalogController_findByApplication parameters: - name: applicationId required: true in: path schema: type: string - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/PaginatedDataApplicationDto" security: *a11 summary: Lister les données d'une application tags: *a12 post: operationId: DataCatalogController_createApplicationData parameters: - name: applicationId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateDataApplicationDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/DataApplicationDto" security: *a11 summary: Rattacher une donnée à une application tags: *a12 /api/v2/data-catalog/applications/{applicationId}/{dataApplicationId}/exposures: post: operationId: DataCatalogController_createExposure parameters: - name: applicationId required: true in: path schema: type: string - name: dataApplicationId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateDataExposureDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/DataExposureDto" security: *a11 summary: Ajouter une exposition à une donnée applicative tags: *a12 /api/v2/data-catalog/applications/{applicationId}/{dataApplicationId}/exposures/{exposureId}: patch: operationId: DataCatalogController_updateExposure parameters: - name: applicationId required: true in: path schema: type: string - name: dataApplicationId required: true in: path schema: type: string - name: exposureId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateDataExposureDto" responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/DataExposureDto" security: *a11 summary: Mettre à jour une exposition tags: *a12 delete: operationId: DataCatalogController_deleteExposure parameters: - name: applicationId required: true in: path schema: type: string - name: dataApplicationId required: true in: path schema: type: string - name: exposureId required: true in: path schema: type: string responses: "204": description: Exposure deleted successfully security: *a11 summary: Supprimer une exposition tags: *a12 /api/v2/data-catalog/families: post: operationId: DataFamilyController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateDataFamilyDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/DataFamilyDto" security: &a13 - bearer: [] summary: Créer une famille de données tags: &a14 - Data Catalog get: operationId: DataFamilyController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: path required: false in: query description: Recherche sur le chemin schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/PaginatedDataFamilyDto" security: *a13 summary: Lister les familles de données tags: *a14 /api/v2/data-catalog/families/{id}: patch: operationId: DataFamilyController_update parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateDataFamilyDto" responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/DataFamilyDto" "404": description: Famille non trouvée security: *a13 summary: Mettre à jour une famille de données tags: *a14 delete: operationId: DataFamilyController_remove parameters: - name: id required: true in: path schema: type: string responses: "204": description: Famille supprimée avec succès "404": description: Famille non trouvée security: *a13 summary: Supprimer une famille de données tags: *a14 /api/v2/data-catalog/sensibilities: post: operationId: DataSensibilityController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateDataSensibilityDto" responses: "201": description: "" content: application/json: schema: $ref: "#/components/schemas/DataSensibilityDto" security: &a15 - bearer: [] summary: Créer un niveau de sensibilité tags: &a16 - Data Catalog get: operationId: DataSensibilityController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: label required: false in: query description: Recherche sur le libellé schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/PaginatedDataSensibilityDto" security: *a15 summary: Lister les niveaux de sensibilité tags: *a16 /api/v2/data-catalog/sensibilities/{id}: patch: operationId: DataSensibilityController_update parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateDataSensibilityDto" responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/DataSensibilityDto" "404": description: Niveau de sensibilité non trouvé security: *a15 summary: Mettre à jour un niveau de sensibilité tags: *a16 delete: operationId: DataSensibilityController_remove parameters: - name: id required: true in: path schema: type: string responses: "204": description: Niveau de sensibilité supprimé avec succès "404": description: Niveau de sensibilité non trouvé security: *a15 summary: Supprimer un niveau de sensibilité tags: *a16 /api/v2/applications/{applicationId}/relations: post: description: Permet de créer une relation entre deux applications. operationId: RelationController_create parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/RelationApplicationDto" responses: "201": description: Relation créée avec succès content: application/json: schema: $ref: "#/components/schemas/RelationDto" summary: Créer une nouvelle relation tags: &a17 - relation get: description: Renvoie la liste de toutes les relations d'une application donnée. operationId: RelationController_findAll parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "200": description: Liste des relations trouvées content: application/json: schema: type: array items: $ref: "#/components/schemas/RelationDto" summary: Récupérer toutes les relations d'une application tags: *a17 /api/v2/applications/{applicationId}/relations/graph: get: description: Renvoie un graphe des relations de l'application avec possibilité de limiter la profondeur. Les applications supprimées sont exclues. operationId: RelationController_getRelationGraph parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: depth required: false in: query description: "Profondeur maximale de traversée du graphe (par défaut: 2, max: 100)" schema: type: number responses: "200": description: Graphe des relations de l'application content: application/json: schema: $ref: "#/components/schemas/RelationGraphDto" summary: Récupérer le graphe des relations d'une application tags: *a17 /api/v2/applications/{applicationId}/relations/{id}: get: operationId: RelationController_findOne parameters: - name: id required: true in: path description: Identifiant unique de la relation schema: type: string - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "200": description: Relation trouvée avec succès content: application/json: schema: $ref: "#/components/schemas/RelationDto" summary: Récupérer une relation par son identifiant unique tags: *a17 patch: operationId: RelationController_update parameters: - name: id required: true in: path description: Identifiant unique de la relation à mettre à jour schema: type: string - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/RelationApplicationDto" responses: "200": description: Relation mise à jour avec succès content: application/json: schema: $ref: "#/components/schemas/RelationDto" summary: Mettre à jour une relation tags: *a17 delete: operationId: RelationController_delete parameters: - name: id required: true in: path description: Identifiant unique de la relation à supprimer schema: type: string - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "204": description: Relation supprimée avec succès summary: Supprimer une relation tags: *a17 /api/v2/organizations: post: description: " **Ce endpoint permet de créer une organisation complète** Vous devez fournir les informations suivantes : - **label**: Le libellé de l'organisation - **url**: L'url de l'organisation - **sigle**: Le sigle de l'organisation - **parentId**: L'identifiant de l'organisation parente \ " operationId: OrganizationsController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateOrganizationDto" responses: "201": description: Organisation Créée avec succes content: application/json: schema: $ref: "#/components/schemas/OrganizationDto" summary: Créer une nouvelle organisation tags: &a18 - organizations get: description: Ce endpoint permet de récupérer la liste de toutes les organisations. operationId: OrganizationsController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 50 example: 50 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: withAncestors required: false in: query description: Renvoi les organisations parentes de chaque organisation schema: default: true type: boolean - name: usedOnly required: false in: query description: Renvoi uniquement les organisations utilisées (qui ont des acteurs ou des utilisateurs) schema: default: false type: boolean - name: ids required: false in: query schema: type: array items: type: string - name: search required: false in: query schema: type: string responses: "200": description: Liste des organisations content: application/json: schema: $ref: "#/components/schemas/PaginatedOrganizationDto" summary: Récupérer toutes les organisations tags: *a18 /api/v2/organizations/{id}: get: description: Ce endpoint permet de récupérer les détails complets d'une organisation en fonction de son identifiant unique. operationId: OrganizationsController_findOne parameters: - name: id required: true in: path schema: type: string responses: "200": description: Organisation trouvée content: application/json: schema: $ref: "#/components/schemas/OrganizationDto" "404": description: Organisation non trouvée summary: Récupérer une organisation spécifique par ID tags: *a18 patch: operationId: OrganizationsController_update parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/PatchOrganizationDto" responses: "200": description: Organisation mise à jour content: application/json: schema: $ref: "#/components/schemas/OrganizationDto" summary: Mettre à jour une organisation tags: *a18 delete: operationId: OrganizationsController_delete parameters: - name: id required: true in: path schema: type: string responses: "204": description: Organisation supprimée summary: Supprimer une organisation tags: *a18 /api/v2/applications/{applicationId}/actors: post: description: " Ce endpoint permet de créer un acteur complet. Informations requises :\ - **email** : Email de l'acteur - **firstname** : Prénom de l'acteur - **lastname** : Nom de l'acteur - **actorTypeId** : ID du type d'acteur lié à l'acteur\ - **organizationId** : ID de l'organisation liée à l'acteur - **applicationId** : ID de l'application liée à l'acteur \ " operationId: ApplicationActorsController_create parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateActorDto" responses: "201": description: Acteur créé avec succès content: application/json: schema: $ref: "#/components/schemas/ActorDto" summary: Créer un nouvel acteur tags: &a19 - Actors get: operationId: ApplicationActorsController_findAll parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc responses: "200": description: Liste des acteurs trouvés content: application/json: schema: $ref: "#/components/schemas/PaginatedActorDto" summary: Récupérer tous les acteurs tags: *a19 /api/v2/applications/{applicationId}/actors/{id}: get: operationId: ApplicationActorsController_findOne parameters: - name: id required: true in: path description: ID de l'acteur schema: type: string - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "200": description: Acteur trouvé avec succès content: application/json: schema: $ref: "#/components/schemas/ActorDto" summary: Récupérer un acteur par ID tags: *a19 patch: operationId: ApplicationActorsController_updated parameters: - name: id required: true in: path description: ID de l'acteur schema: type: string - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateActorDto" responses: "200": description: Acteur mis à jour avec succès content: application/json: schema: $ref: "#/components/schemas/ActorDto" summary: Mettre à jour un acteur tags: *a19 delete: operationId: ApplicationActorsController_delete parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: id required: true in: path description: ID de l'acteur schema: type: string responses: "204": description: Acteur supprimé avec succès summary: Supprimer un acteur tags: *a19 /api/v2/actors: get: description: Liste paginée de tous les acteurs avec recherche par email, prénom, nom ou application. operationId: ActorController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: search required: false in: query description: Recherche par email, prénom, nom ou application schema: type: string responses: "200": description: Liste paginée des acteurs content: application/json: schema: $ref: "#/components/schemas/PaginatedActorDto" summary: Récupérer tous les acteurs (admin) tags: &a20 - Actors /api/v2/actors/applications-by-email: get: description: Retourne la liste des applications dans lesquelles un acteur avec cet email est présent. operationId: ActorController_findApplicationsByEmail parameters: - name: email required: true in: query schema: type: string responses: "200": description: Liste des applications content: application/json: schema: type: array items: $ref: "#/components/schemas/ApplicationRefDto" summary: Récupérer les applications d'un acteur par email tags: *a20 /api/v2/actors/by-email: delete: description: Supprime les acteurs partageant le même email dans les applications sélectionnées (ou toutes si non spécifié). operationId: ActorController_deleteAllByEmail parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/BulkActorByEmailDto" responses: "200": description: Nombre d'acteurs supprimés content: application/json: schema: $ref: "#/components/schemas/BulkResultDto" summary: Supprimer des acteurs par email (admin) tags: *a20 patch: description: Met à jour les acteurs partageant le même email dans les applications sélectionnées (ou toutes si non spécifié). operationId: ActorController_updateAllByEmail parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/BulkUpdateActorByEmailDto" responses: "200": description: Nombre d'acteurs mis à jour content: application/json: schema: $ref: "#/components/schemas/BulkResultDto" summary: Modifier des acteurs par email (admin) tags: *a20 /api/v2/actors/count: get: operationId: ActorController_countAllActors parameters: [] responses: "200": description: Nombre total d'acteurs content: application/json: schema: type: number summary: Récupérer le nombre total d'acteurs (toutes applications) tags: *a20 /api/v2/actors/{id}: patch: operationId: ActorController_updateActor parameters: - name: id required: true in: path description: ID de l'acteur schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateActorDto" responses: "200": description: Acteur mis à jour avec succès content: application/json: schema: $ref: "#/components/schemas/ActorDto" summary: Mettre à jour un acteur (admin) tags: *a20 delete: operationId: ActorController_deleteActor parameters: - name: id required: true in: path description: ID de l'acteur schema: type: string responses: "204": description: Acteur supprimé avec succès summary: Supprimer un acteur (admin) tags: *a20 /api/v2/actors/sync-maia: post: description: Pour chaque acteur avec un email, récupère l'organisation, le prénom et le nom depuis MAIA et met à jour l'acteur. La tâche est lancée en arrière-plan. operationId: ActorController_syncFromMaia parameters: [] responses: "200": description: Batch MAIA lancé en tâche de fond content: application/json: schema: type: string summary: Synchroniser les acteurs depuis MAIA (batch) tags: *a20 /api/v2/actorTypes: post: description: " **Ce endpoint permet de créer un type d’acteur complète** Vous devez fournir les informations suivantes : - **code**: Le code du type d’acteur - **label**: Le libellé du type d’acteur - **description**: La description du type d’acteur \ " operationId: ActorTypeController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateActorTypeDto" responses: "201": description: type d’acteur créé avec succes content: application/json: schema: $ref: "#/components/schemas/ActorTypeDto" summary: Créer un nouveau type d’acteur tags: &a21 - actorTypes get: description: Ce endpoint permet de récupérer la liste de tous les types d’acteurs disponibles. operationId: ActorTypeController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc responses: "200": description: Liste les types d’acteurs content: application/json: schema: $ref: "#/components/schemas/PaginatedActorTypeDto" summary: Récupérer tous les types d’acteurs tags: *a21 /api/v2/actorTypes/perms-matrix: get: description: Cet endpoint permet de récupérer la matrice des permissions pour les types d’acteurs. operationId: ActorTypeController_getMatrix parameters: [] responses: "200": description: Liste les types d’acteurs par id et de leurs permissions content: application/json: schema: type: array items: $ref: "#/components/schemas/AppPermsDto" summary: Récupérer la matrice des permissions tags: *a21 patch: description: Cet endpoint permet de mettre à jour la matrice des permissions pour les types d’acteurs. operationId: ActorTypeController_updateMatrix parameters: [] requestBody: required: true description: Liste des permissions à mettre à jour pour les types d’acteurs content: application/json: schema: type: array items: $ref: "#/components/schemas/AppPermsDto" responses: "200": description: Met à jour la matrice des permissions content: application/json: schema: type: array items: $ref: "#/components/schemas/AppPermsDto" summary: Mettre à jour la matrice des permissions tags: *a21 /api/v2/actorTypes/{id}: get: description: Cet endpoint permet de récupérer les détails complets d'un type d’acteur en fonction de son identifiant unique. operationId: ActorTypeController_findOne parameters: - name: id required: true in: path schema: type: string responses: "200": description: Récupère un type d’acteur spécifique par ID content: application/json: schema: $ref: "#/components/schemas/ActorTypeDto" summary: Récupérer un type d’acteur spécifique par ID tags: *a21 patch: description: " Ce endpoint permet de mettre à jour un type d’acteur existante Vous devez fournir l'identifiant du type d’acteur dans l'URL et les nouvelles données dans le corps de la requête Les données de mise à jour doivent correspondre aux champs \ " operationId: ActorTypeController_update parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/PatchActorTypeDto" responses: "200": description: Type d’acteur mis à jour avec succès content: application/json: schema: $ref: "#/components/schemas/PatchActorTypeDto" summary: Mettre à jour un type d’acteur tags: *a21 delete: operationId: ActorTypeController_delete parameters: - name: id required: true in: path schema: type: string responses: "204": description: Type d’acteur supprimé avec succès summary: Supprimer un type d’acteur tags: *a21 /api/v2/applications/{applicationId}/compliances: post: operationId: ApplicationCompliancesController_create parameters: - name: applicationId required: true in: path description: ID of the application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateComplianceDto" responses: "200": description: Compliance created or updated successfully content: application/json: schema: $ref: "#/components/schemas/ComplianceDto" summary: Create a new compliance for an application tags: &a22 - Compliances get: operationId: ApplicationCompliancesController_findOne parameters: - name: applicationId required: true in: path description: ID of the application schema: type: string responses: "200": description: Compliance found successfully content: application/json: schema: $ref: "#/components/schemas/ComplianceDto" summary: Retrieve the compliance for an application tags: *a22 patch: operationId: ApplicationCompliancesController_update parameters: - name: applicationId required: true in: path description: ID of the application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateComplianceDto" responses: "200": description: Compliance updated successfully content: application/json: schema: $ref: "#/components/schemas/ComplianceDto" summary: Update the compliance for an application tags: *a22 /api/v2/applications/{applicationId}/compliances/ecoindex/scan: post: operationId: ApplicationCompliancesController_scanEcoIndex parameters: - name: applicationId required: true in: path description: ID of the application schema: type: string responses: "200": description: Score EcoIndex calculé et enregistré avec succès content: application/json: schema: $ref: "#/components/schemas/ComplianceDto" summary: Calculer et enregistrer le score EcoIndex pour cette application tags: *a22 /api/v2/compliances/count: get: operationId: ComplianceController_countAllCompliances parameters: [] responses: "200": description: Nombre total de conformités content: application/json: schema: type: number summary: Récupérer le nombre total de conformités (toutes applications) tags: - Compliances /api/v2/import/excel: post: description: >- Importe ou met à jour des données en masse à partir d'un fichier Excel au même format que l'export (un onglet par table). L'onglet « Applications » est toujours traité en premier, puis les onglets pris en charge (« Hébergements », « Acteurs », « Conformités ») ; les autres sont ignorés. Pour chaque ligne, la présence de l'identifiant déclenche une mise à jour, sinon une création. Les contrôles et les métadonnées sont identiques à ceux de l'API. Un rapport d'exécution est retourné. operationId: ImportController_importExcel parameters: [] requestBody: required: true content: multipart/form-data: schema: type: object properties: file: type: string format: binary required: - file responses: "200": description: Rapport d'exécution de l'import content: application/json: schema: $ref: "#/components/schemas/ImportReportDto" summary: Importer des données depuis un fichier Excel tags: - Import /api/v2/applications/{applicationId}/hostings: post: operationId: ApplicationHostingsController_create parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateHostingDto" responses: "201": description: Hébergement créé content: application/json: schema: $ref: "#/components/schemas/HostingDto" summary: Créer un hébergement pour une application tags: &a23 - Hostings get: operationId: ApplicationHostingsController_findAll parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "200": description: Liste des hébergements content: application/json: schema: type: array items: $ref: "#/components/schemas/HostingDto" summary: Récupérer tous les hébergements d'une application tags: *a23 /api/v2/applications/{applicationId}/hostings/{id}: get: operationId: ApplicationHostingsController_findOne parameters: - name: id required: true in: path schema: type: string - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "200": description: Hébergement trouvé content: application/json: schema: $ref: "#/components/schemas/HostingDto" summary: Récupérer un hébergement par ID pour une application tags: *a23 patch: operationId: ApplicationHostingsController_update parameters: - name: id required: true in: path schema: type: string - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateHostingDto" responses: "200": description: Hébergement mis à jour content: application/json: schema: $ref: "#/components/schemas/HostingDto" summary: Mettre à jour un hébergement pour une application tags: *a23 delete: operationId: ApplicationHostingsController_remove parameters: - name: id required: true in: path schema: type: string - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "204": description: Hébergement supprimé summary: Supprimer un hébergement pour une application tags: *a23 /api/v2/sites: get: operationId: SitesController_findDistinctSites parameters: [] responses: "200": description: Liste des sites content: application/json: schema: type: array items: type: string summary: Liste des sites distincts existants tags: - Sites /api/v2/hostings/count: get: operationId: HostingsController_countAllHostings parameters: [] responses: "200": description: Nombre total d'hébergements content: application/json: schema: type: number summary: Récupérer le nombre total d'hébergements (toutes applications) tags: - Hostings /api/v2/hosting-options: post: operationId: HostingOptionController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateHostingOptionDto" responses: "201": description: Hosting option created successfully content: application/json: schema: $ref: "#/components/schemas/HostingOptionDto" summary: Create a new hosting option tags: &a24 - HostingOptions get: operationId: HostingOptionController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: site required: false in: query schema: type: string - name: platform required: false in: query schema: type: string - name: provider required: false in: query schema: type: string - name: building required: false in: query schema: type: string - name: room required: false in: query schema: type: string responses: "200": description: Paginated list of hosting options content: application/json: schema: $ref: "#/components/schemas/PaginatedHostingOptionDto" summary: Get all hosting options with optional filtering tags: *a24 /api/v2/hosting-options/{id}: patch: operationId: HostingOptionController_update parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateHostingOptionDto" responses: "200": description: Hosting option updated successfully content: application/json: schema: $ref: "#/components/schemas/HostingOptionDto" "404": description: Hosting option not found summary: Update hosting option by ID tags: *a24 delete: operationId: HostingOptionController_remove parameters: - name: id required: true in: path schema: type: string responses: "204": description: Hosting option deleted successfully "404": description: Hosting option not found summary: Delete hosting option by ID tags: *a24 /api/v2/applications/{applicationId}/labels: post: description: " **Ce endpoint permet de créer un nom complet.** Vous devez fournir les informations suivantes : - **labelSourceId**: L'id de la source du nom (peut être vide). - **value**: Le nom alternatif de l'application. \ " operationId: LabelsController_create parameters: - name: applicationId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateLabelDto" responses: "201": description: Nom alternatif créé avec succès. content: application/json: schema: $ref: "#/components/schemas/LabelDto" summary: Créer un nouveau nom tags: &a25 - Labels get: description: " Ce endpoint permet de récupérer la liste de tous les noms alternatifs d'une application en fonction de son identifiant unique. Le paramètre **applicationId** doit être fourni dans l'URL. \ " operationId: LabelsController_findAllSorted parameters: - name: applicationId required: true in: path schema: type: string responses: "200": description: Liste des noms alternatifs content: application/json: schema: type: array items: $ref: "#/components/schemas/LabelDto" summary: Récupérer les noms alternatifs par ID d'application tags: *a25 /api/v2/applications/{applicationId}/labels/{id}: patch: operationId: LabelsController_update parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: id required: true in: path description: ID du nom schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateLabelDto" responses: "200": description: Nom alternatif mis à jour content: application/json: schema: $ref: "#/components/schemas/LabelDto" summary: Mettre à jour un nom existant tags: *a25 delete: description: " Ce endpoint permet de supprimer un nom alternatif existant.\ \ Vous devez fournir l'identifiant du nom alternatif dans l'URL. \ " operationId: LabelsController_delete parameters: - name: applicationId required: true in: path schema: type: string - name: id required: true in: path schema: type: string responses: "204": description: Nom alternatif supprimé avec succès summary: Supprimer un nom alternatif tags: *a25 /api/v2/label-sources: post: description: " Ce endpoint permet de créer une nouvelle source de libellés alternatifs. Information requise :\ - **source** : nom de la source \ " operationId: LabelSourceController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateLabelSourceDto" responses: "201": description: Source créée avec succès content: application/json: schema: $ref: "#/components/schemas/LabelSourceDto" "403": description: Accès refusé - Privilège admin requis summary: Créer une nouvelle source de libellés. tags: &a26 - LabelSources get: operationId: LabelSourceController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: source required: false in: query schema: type: string responses: "200": description: Liste des sources trouvées content: application/json: schema: $ref: "#/components/schemas/PaginatedLabelSourceDto" summary: Rechercher des sources de libellés alternatifs avec filtre en option. tags: *a26 /api/v2/label-sources/{id}: patch: operationId: LabelSourceController_update parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateLabelSourceDto" responses: "200": description: Source mise à jour avec succès content: application/json: schema: $ref: "#/components/schemas/LabelSourceDto" "403": description: Accès refusé - Privilège admin requis "404": description: Source non trouvée summary: Modifier une source de libellés alternatifs tags: *a26 delete: operationId: LabelSourceController_remove parameters: - name: id required: true in: path schema: type: string responses: "204": description: Source supprimée avec succès "403": description: Accès refusé - Privilège admin requis "404": description: Source non trouvée summary: Supprimer une source de libellés alternatifs tags: *a26 /api/v2/mdit-campaigns: post: operationId: MditCampaignController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateMditCampaignDto" responses: "201": description: Campagne créée avec succès content: application/json: schema: $ref: "#/components/schemas/MditCampaignDto" "403": description: Accès refusé - Privilège admin requis "409": description: Une campagne existe déjà pour ce millésime summary: Créer une campagne dette IT (millésime) tags: &a27 - MDIT Campaigns get: operationId: MditCampaignController_findAll parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: onlyActive required: false in: query description: Ne retourner que les campagnes actives schema: example: true type: boolean responses: "200": description: Liste des campagnes content: application/json: schema: $ref: "#/components/schemas/PaginatedMditCampaignDto" summary: Lister les campagnes dette IT, triées du millésime le plus récent au plus ancien tags: *a27 /api/v2/mdit-campaigns/{id}: patch: operationId: MditCampaignController_update parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateMditCampaignDto" responses: "200": description: Campagne mise à jour content: application/json: schema: $ref: "#/components/schemas/MditCampaignDto" "403": description: Accès refusé - Privilège admin requis "404": description: Campagne non trouvée "409": description: Une campagne existe déjà pour ce millésime summary: Modifier une campagne dette IT tags: *a27 delete: operationId: MditCampaignController_remove parameters: - name: id required: true in: path schema: type: string responses: "204": description: Campagne supprimée avec succès "403": description: Accès refusé - Privilège admin requis "404": description: Campagne non trouvée summary: Supprimer une campagne dette IT tags: *a27 /api/v2/applications/{applicationId}/links: post: operationId: ApplicationLinksController_create parameters: - name: applicationId required: true in: path description: ID of the application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateLinkDto" responses: "201": description: Link created successfully content: application/json: schema: $ref: "#/components/schemas/LinkDto" summary: Create a new link for an application tags: &a28 - Links get: description: Get list of links for an application operationId: ApplicationLinksController_findAll parameters: - name: applicationId required: true in: path description: ID of the application schema: type: string - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc responses: "200": description: List of links for the application content: application/json: schema: $ref: "#/components/schemas/PaginatedLinkDto" summary: Retrieve links for an application tags: *a28 /api/v2/applications/{applicationId}/links/{id}: patch: operationId: ApplicationLinksController_update parameters: - name: applicationId required: true in: path description: ID of the application schema: type: string - name: id required: true in: path description: ID of the link to update schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateLinkDto" responses: "200": description: Link updated successfully content: application/json: schema: $ref: "#/components/schemas/LinkDto" summary: Update a link for an application tags: *a28 delete: operationId: ApplicationLinksController_delete parameters: - name: applicationId required: true in: path description: ID of the application schema: type: string - name: id required: true in: path description: ID of the link to delete schema: type: string responses: "204": description: Link deleted successfully summary: Delete a link for an application tags: *a28 /api/v2/applications/{applicationId}/technical-debt-info: post: operationId: ApplicationTechnicalDebtInfoController_create parameters: - name: applicationId required: true in: path description: ID of the application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateTechnicalDebtInfoDto" responses: "201": description: Technical debt info created successfully content: application/json: schema: $ref: "#/components/schemas/TechnicalDebtInfoDto" "409": description: Technical debt info already exists for this application summary: Create technical debt info for an application tags: &a29 - Technical Debt Info get: operationId: ApplicationTechnicalDebtInfoController_find parameters: - name: applicationId required: true in: path description: ID of the application schema: type: string - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc responses: "200": description: Technical debt info found successfully content: application/json: schema: $ref: "#/components/schemas/PaginatedTechnicalDebtInfoDto" summary: Retrieve the technical debt info for an application tags: *a29 /api/v2/technical-debts: get: description: Retourne toutes les données de dette technique sans pagination, en appliquant les mêmes filtres que la recherche d'applications. operationId: TechnicalDebtController_getTechnicalDebtPoints parameters: - name: page required: false in: query description: Numéro de page schema: minimum: 0 example: 0 type: number - name: pageSize required: false in: query description: Nombre de résultats par page, 0 pour supprimer la pagination schema: minimum: 0 maximum: 100 default: 15 example: 15 type: number - name: sortBy required: false in: query description: Champ utilisé pour le tri schema: example: label type: string - name: order required: false in: query description: Ordre de tri schema: example: asc type: string enum: - asc - desc - name: search required: false in: query description: Recherche sur les labels et shortName schema: example: Mon Application type: string - name: q required: false in: query description: Recherche full-text sur l'ensemble des informations descriptives de la fiche (libellé, nom court, description, finalités, populations cibles, tags, labels, acteurs). Insensible à la casse et aux accents, avec lemmatisation française et tri par pertinence. Tous les mots saisis doivent être présents (ET) ; la ponctuation est ignorée. schema: maxLength: 200 example: gestion des factures type: string - name: qPrefix required: false in: query description: Recherche full-text en mode préfixe, pour l'autocomplétion au fil de la frappe (chaque mot saisi est traité comme un préfixe). Même périmètre que `q`. Prioritaire sur `q` s'il est fourni. Limité aux 200 résultats les plus pertinents. schema: maxLength: 200 example: tow muel type: string - name: label required: false in: query description: Recherche par label schema: example: Mon Application type: string - name: shortName required: false in: query description: Recherche par shortName schema: type: string - name: tag required: false in: query description: Filtrer par tags (un ou plusieurs) schema: type: array items: type: string - name: priorityRestart required: false in: query description: Filtrer par une ou plusieurs priorités de redémarrage (R0 à R3) schema: example: - R1 - R2 type: array items: type: string enum: - R0 - R1 - R1_STAR - R2 - R3 - name: actorType required: false in: query description: Type d'acteur. Utiliser les valeurs de /actorTypes schema: example: MOA type: string - name: actorEmail required: false in: query description: Email d'un acteur pour filtrer les applications schema: example: user@example.com type: string - name: missingMoa required: false in: query description: Filtrer les applications sans MOA schema: example: true type: boolean - name: missingMoe required: false in: query description: Filtrer les applications sans MOE schema: example: true type: boolean - name: missingHosting required: false in: query description: Filtrer les applications sans hébergement schema: example: true type: boolean - name: currentStatus__in required: false in: query description: Filtrer par un ou plusieurs status du statut courant schema: type: array items: type: string enum: - under_construction - to_validate - poc - in_production_mvp - in_production - in_production_decommissioning - decommissioned - deleted - name: currentStatus__isNull required: false in: query description: Filtrer les applications sans statut schema: example: true type: boolean - name: subscribersEmail required: false in: query description: Filtrer les applications abonné schema: example: true type: boolean - name: myApplications required: false in: query description: Filtrer les applications par acteur et groupe acteurs schema: example: true type: boolean - name: organization required: false in: query description: Nom de l'organisation liée à l'application schema: example: Direction des systèmes d'information type: string - name: hostingSearch required: false in: query description: Recherche unifiée sur tous les champs d'hébergement (site, plateforme, fournisseur, bâtiment, salle) schema: example: Paris type: string - name: hostingSite required: false in: query description: Filtrer par site d'hébergement schema: example: Paris type: string - name: hostingPlatform required: false in: query description: Filtrer par plateforme d'hébergement schema: example: AWS type: string - name: hostingProvider required: false in: query description: Filtrer par fournisseur d'hébergement schema: example: Amazon type: string - name: hostingBuilding required: false in: query description: Filtrer par bâtiment d'hébergement schema: example: Bâtiment A type: string - name: hostingRoom required: false in: query description: Filtrer par pièce d'hébergement schema: example: Salle 101 type: string - name: compliance__in required: false in: query description: "[Déprécié] Filtrer par conformité présente. Utiliser plutôt compliancePresent__in." deprecated: true schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: compliancePresent__in required: false in: query description: Critères de conformité devant être présents (renseignés) sur l'application schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: complianceAbsent__in required: false in: query description: "Critères de conformité absents : pour un critère booléen (pra, dsfr) = explicitement Non (false) ; pour les autres = non renseigné" schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: complianceUnset__in required: false in: query description: Critères de conformité non renseignés (valeur nulle). Pertinent pour les critères booléens (pra, dsfr) schema: type: array items: type: string enum: - dima - pdma - homologation - rgaa - dsfr - rgpd - pra - name: link required: false in: query description: Recherche par lien (ressource externe) schema: type: string - name: iqGte required: false in: query description: Recherche par indice de qualité minimum schema: minimum: 0 default: 0 type: number - name: iqLte required: false in: query description: Recherche par indice de qualité maximum schema: maximum: 100 default: 100 type: number - name: columns required: false in: query description: Colonnes à inclure dans l'export schema: example: id,label,shortName,description type: string - name: isActor required: false in: query description: "Ne retourne que les applications dont l'utilisateur est acteur, defaut: false" schema: default: false type: string - name: is_part_of required: false in: query description: Filtrée sur la relation de type Fait partie de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: in_replacement_of required: false in: query description: Filtrée sur la relation de type Remplace schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: is_service_user_of required: false in: query description: Filtrée sur la relation de type Utilise le service de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: is_data_user_of required: false in: query description: Filtrée sur la relation de type Utilise la donnée de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: use_sso_of required: false in: query description: Filtrée sur la relation de type Utilise le SSO de schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: relationAppId required: false in: query description: Filtrage des relations sur cette app schema: type: string - name: businessDivisionId required: false in: query description: Filtrage des directions de metier MOA (une ou plusieurs) schema: type: array items: type: string - name: is_mediation_service required: false in: query description: Filtrée sur la mediation de service schema: type: string enum: - NEUTRAL - INCLUDE - EXCLUDE - name: dataSourceName required: false in: query description: Recherche par nom de source de données schema: type: string - name: millesime required: false in: query description: Millésime (année) de la campagne dette IT à présenter. Par défaut, le millésime le plus récent disponible. schema: minimum: 2000 maximum: 2100 example: 2026 type: number responses: "200": description: Liste des points de dette technique filtrés content: application/json: schema: type: array items: $ref: "#/components/schemas/TechnicalDebtPointDto" summary: Lister les points de dette technique tags: &a30 - technical-debts /api/v2/technical-debts/millesimes: get: description: Retourne les millésimes (années) de campagne dette IT enregistrés, triés du plus récent au plus ancien. operationId: TechnicalDebtController_getMillesimes parameters: [] responses: "200": description: Liste des millésimes disponibles content: application/json: schema: type: array items: type: number summary: Lister les millésimes de campagne dette IT disponibles tags: *a30 /api/v2/applications/{applicationId}/rgaa-compliances: get: operationId: RgaaController_findAll parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "200": description: Liste des conformités RGAA content: application/json: schema: type: array items: $ref: "#/components/schemas/RgaaComplianceDto" summary: Lister les conformités RGAA d'une application tags: &a31 - RGAA Compliances post: operationId: RgaaController_create parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateRgaaComplianceDto" responses: "201": description: Conformité RGAA créée avec succès content: application/json: schema: $ref: "#/components/schemas/RgaaComplianceDto" "409": description: Une conformité RGAA existe déjà pour cette application content: application/json: schema: $ref: "#/components/schemas/RgaaComplianceErrorResponseDto" summary: Créer une conformité RGAA pour une application tags: *a31 /api/v2/applications/{applicationId}/rgaa-compliances/{id}: patch: operationId: RgaaController_update parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: id required: true in: path description: ID de la conformité RGAA schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateRgaaComplianceDto" responses: "200": description: Conformité RGAA mise à jour avec succès content: application/json: schema: $ref: "#/components/schemas/RgaaComplianceDto" summary: Mettre à jour une conformité RGAA tags: *a31 delete: operationId: RgaaController_delete parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: id required: true in: path description: ID de la conformité RGAA schema: type: string responses: "204": description: Conformité RGAA supprimée summary: Supprimer une conformité RGAA tags: *a31 /api/v2/applications/{applicationId}/technologies: get: operationId: TechnologyController_findAll parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "200": description: Liste des technologies content: application/json: schema: type: array items: $ref: "#/components/schemas/TechnologyDto" summary: Lister la stack technique d'une application tags: &a32 - Technologies post: operationId: TechnologyController_create parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateTechnologyDto" responses: "201": description: Technologie ajoutée avec succès content: application/json: schema: $ref: "#/components/schemas/TechnologyDto" "409": description: Cette technologie est déjà renseignée pour cette application content: application/json: schema: $ref: "#/components/schemas/TechnologyErrorResponseDto" summary: Ajouter une technologie à la stack d'une application tags: *a32 /api/v2/applications/{applicationId}/technologies/eol-products: get: operationId: TechnologyController_listEolProducts parameters: - name: applicationId required: true in: path description: ID de l'application schema: {} responses: "200": description: Catalogue des produits endoflife.date (vide si le catalogue est indisponible) content: application/json: schema: type: array items: $ref: "#/components/schemas/EolProductDto" summary: Lister les produits suivis par endoflife.date (autocomplétion de la saisie produit) tags: *a32 /api/v2/applications/{applicationId}/technologies/{id}: patch: operationId: TechnologyController_update parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: id required: true in: path description: ID de la technologie schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateTechnologyDto" responses: "200": description: Technologie mise à jour avec succès content: application/json: schema: $ref: "#/components/schemas/TechnologyDto" summary: Mettre à jour une technologie tags: *a32 delete: operationId: TechnologyController_delete parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string - name: id required: true in: path description: ID de la technologie schema: type: string responses: "204": description: Technologie supprimée summary: Supprimer une technologie tags: *a32 /api/v2/stats/iq-avg/period: get: description: " Permet de récupérer la moyenne des IQ par période. \ Vous pouvez spécifier la période en utilisant les paramètres `from` et `to`, \ ainsi que le regroupement souhaité avec `groupBy`. \ **Valeurs possibles pour `groupBy` :** - `day` (jour) - `week` (semaine) - `month` (mois) - `year` (année) **Exemple d’appel :** ```http GET /stats/iq-avg/period?from=2025-07-01&to=2025-07-23&groupBy=month Authorization: Bearer ``` \ " operationId: StatsController_getIqAvgGrouped parameters: - name: from required: false in: query description: Date de début au format ISO (ex. 2025-07-01) schema: example: 2025-07-01 type: string - name: to required: false in: query description: Date de fin au format ISO (ex. 2025-07-23) schema: example: 2025-07-23 type: string - name: groupBy required: false in: query description: Regroupement souhaité (day, week, month, year) schema: enum: - day - week - month - year type: string responses: "200": description: Tableau de buckets avec label, moyenne, min, max, count content: application/json: schema: type: array items: $ref: "#/components/schemas/GetIqAvgGroupedDto" summary: Récupérer la moyenne des IQ par période tags: - Stats /api/v2/reports: get: description: Renvoie la liste de tous les signalements. operationId: ReportsController_findAll parameters: - name: all required: false in: query description: Filtrer les signalements pour l'utilisateur connecté schema: default: false type: boolean - name: searchReport required: false in: query schema: type: string - name: sortBy required: false in: query schema: type: string enum: - application - status - date - description - notifier - notes - name: order required: false in: query schema: type: string enum: - asc - desc - name: page required: false in: query schema: minimum: 0 type: number - name: limit required: false in: query schema: minimum: 1 type: number responses: "200": description: Liste des signalements content: application/json: schema: $ref: "#/components/schemas/PaginatedReportDto" summary: Récupérer tous les signalements tags: &a33 - Reports post: operationId: ReportsController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateReportRequestDto" responses: "201": description: Signalement créé avec succès content: application/json: schema: $ref: "#/components/schemas/ReportDto" summary: Créer un signalement tags: *a33 /api/v2/reports/{id}: patch: operationId: ReportsController_update parameters: - name: id required: true in: path schema: type: string - name: notify required: true in: query description: Send Notification Email schema: example: "true" type: boolean requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateReportDto" responses: "200": description: Signalement mis à jour avec succès content: application/json: schema: $ref: "#/components/schemas/ReportDto" summary: Mettre à jour un signalement tags: *a33 /api/v2/applications/{applicationId}/reports: post: operationId: ApplicationReportsController_create parameters: - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateReportRequestDto" responses: "201": description: Signalement créé avec succès content: application/json: schema: $ref: "#/components/schemas/ReportDto" summary: Demande de modification pour une fiche application tags: &a34 - ApplicationReports get: description: Renvoie la liste paginée des signalements pour une application donnée. operationId: ApplicationReportsController_findAll parameters: - name: all required: false in: query description: Filtrer les signalements pour l'utilisateur connecté schema: default: false type: boolean - name: searchReport required: false in: query schema: type: string - name: sortBy required: false in: query schema: type: string enum: - application - status - date - description - notifier - notes - name: order required: false in: query schema: type: string enum: - asc - desc - name: page required: false in: query schema: minimum: 0 type: number - name: limit required: false in: query schema: minimum: 1 type: number - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "200": description: Liste paginée des signalements pour l'application content: application/json: schema: $ref: "#/components/schemas/PaginatedReportDto" summary: Récupérer tous les signalements pour une application tags: *a34 /api/v2/applications/{applicationId}/reports/{id}: get: operationId: ApplicationReportsController_findOne parameters: - name: id required: true in: path schema: type: string - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "200": description: Signalement trouvé avec succès content: application/json: schema: $ref: "#/components/schemas/ReportDto" summary: Récupérer un signalement spécifique par ID tags: *a34 patch: operationId: ApplicationReportsController_update parameters: - name: id required: true in: path schema: type: string - name: notify required: true in: query description: Send Notification Email schema: example: "true" type: boolean - name: applicationId required: true in: path description: ID de l'application schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateReportDto" responses: "200": description: Signalement mis à jour avec succès content: application/json: schema: $ref: "#/components/schemas/ReportDto" summary: Mettre à jour un signalement tags: *a34 delete: operationId: ApplicationReportsController_remove parameters: - name: id required: true in: path schema: type: string - name: applicationId required: true in: path description: ID de l'application schema: type: string responses: "204": description: Signalement supprimé avec succès summary: Supprimer un signalement tags: *a34 /api/v2/health-check: get: description: Exécute une requête basique vers la base de données pour vérifier la connectivité et l'état global de l'application. operationId: HealthCheckController_checkHealth parameters: [] responses: "200": description: L'application fonctionne correctement. content: application/json: schema: $ref: "#/components/schemas/HealthCheckDto" "503": description: Le service n'est pas disponible en raison d'une erreur lors de la connexion à la base de données. content: application/json: schema: $ref: "#/components/schemas/HealthCheckErrorDto" summary: Vérification de la santé de l'application tags: - Health Check info: title: API Référentiel Applications description: API pour la gestion des applications version: "2.0" contact: {} tags: [] servers: [] components: securitySchemes: oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: http://localhost:8082/realms/referentiel-applications/protocol/openid-connect/auth tokenUrl: http://localhost:8082/realms/referentiel-applications/protocol/openid-connect/token refreshUrl: http://localhost:8082/realms/referentiel-applications/protocol/openid-connect/token scopes: openid: OpenID scope profile: Profile scope description: OAuth2 authentication using OIDC api_key: type: apiKey in: header name: x-refapp-token description: Token authentication schemas: FooterLinkDto: type: object properties: label: type: string description: Link label example: Documentation title: type: string description: Link title (tooltip) example: Aller à la documentation href: type: string description: Link URL example: https://documentation.example.com required: - label - title - href ConfigDto: type: object properties: oidcConfigUrl: type: string description: OIDC configuration URL example: https://auth.sso.interieur.rie.gouv.fr/.well-known/openid-configuration oidcClientId: type: string description: OIDC client ID example: my-client-id version: type: string description: Backend version example: 1.0.0 environmentLabel: type: string description: Environment label displayed in the header badge example: developpement footerLinks: description: Footer links to display in the application footer type: array items: $ref: "#/components/schemas/FooterLinkDto" required: - oidcConfigUrl - oidcClientId - version - footerLinks Roles: type: string enum: - VISITOR - READER - CONTRIBUTOR - ADMIN description: Role attribué a un utilisateur TokenKind: type: string enum: - personal - service description: "Type de token : personnel (créé par un utilisateur pour lui-même) ou applicatif (compte de service pour un système tiers)" TokenOwnerDto: type: object properties: id: type: string example: abc123def456ghi789jkl012mno345pq description: Identifiant de l'utilisateur email: type: string example: jean.dupont@beta.gouv.fr description: Email de l'utilisateur required: - id - email BusinessDivisionDTO: type: object properties: label: type: string maxLength: 255 description: Nom unique du business division example: farm id: type: string description: Identifiant unique de la division DTO required: - label - id OrganizationMaiaReferenceDto: type: object properties: id: type: string example: f09ed26a-8415-476a-be3b-ada479291c34 description: Identifiant de la référence maiaRef: type: string example: MI/DNUM/SDID description: Référence MAIA organizationId: type: string example: f09ed26a-8415-476a-be3b-ada479291c34 description: Organisation locale liée createdAt: format: date-time type: string description: Date de création updatedAt: format: date-time type: string description: Date de mise à jour required: - id - maiaRef - organizationId - createdAt - updatedAt OrganizationDto: type: object properties: id: type: string example: f09ed26a-8415-476a-be3b-ada479291c34 description: L'identifiant de l'organisation path: type: string example: Direction de la transformation numérique description: Nom de l'organisation url: type: string nullable: true example: "" description: url de l'organisation sigle: type: string nullable: true example: dtnum description: sigle de l'organisation parentId: type: string nullable: true example: f09ed26a-8415-476a-be3b-ada479291c34 description: L'identifiant de l'organisation parente businessDivisionId: type: string nullable: true example: f09ed26a-8415-476a-be3b-ada479291c34 description: L'identifiant de la direction métier associée businessDivision: nullable: true description: Direction métier associée à l'organisation type: object allOf: - $ref: "#/components/schemas/BusinessDivisionDTO" maiaReferences: description: Références MAIA associées à l'organisation type: array items: $ref: "#/components/schemas/OrganizationMaiaReferenceDto" required: - id - path - url - sigle - parentId - businessDivisionId TokenDto: type: object properties: id: type: string example: abc123def456ghi789jkl012mno345pq description: Identifiant unique du token role: description: Role attribué a un utilisateur allOf: - $ref: "#/components/schemas/Roles" description: type: string example: Token pour l'application X description: Description du token name: type: string example: Service X description: Nom du service ou de l'application utilisant le token expiresAt: type: string example: 2023-12-31T23:59:59.999Z description: Date d'expiration du token, au format ISO 8601, maximum 1 an dans le futur status: enum: &a35 - active - expired - revoked type: string example: active description: Statut du token kind: example: personal description: "Type de token : personnel (créé par un utilisateur pour lui-même) ou applicatif (compte de service pour un système tiers)" allOf: - $ref: "#/components/schemas/TokenKind" createdBy: description: Utilisateur ayant créé le token allOf: - $ref: "#/components/schemas/TokenOwnerDto" userImpersonate: description: Utilisateur usurpé par le token (le propriétaire pour un token personnel) allOf: - $ref: "#/components/schemas/TokenOwnerDto" scopeOrganization: nullable: true description: Organisation de périmètre du compte de service usurpé par ce token (tokens applicatifs uniquement) type: object allOf: - $ref: "#/components/schemas/OrganizationDto" required: - id - description - name - status - kind - createdBy PaginatedTokenDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/TokenDto" total: type: number description: Total number of items example: 100 required: - results - total CreateServiceTokenDto: type: object properties: role: description: Role attribué a un utilisateur allOf: - $ref: "#/components/schemas/Roles" description: type: string example: Token pour l'application X description: Description du token name: type: string example: Service X description: Nom du service ou de l'application utilisant le token expiresAt: type: string example: 2023-12-31T23:59:59.999Z description: Date d'expiration du token, au format ISO 8601, maximum 1 an dans le futur scopeOrganizationId: type: string nullable: true description: ID de l'organisation de périmètre du compte de service créé. Ignoré si le rôle est VISITOR, comme pour le périmètre d'un utilisateur. required: - role - description - name ExposedTokenDto: type: object properties: id: type: string example: abc123def456ghi789jkl012mno345pq description: Identifiant unique du token role: description: Role attribué a un utilisateur allOf: - $ref: "#/components/schemas/Roles" description: type: string example: Token pour l'application X description: Description du token name: type: string example: Service X description: Nom du service ou de l'application utilisant le token expiresAt: type: string example: 2023-12-31T23:59:59.999Z description: Date d'expiration du token, au format ISO 8601, maximum 1 an dans le futur status: enum: *a35 type: string example: active description: Statut du token kind: example: personal description: "Type de token : personnel (créé par un utilisateur pour lui-même) ou applicatif (compte de service pour un système tiers)" allOf: - $ref: "#/components/schemas/TokenKind" createdBy: description: Utilisateur ayant créé le token allOf: - $ref: "#/components/schemas/TokenOwnerDto" userImpersonate: description: Utilisateur usurpé par le token (le propriétaire pour un token personnel) allOf: - $ref: "#/components/schemas/TokenOwnerDto" scopeOrganization: nullable: true description: Organisation de périmètre du compte de service usurpé par ce token (tokens applicatifs uniquement) type: object allOf: - $ref: "#/components/schemas/OrganizationDto" password: type: string example: xyz987uvw654rst321opq098nml765kj description: Valeur du token (ne sera pas stockée, à afficher une seule fois) required: - id - description - name - status - kind - createdBy - password CreatePersonalTokenDto: type: object properties: role: description: Niveau d'administration du token personnel (optionnel). Il ne pourra pas être supérieur à celui de l'utilisateur créant le token. allOf: - $ref: "#/components/schemas/Roles" description: type: string example: Token pour l'application X description: Description du token name: type: string example: Service X description: Nom du service ou de l'application utilisant le token expiresAt: type: string example: 2023-12-31T23:59:59.999Z description: Date d'expiration du token, au format ISO 8601, maximum 1 an dans le futur required: - description - name RegenerateTokenDto: type: object properties: expiresAt: type: string example: 2023-12-31T23:59:59.999Z description: Date d'expiration du token, au format ISO 8601, maximum 1 an dans le futur UserType: type: string enum: - human - bot UserFollowedApplicationDto: type: object properties: id: type: string label: type: string required: - id - label Permission: type: string enum: - CreateApplication - DeleteApplication - CreateGlobalReport - MDITList - AppList - DataExport - AdminPanelManage - ActorTypePost - ActorTypeManage - ActorTypeDelete - OrganizationManage - ColumnRead - AppRead - AppWrite - ActorRead - ActorWrite - ComplianceRead - ComplianceWrite - HostingRead - HostingWrite - RelationRead - RelationWrite - LinkRead - LinkWrite - AppWritePriority - MetadataRead - DataRead - DataWrite - TechnologyRead - TechnologyWrite - ReportRead - ReportPost - ReportManage description: Liste des permissions supplémentaire accordé a un user UserWithPermissions: type: object properties: role: description: Role attribué a un utilisateur allOf: - $ref: "#/components/schemas/Roles" organization: nullable: true type: object allOf: - $ref: "#/components/schemas/OrganizationDto" scopeOrganization: nullable: true type: object allOf: - $ref: "#/components/schemas/OrganizationDto" type: allOf: - $ref: "#/components/schemas/UserType" emailNotificationsEnabled: type: boolean description: Préférence de notification par email default: true followedApplications: description: Applications suivies par l'utilisateur type: array items: $ref: "#/components/schemas/UserFollowedApplicationDto" additionalPermissions: type: array items: $ref: "#/components/schemas/Permission" description: Liste des permissions supplémentaire accordé a un user lastPermissionChangeAt: format: date-time type: string nullable: true description: Date de la dernière modification des droits (rôle/permissions) de cet utilisateur lastPermissionChangedByEmail: type: string nullable: true description: Email de l'auteur de la dernière modification des droits. Null si jamais modifié ou si l'auteur a depuis été supprimé. isBlocked: type: boolean description: Si l'accès de l'utilisateur est bloqué. Un utilisateur bloqué est rejeté à l'authentification. default: false blockedAt: format: date-time type: string nullable: true description: Date à laquelle l'utilisateur a été bloqué permissions: type: array items: $ref: "#/components/schemas/Permission" description: Liste des permissions lié au role d'un user id: type: string email: type: string organizationId: type: string nullable: true scopeOrganizationId: type: string nullable: true required: - role - type - additionalPermissions - isBlocked - id - email - organizationId - scopeOrganizationId UpdateUserPreferencesDto: type: object properties: emailNotificationsEnabled: type: boolean description: Indique si les notifications par email sont activées pour l'utilisateur MaiaOrganizationSuggestionDto: type: object properties: organizationId: type: string nullable: true description: ID de l'organisation correspondante dans le référentiel organizationPath: type: string nullable: true description: Chemin de l'organisation proposée par MAIA example: MINISTERE/DIRECTION/SERVICE firstName: type: string description: Prénom récupéré depuis MAIA lastName: type: string description: Nom récupéré depuis MAIA fullName: type: string description: Nom complet récupéré depuis MAIA required: - organizationId - organizationPath - firstName - lastName - fullName SyncOrganizationsDto: type: object properties: onlyMissing: type: boolean default: true description: "Si true, traite uniquement les utilisateurs sans organisation (défaut: true)" SyncOrganizationsResponseDto: type: object properties: status: type: string description: Statut de la tâche de synchronisation example: queued enum: - queued message: type: string description: Message descriptif example: Tâche de synchronisation MAIA lancée. required: - status - message ScopePermissionsErrorDto: type: object properties: message: type: string example: Scope permissions denied description: Impossible de modifier un utilisateur en dehors de son scope d'organisation. required: - message UpdateUserDto: type: object properties: role: description: Role attribué a un utilisateur allOf: - $ref: "#/components/schemas/Roles" organizationId: type: string nullable: true description: ID de l'organisation additionalPermissions: type: array items: $ref: "#/components/schemas/Permission" description: Liste des permissions supplémentaire accordé a un user scopeOrganization: nullable: true type: object allOf: - $ref: "#/components/schemas/OrganizationDto" scopeOrganizationId: type: string nullable: true required: - additionalPermissions - scopeOrganizationId UserPermissionLogDto: type: object properties: id: type: string description: ID unique de l'entrée d'historique createdAt: format: date-time type: string description: Date de la modification role: nullable: true description: Rôle de l'utilisateur après la modification allOf: - $ref: "#/components/schemas/Roles" additionalPermissions: type: array items: $ref: "#/components/schemas/Permission" description: Permissions supplémentaires de l'utilisateur après la modification changedByEmail: type: string nullable: true description: Email de la personne ayant effectué la modification. Null si la modification est automatique (création de compte) ou si l'auteur a depuis été supprimé. required: - id - createdAt - additionalPermissions PaginatedUserWithPermissions: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/UserWithPermissions" total: type: number description: Total number of items example: 100 required: - results - total CreateOrganizationMaiaReferenceDto: type: object properties: maiaRef: type: string example: MI/DNUM/SDID description: Référence MAIA à associer organizationId: type: string example: f09ed26a-8415-476a-be3b-ada479291c34 description: Identifiant de l'organisation locale cible required: - maiaRef - organizationId PaginatedOrganizationMaiaReferenceDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/OrganizationMaiaReferenceDto" total: type: number description: Total number of items example: 100 required: - results - total EmailLogDto: type: object properties: id: type: string description: ID unique de l'e-mail envoyé to: type: string description: Destinataire(s) de l'e-mail subject: type: string description: Objet de l'e-mail html: type: string description: Contenu HTML complet de l'e-mail envoyé text: type: string description: Contenu texte de l'e-mail envoyé sentAt: format: date-time type: string description: Date et heure d'envoi required: - id - to - subject - html - text - sentAt PaginatedEmailLogDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/EmailLogDto" total: type: number description: Total number of items example: 100 required: - results - total MetadataAction: type: string enum: - add - update - delete - export description: Action effectuée sur la metadata ApplicationLightDto: type: object properties: id: type: string label: type: string required: - id - label UserEntity: type: object properties: role: description: Role attribué a un utilisateur allOf: - $ref: "#/components/schemas/Roles" organization: nullable: true type: object allOf: - $ref: "#/components/schemas/OrganizationDto" scopeOrganization: nullable: true type: object allOf: - $ref: "#/components/schemas/OrganizationDto" type: allOf: - $ref: "#/components/schemas/UserType" emailNotificationsEnabled: type: boolean description: Préférence de notification par email default: true followedApplications: description: Applications suivies par l'utilisateur type: array items: $ref: "#/components/schemas/UserFollowedApplicationDto" additionalPermissions: type: array items: $ref: "#/components/schemas/Permission" description: Liste des permissions supplémentaire accordé a un user lastPermissionChangeAt: format: date-time type: string nullable: true description: Date de la dernière modification des droits (rôle/permissions) de cet utilisateur lastPermissionChangedByEmail: type: string nullable: true description: Email de l'auteur de la dernière modification des droits. Null si jamais modifié ou si l'auteur a depuis été supprimé. isBlocked: type: boolean description: Si l'accès de l'utilisateur est bloqué. Un utilisateur bloqué est rejeté à l'authentification. default: false blockedAt: format: date-time type: string nullable: true description: Date à laquelle l'utilisateur a été bloqué id: type: string email: type: string organizationId: type: string nullable: true scopeOrganizationId: type: string nullable: true required: - role - type - additionalPermissions - isBlocked - id - email - organizationId - scopeOrganizationId MetadataDto: type: object properties: id: type: string description: ID de la metadata example: 5708d232-8338-4abf-8f38-8370acc89497 applicationId: type: string nullable: true description: ID de l'application liée example: 5708d232-8338-4abf-8f38-8370acc89497 action: description: Action effectuée sur la metadata example: add allOf: - $ref: "#/components/schemas/MetadataAction" actorId: type: string nullable: true description: ID de l'acteur lié à la metadata example: 5708d232-8338-4abf-8f38-8370acc89497 createdAt: type: string description: Date de création de la metadata example: 2023-10-01T12:00:00Z complianceId: type: string nullable: true description: ID de la conformité liée à la metadata example: 5708d232-8338-4abf-8f38-8370acc89497 createdById: type: string description: ID de l'utilisateur qui a créé la metadata example: 5708d232-8338-4abf-8f38-8370acc89497 dataOwnerId: type: string nullable: true description: ID du propriétaire des données lié à la metadata example: 5708d232-8338-4abf-8f38-8370acc89497 description: type: string nullable: true description: Description de la metadata example: Initial metadata externalRessourceId: type: string nullable: true description: ID de la ressource externe liée à la metadata example: 5708d232-8338-4abf-8f38-8370acc89497 hostingId: type: string nullable: true description: ID de l'hébergement lié à la metadata example: 5708d232-8338-4abf-8f38-8370acc89497 labelId: type: string nullable: true description: ID du label liée à la metadata example: 5708d232-8338-4abf-8f38-8370acc89497 application: $ref: "#/components/schemas/ApplicationLightDto" createdBy: description: Utilisateur qui a créé la metadata allOf: - $ref: "#/components/schemas/UserEntity" impersonatorId: type: string nullable: true description: ID de l'administrateur réel si la metadata a été créée sous impersonation example: 5708d232-8338-4abf-8f38-8370acc89497 impersonator: nullable: true description: Administrateur réel si la metadata a été créée sous impersonation type: object allOf: - $ref: "#/components/schemas/UserEntity" required: - id - applicationId - action - actorId - createdAt - complianceId - createdById - dataOwnerId - description - externalRessourceId - hostingId - labelId - createdBy PaginatedMetadataDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/MetadataDto" total: type: number description: Total number of items example: 100 required: - results - total FirstLastMetadataDto: type: object properties: first: nullable: true description: La première metadata de l'application type: object allOf: - $ref: "#/components/schemas/MetadataDto" last: nullable: true description: La dernière metadata de l'application type: object allOf: - $ref: "#/components/schemas/MetadataDto" required: - first - last ApplicationPriorityRestart: type: string enum: - R0 - R1 - R1_STAR - R2 - R3 ApplicationType: type: string enum: - business - core_service - intranet_citizen - intranet_staff - data_hub description: Type of the application ApplicationStatus: type: string enum: - under_construction - to_validate - poc - in_production_mvp - in_production - in_production_decommissioning - decommissioned - deleted description: Nouveau statut de l'application CreateApplicationStatusDto: type: object properties: status: description: Nouveau statut de l'application allOf: - $ref: "#/components/schemas/ApplicationStatus" statusDate: format: date-time type: string nullable: true description: Date optionnelle du changement de statut version: type: string nullable: true description: Version du statut required: - status CreateApplicationDto: type: object properties: label: type: string minLength: 2 example: My Application description: Label of the application shortName: type: string example: short-app-name description: Short name of the application logo: type: string example: http://example.com/logo.png description: Logo URL of the application description: type: string example: An amazing application description: Description of the application targetPopulations: example: &a36 - population 1 - population 2 description: population associated with the application type: array items: type: string priorityRestart: allOf: - $ref: "#/components/schemas/ApplicationPriorityRestart" purposes: example: &a37 - finance - HR description: Purposes of the application type: array items: type: string type: description: Type of the application example: business allOf: - $ref: "#/components/schemas/ApplicationType" tags: example: &a38 - tag1 - tag2 type: array items: type: string status: description: Statut initial de l'application example: status: under_construction statusDate: 2024-01-15T10:30:00Z allOf: - $ref: "#/components/schemas/CreateApplicationStatusDto" businessDivisionIds: description: Ids des directions de metier de l'application MOA type: array items: type: string required: - label - description ApplicationStatusDto: type: object properties: id: type: string format: uuid description: ID unique du statut applicationId: type: string format: uuid description: ID de l'application status: description: Statut de l'application allOf: - $ref: "#/components/schemas/ApplicationStatus" statusDate: format: date-time type: string nullable: true description: Date du changement de statut version: type: string nullable: true description: Version du statut required: - id - applicationId - status TechnicalDebtInfoDto: type: object properties: technicalMaturity: type: number minimum: 1 maximum: 5 example: 3.2 description: Technical maturity score (1-5). Omit / null = not rated. businessMaturity: type: number minimum: 1 maximum: 5 example: 4.5 description: Business maturity score (1-5). Omit / null = not rated. costContainment: type: number minimum: 1 maximum: 5 example: 2.75 description: Cost containment score (1-5). Omit / null = not rated. millesime: type: number minimum: 2000 maximum: 2100 example: 2026 description: Millésime (année) de la campagne dette IT. Par défaut, l'année courante. id: type: string example: uuid-example description: Unique identifier applicationId: type: string example: uuid-example description: Application ID required: - id - applicationId ApplicationDto: type: object properties: logo: type: string nullable: true example: https://example.com/logo.png description: URL of the application logo status: description: Current status of the application allOf: - $ref: "#/components/schemas/ApplicationStatus" priorityRestart: nullable: true allOf: - $ref: "#/components/schemas/ApplicationPriorityRestart" currentStatus: nullable: true description: Current status of the application with full details type: object allOf: - $ref: "#/components/schemas/ApplicationStatusDto" technicalDebtInfo: nullable: true description: Technical debt information for the application type: object allOf: - $ref: "#/components/schemas/TechnicalDebtInfoDto" businessDivisions: description: Business divisions MOA for the application type: array items: $ref: "#/components/schemas/BusinessDivisionDTO" id: type: string label: type: string shortName: type: string nullable: true description: type: string targetPopulations: type: array items: type: string purposes: type: array items: type: string quality: type: number nullable: true required: - logo - id - label - shortName - description - targetPopulations - purposes - quality CountByMonthDto: type: object properties: month: type: string description: Month in YYYY-MM format example: 2023-10 total: type: number description: Total number of applications for the month example: 150 required: - month - total CountByIqDto: type: object properties: iq: type: number description: Indice de qualité de l'application example: 85 total: type: number description: Total d'applications pour cet indice de qualité example: 30 required: - iq - total ApplicationSearchResultDto: type: object properties: results: description: Liste des applications correspondant aux critères de recherche type: array items: $ref: "#/components/schemas/ApplicationDto" total: type: number description: Total number of items example: 100 averageIq: type: number description: IQ moyen calculé sur l'ensemble des applications correspondant aux critères (toutes pages confondues) example: 72.5 nullable: false technicalDebtPoints: description: Liste des applications correspondant aux critères de recherche et legitime au technical debt point type: array items: $ref: "#/components/schemas/ApplicationDto" required: - results - total - averageIq - technicalDebtPoints QualitySummaryActorsDto: type: object properties: MOA: type: boolean MOE: type: boolean TMA: type: boolean HEB: type: boolean REP: type: boolean required: - MOA - MOE - TMA - HEB - REP QualitySummaryCompliancesDto: type: object properties: DIMA: type: boolean PDMA: type: boolean HOMOLOGATION: type: boolean RGAA: type: boolean DSFR: type: boolean nullable: true RGPD: type: boolean nullable: true required: - DIMA - PDMA - HOMOLOGATION - RGAA - DSFR - RGPD QualitySummaryDto: type: object properties: hasDescription: type: boolean hasHosting: type: boolean hasSnapvisu: type: boolean actors: $ref: "#/components/schemas/QualitySummaryActorsDto" compliances: $ref: "#/components/schemas/QualitySummaryCompliancesDto" required: - hasDescription - hasHosting - hasSnapvisu - actors - compliances PatchApplicationDto: type: object properties: label: type: string minLength: 2 example: My Application description: Label of the application shortName: type: string example: short-app-name description: Short name of the application logo: type: string example: http://example.com/logo.png description: Logo URL of the application description: type: string example: An amazing application description: Description of the application targetPopulations: example: *a36 description: population associated with the application type: array items: type: string priorityRestart: allOf: - $ref: "#/components/schemas/ApplicationPriorityRestart" purposes: example: *a37 description: Purposes of the application type: array items: type: string type: description: Type of the application example: business allOf: - $ref: "#/components/schemas/ApplicationType" tags: example: *a38 type: array items: type: string businessDivisionIds: description: Ids des directions de metier de l'application MOA type: array items: type: string UpdateApplicationStatusDto: type: object properties: status: description: Nouveau statut de l'application allOf: - $ref: "#/components/schemas/ApplicationStatus" statusDate: format: date-time type: string nullable: true description: Date optionnelle du changement de statut version: type: string nullable: true description: Version du statut CreateTagDto: type: object properties: name: type: string minLength: 2 maxLength: 100 description: Nom unique du tag (converti en minuscules) example: securite required: - name TagDto: type: object properties: id: type: string description: Identifiant unique du tag name: type: string minLength: 2 maxLength: 100 pattern: ^[a-z._-]+$ description: Nom unique du tag example: securite createdAt: type: string description: Date de création du tag example: 2025-01-01T00:00:00.000Z required: - id - name - createdAt PaginatedTagDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/TagDto" total: type: number description: Total number of items example: 100 required: - results - total UpdateTagDto: type: object properties: name: type: string minLength: 2 maxLength: 100 description: Nom unique du tag (converti en minuscules) example: securite PaginatedBusinessDivisionDTO: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/BusinessDivisionDTO" total: type: number description: Total number of items example: 100 required: - results - total CreateBusinessDivisionDto: type: object properties: label: type: string maxLength: 255 description: Nom unique du business division example: farm required: - label UpdateBusinessDivisionDto: type: object properties: label: type: string maxLength: 255 description: Nom unique du business division example: farm CreateDataDescriptionDto: type: object properties: name: type: string description: type: string familyIds: description: Familles de données parentes (une donnée peut appartenir à plusieurs familles) type: array items: type: string format: uuid officialUrl: type: string format: uri tagIds: type: array items: type: string format: uuid applicationSourceIds: description: Applications sources de cette donnée (celles qui la produisent sur RefApp) type: array items: type: string format: uuid required: - name DataFamilyDto: type: object properties: id: type: string path: type: string required: - id - path ApplicationRefDto: type: object properties: id: type: string description: ID de l'application label: type: string description: Libellé de l'application required: - id - label DataApplicationRefDto: type: object properties: id: type: string format: uuid applicationId: type: string format: uuid application: $ref: "#/components/schemas/ApplicationRefDto" required: - id - applicationId - application DataDescriptionDto: type: object properties: id: type: string format: uuid name: type: string description: type: string officialUrl: type: string format: uri families: description: Familles de données parentes (une donnée peut appartenir à plusieurs familles) type: array items: $ref: "#/components/schemas/DataFamilyDto" tags: type: array items: $ref: "#/components/schemas/TagDto" applicationsSource: description: Applications sources de cette donnée (celles qui la produisent sur RefApp) type: array items: $ref: "#/components/schemas/ApplicationRefDto" dataApplications: type: array items: $ref: "#/components/schemas/DataApplicationRefDto" format: uuid required: - id - name DataSensibilityDto: type: object properties: id: type: string format: uuid label: type: string color: type: string required: - id - label - color OpenDataStatus: type: string enum: - EXPOSED - NOT_EXPOSED - NOT_EXPOSABLE UpdateFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - YEARLY - ON_DEMAND - NEVER DataExposureDto: type: object properties: type: type: string endpoint: type: string url: type: string format: type: string swaggerUrl: type: string authenticationType: type: string id: type: string format: uuid required: - id DataApplicationDto: type: object properties: id: type: string format: uuid applicationId: type: string format: uuid dataDescriptionId: type: string format: uuid dataDescription: format: uuid allOf: - $ref: "#/components/schemas/DataDescriptionDto" sensibility: $ref: "#/components/schemas/DataSensibilityDto" example: type: string openDataStatus: allOf: - $ref: "#/components/schemas/OpenDataStatus" isReference: type: boolean businessUsage: type: string documentationUrl: type: array items: type: string format: uri volumetry: type: number minimum: 0 monthlyVolumetry: type: number minimum: 0 updateFrequency: allOf: - $ref: "#/components/schemas/UpdateFrequency" conservation: type: string maxLength: 255 exposures: type: array items: $ref: "#/components/schemas/DataExposureDto" required: - id - applicationId - dataDescriptionId - dataDescription PaginatedDataApplicationDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/DataApplicationDto" total: type: number description: Total number of items example: 100 required: - results - total CreateDataApplicationDto: type: object properties: dataDescriptionId: type: string format: uuid sensibilityId: type: string format: uuid example: type: string openDataStatus: allOf: - $ref: "#/components/schemas/OpenDataStatus" isReference: type: boolean businessUsage: type: string documentationUrl: type: array items: type: string format: uri volumetry: type: number minimum: 0 monthlyVolumetry: type: number minimum: 0 updateFrequency: allOf: - $ref: "#/components/schemas/UpdateFrequency" conservation: type: string maxLength: 255 required: - dataDescriptionId CreateDataExposureDto: type: object properties: type: type: string endpoint: type: string url: type: string format: type: string swaggerUrl: type: string authenticationType: type: string CreateDataFamilyDto: type: object properties: path: type: string maxLength: 255 description: Chemin hiérarchique de la famille example: Identité / Etat civil required: - path PaginatedDataFamilyDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/DataFamilyDto" total: type: number description: Total number of items example: 100 required: - results - total UpdateDataFamilyDto: type: object properties: path: type: string maxLength: 255 description: Chemin hiérarchique de la famille example: Identité / Etat civil CreateDataSensibilityDto: type: object properties: label: type: string maxLength: 255 description: Libellé du niveau de sensibilité example: Sensible color: type: string maxLength: 50 description: Couleur hexadécimale associée example: "#ce0500" required: - label - color PaginatedDataSensibilityDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/DataSensibilityDto" total: type: number description: Total number of items example: 100 required: - results - total UpdateDataSensibilityDto: type: object properties: label: type: string maxLength: 255 description: Libellé du niveau de sensibilité example: Sensible color: type: string maxLength: 50 description: Couleur hexadécimale associée example: "#ce0500" relationType: type: string enum: - is_part_of - in_replacement_of - is_service_user_of - is_data_user_of - use_sso_of RelationApplicationDto: type: object properties: applicationTargetId: type: string type: allOf: - $ref: "#/components/schemas/relationType" mediationServiceId: type: string nullable: true required: - applicationTargetId - type - mediationServiceId ApplicationMinimalDto: type: object properties: id: type: string label: type: string required: - id - label RelationDto: type: object properties: id: type: string applicationSourceId: type: string applicationTargetId: type: string mediationServiceId: type: string nullable: true sourceApplication: $ref: "#/components/schemas/ApplicationMinimalDto" targetApplication: $ref: "#/components/schemas/ApplicationMinimalDto" type: allOf: - $ref: "#/components/schemas/relationType" mediationService: nullable: true type: object allOf: - $ref: "#/components/schemas/ApplicationMinimalDto" required: - id - applicationSourceId - applicationTargetId - mediationServiceId - sourceApplication - targetApplication - type - mediationService Status: type: string enum: - under_construction - to_validate - poc - in_production_mvp - in_production - in_production_decommissioning - decommissioned - deleted GraphNodeDto: type: object properties: id: type: string label: type: string status: allOf: - $ref: "#/components/schemas/Status" required: - id - label GraphEdgeDto: type: object properties: id: type: string sourceId: type: string sourceLabel: type: string targetId: type: string targetLabel: type: string type: allOf: - $ref: "#/components/schemas/relationType" required: - id - sourceId - sourceLabel - targetId - targetLabel - type RelationGraphDto: type: object properties: nodes: description: Liste des applications (nœuds du graphe) type: array items: $ref: "#/components/schemas/GraphNodeDto" edges: description: Liste des relations (arêtes du graphe) type: array items: $ref: "#/components/schemas/GraphEdgeDto" rootId: type: string description: ID de l'application racine required: - nodes - edges - rootId CreateOrganizationDto: type: object properties: path: type: string example: Direction de la transformation numérique description: Nom de l'organisation url: type: string example: "" description: url de l'organisation sigle: type: string example: dtnum description: sigle de l'organisation parentId: type: string example: f09ed26a-8415-476a-be3b-ada479291c34 description: L'identifiant de l'organisation parente businessDivisionId: type: string nullable: true example: f09ed26a-8415-476a-be3b-ada479291c34 description: L'identifiant de la direction métier associée (null pour détacher) required: - path PaginatedOrganizationDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/OrganizationDto" total: type: number description: Total number of items example: 100 required: - results - total PatchOrganizationDto: type: object properties: path: type: string example: Direction de la transformation numérique description: Nom de l'organisation url: type: string example: "" description: url de l'organisation sigle: type: string example: dtnum description: sigle de l'organisation parentId: type: string example: f09ed26a-8415-476a-be3b-ada479291c34 description: L'identifiant de l'organisation parente businessDivisionId: type: string nullable: true example: f09ed26a-8415-476a-be3b-ada479291c34 description: L'identifiant de la direction métier associée (null pour détacher) CreateActorDto: type: object properties: email: type: string format: email example: example@example.com description: Email de l'acteur (Optionel) firstname: type: string example: Jean description: Prénom de l’acteur lastname: type: string example: Dupont description: Nom de l’acteur actorTypeId: type: string example: 5708d232-8338-4abf-8f38-8370acc89497 description: ID du type d'acteur lié organizationId: type: string nullable: true example: 9965dc19-1c5a-472d-83e3-8bf65093c86c description: ID de l'organization lié (Optionel) applicationId: type: string nullable: true example: 035869dc-47a6-4cee-828f-f6a28d050b35 description: ID de l'application lié (Optionel) isGroup: type: boolean description: Indique si l'acteur est un groupe d'acteurs ou non required: - actorTypeId ActorDto: type: object properties: email: type: string format: email example: example@example.com description: Email de l'acteur (Optionel) firstname: type: string example: Jean description: Prénom de l’acteur lastname: type: string example: Dupont description: Nom de l’acteur actorTypeId: type: string example: 5708d232-8338-4abf-8f38-8370acc89497 description: ID du type d'acteur lié organizationId: type: string nullable: true example: 9965dc19-1c5a-472d-83e3-8bf65093c86c description: ID de l'organization lié (Optionel) applicationId: type: string nullable: true example: 035869dc-47a6-4cee-828f-f6a28d050b35 description: ID de l'application lié (Optionel) isGroup: type: boolean description: Indique si l'acteur est un groupe d'acteurs ou non id: type: string example: 12345678-1234-1234-1234-123456789012 description: Identifiant unique de l'acteur required: - actorTypeId - id PaginatedActorDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/ActorDto" total: type: number description: Total number of items example: 100 required: - results - total UpdateActorDto: type: object properties: email: type: string format: email example: example@example.com description: Email de l'acteur (Optionel) firstname: type: string example: Jean description: Prénom de l’acteur lastname: type: string example: Dupont description: Nom de l’acteur actorTypeId: type: string example: 5708d232-8338-4abf-8f38-8370acc89497 description: ID du type d'acteur lié organizationId: type: string nullable: true example: 9965dc19-1c5a-472d-83e3-8bf65093c86c description: ID de l'organization lié (Optionel) applicationId: type: string nullable: true example: 035869dc-47a6-4cee-828f-f6a28d050b35 description: ID de l'application lié (Optionel) isGroup: type: boolean description: Indique si l'acteur est un groupe d'acteurs ou non BulkActorByEmailDto: type: object properties: email: type: string format: email example: example@example.com description: Email des acteurs à cibler applicationIds: description: Liste des IDs d'applications à cibler (toutes si vide) type: array items: type: string required: - email BulkResultDto: type: object properties: count: type: number description: Nombre d'acteurs affectés required: - count BulkUpdateActorByEmailDto: type: object properties: email: type: string format: email example: example@example.com description: Email de l'acteur (Optionel) firstname: type: string example: Jean description: Prénom de l’acteur lastname: type: string example: Dupont description: Nom de l’acteur actorTypeId: type: string example: 5708d232-8338-4abf-8f38-8370acc89497 description: ID du type d'acteur lié organizationId: type: string nullable: true example: 9965dc19-1c5a-472d-83e3-8bf65093c86c description: ID de l'organization lié (Optionel) applicationId: type: string nullable: true example: 035869dc-47a6-4cee-828f-f6a28d050b35 description: ID de l'application lié (Optionel) isGroup: type: boolean description: Indique si l'acteur est un groupe d'acteurs ou non targetEmail: type: string format: email example: example@example.com description: Email actuel des acteurs à cibler applicationIds: description: Liste des IDs d'applications à cibler (toutes si vide) type: array items: type: string required: - targetEmail CreateActorTypeDto: type: object properties: code: type: string example: MOA description: Code du type d'acteur label: type: string example: Maîtrise d’Ouvrage description: Libellé du type d'acteur description: type: string example: La MOA définit les besoins du projet, supervise sa mise en œuvre et veille à ce que les objectifs métiers soient atteints. description: description du type d'acteur required: - code - label ActorTypeDto: type: object properties: code: type: string example: MOA description: Code du type d'acteur label: type: string example: Maîtrise d’Ouvrage description: Libellé du type d'acteur description: type: string example: La MOA définit les besoins du projet, supervise sa mise en œuvre et veille à ce que les objectifs métiers soient atteints. description: description du type d'acteur id: type: string example: 12345678-1234-1234-1234-123456789012 description: Identifiant unique du type d'acteur required: - code - label - id AppPermsDto: type: object properties: actorTypeId: type: string AppRead: type: boolean AppWrite: type: boolean AppWritePriority: type: boolean ActorRead: type: boolean ActorWrite: type: boolean ComplianceRead: type: boolean ComplianceWrite: type: boolean HostingRead: type: boolean HostingWrite: type: boolean MetadataRead: type: boolean DataRead: type: boolean DataWrite: type: boolean TechnologyRead: type: boolean TechnologyWrite: type: boolean RelationRead: type: boolean RelationWrite: type: boolean LinkRead: type: boolean LinkWrite: type: boolean ReportRead: type: boolean ReportPost: type: boolean ReportManage: type: boolean required: - actorTypeId - AppRead - AppWrite - AppWritePriority - ActorRead - ActorWrite - ComplianceRead - ComplianceWrite - HostingRead - HostingWrite - MetadataRead - DataRead - DataWrite - TechnologyRead - TechnologyWrite - RelationRead - RelationWrite - LinkRead - LinkWrite - ReportRead - ReportPost - ReportManage PaginatedActorTypeDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/ActorTypeDto" total: type: number description: Total number of items example: 100 required: - results - total PatchActorTypeDto: type: object properties: code: type: string example: MOA description: Code du type d'acteur label: type: string example: Maîtrise d’Ouvrage description: Libellé du type d'acteur description: type: string example: La MOA définit les besoins du projet, supervise sa mise en œuvre et veille à ce que les objectifs métiers soient atteints. description: description du type d'acteur CreateComplianceDto: type: object properties: dima_duration_hours: type: number enum: &a39 - 96 - 72 - 48 - 24 - 4 - 1 - 0 example: 4 description: DIMA duration in hours (one of 96, 72, 48, 24, 4, 1, 0) dima_is_hno: type: boolean example: true description: DIMA HNO (Heure non ouvrée) dima_business_impact: type: string example: Perte de revenu, impact client description: DIMA business impact of interruption dima_recovery_plan: type: boolean example: true description: DIMA recovery plan exists dima_recovery_solutions: type: string example: Bascule sur serveur de secours description: DIMA recovery solutions dima_last_test_date: type: string example: 2023-01-01 description: DIMA last test date dima_test_result: enum: &a40 - OK - KO type: string description: DIMA test result dima_recovery_manager: type: string example: Jean Dupont description: DIMA recovery manager pdma_duration_hours: type: number enum: &a41 - 48 - 24 - 2 - 0 example: 24 description: PDMA duration in hours (one of 48, 24, 2, 0) pdma_data_types: type: string example: Transactions, logs, fichiers utilisateur description: PDMA data types concerned pdma_backup_frequency: type: string example: Toutes les heures description: PDMA backup frequency pdma_backup_method: type: string example: Snapshot, backup incrémental description: PDMA backup method used pdma_backup_storage: enum: &a42 - S3 - LOCAL - EXTERNE type: string description: PDMA backup storage pdma_last_test_date: type: string example: 2023-01-01 description: PDMA last test date pdma_test_result: enum: &a43 - OK - KO type: string description: PDMA test result pdma_restoration_manager: type: string example: Marie Martin description: PDMA restoration manager homologation_status: enum: &a44 - homologuee - en_cours - dispensee - non_realisee - a_mettre_en_place type: string description: Homologation status homologation_date_end: type: string example: 2023-01-01 description: Homologation date end homologation_rssi_id: type: string example: uuid-of-rssi-actor description: Homologation RSSI actor ID dsfr_implemented: type: boolean example: true description: DSFR implemented dsfr_version: type: string example: 1.9.0 description: DSFR version used rgpd_has_aipd: type: boolean example: true description: RGPD has AIPD rgpd_dpo_name: type: string example: Pierre Durand description: RGPD DPO name eco_index_target_url: type: string example: https://service.example.com description: EcoIndex target URL used for scan ComplianceDto: type: object properties: dima_duration_hours: type: number enum: *a39 example: 4 description: DIMA duration in hours (one of 96, 72, 48, 24, 4, 1, 0) dima_is_hno: type: boolean example: true description: DIMA HNO (Heure non ouvrée) dima_business_impact: type: string example: Perte de revenu, impact client description: DIMA business impact of interruption dima_recovery_plan: type: boolean example: true description: DIMA recovery plan exists dima_recovery_solutions: type: string example: Bascule sur serveur de secours description: DIMA recovery solutions dima_last_test_date: type: string example: 2023-01-01 description: DIMA last test date dima_test_result: enum: *a40 type: string description: DIMA test result dima_recovery_manager: type: string example: Jean Dupont description: DIMA recovery manager pdma_duration_hours: type: number enum: *a41 example: 24 description: PDMA duration in hours (one of 48, 24, 2, 0) pdma_data_types: type: string example: Transactions, logs, fichiers utilisateur description: PDMA data types concerned pdma_backup_frequency: type: string example: Toutes les heures description: PDMA backup frequency pdma_backup_method: type: string example: Snapshot, backup incrémental description: PDMA backup method used pdma_backup_storage: enum: *a42 type: string description: PDMA backup storage pdma_last_test_date: type: string example: 2023-01-01 description: PDMA last test date pdma_test_result: enum: *a43 type: string description: PDMA test result pdma_restoration_manager: type: string example: Marie Martin description: PDMA restoration manager homologation_status: enum: *a44 type: string description: Homologation status homologation_date_end: type: string example: 2023-01-01 description: Homologation date end homologation_rssi_id: type: string example: uuid-of-rssi-actor description: Homologation RSSI actor ID dsfr_implemented: type: boolean example: true description: DSFR implemented dsfr_version: type: string example: 1.9.0 description: DSFR version used rgpd_has_aipd: type: boolean example: true description: RGPD has AIPD rgpd_dpo_name: type: string example: Pierre Durand description: RGPD DPO name eco_index_target_url: type: string example: https://service.example.com description: EcoIndex target URL used for scan id: type: string example: 12345678-1234-1234-1234-123456789012 description: Unique identifier of the compliance record eco_index_score: type: number example: 72.5 description: EcoIndex score (0-100) eco_index_ges: type: number example: 1.77 description: EcoIndex greenhouse gas emissions (gCO2e) eco_index_water: type: number example: 2.65 description: EcoIndex water consumption (cl) eco_index_last_calculated_at: type: string format: date-time example: 2026-03-20T10:30:00.000Z description: EcoIndex last calculation datetime required: - id UpdateComplianceDto: type: object properties: dima_duration_hours: type: number enum: *a39 example: 4 description: DIMA duration in hours (one of 96, 72, 48, 24, 4, 1, 0) dima_is_hno: type: boolean example: true description: DIMA HNO (Heure non ouvrée) dima_business_impact: type: string example: Perte de revenu, impact client description: DIMA business impact of interruption dima_recovery_plan: type: boolean example: true description: DIMA recovery plan exists dima_recovery_solutions: type: string example: Bascule sur serveur de secours description: DIMA recovery solutions dima_last_test_date: type: string example: 2023-01-01 description: DIMA last test date dima_test_result: enum: *a40 type: string description: DIMA test result dima_recovery_manager: type: string example: Jean Dupont description: DIMA recovery manager pdma_duration_hours: type: number enum: *a41 example: 24 description: PDMA duration in hours (one of 48, 24, 2, 0) pdma_data_types: type: string example: Transactions, logs, fichiers utilisateur description: PDMA data types concerned pdma_backup_frequency: type: string example: Toutes les heures description: PDMA backup frequency pdma_backup_method: type: string example: Snapshot, backup incrémental description: PDMA backup method used pdma_backup_storage: enum: *a42 type: string description: PDMA backup storage pdma_last_test_date: type: string example: 2023-01-01 description: PDMA last test date pdma_test_result: enum: *a43 type: string description: PDMA test result pdma_restoration_manager: type: string example: Marie Martin description: PDMA restoration manager homologation_status: enum: *a44 type: string description: Homologation status homologation_date_end: type: string example: 2023-01-01 description: Homologation date end homologation_rssi_id: type: string example: uuid-of-rssi-actor description: Homologation RSSI actor ID dsfr_implemented: type: boolean example: true description: DSFR implemented dsfr_version: type: string example: 1.9.0 description: DSFR version used rgpd_has_aipd: type: boolean example: true description: RGPD has AIPD rgpd_dpo_name: type: string example: Pierre Durand description: RGPD DPO name eco_index_target_url: type: string example: https://service.example.com description: EcoIndex target URL used for scan ImportReportSummaryDto: type: object properties: processedSheets: description: Onglets effectivement traités type: array items: type: string ignoredSheets: description: Onglets ignorés (absents ou non reconnus) type: array items: type: string created: type: number description: Nombre d'enregistrements créés updated: type: number description: Nombre d'enregistrements mis à jour errors: type: number description: Nombre de lignes en erreur required: - processedSheets - ignoredSheets - created - updated - errors ImportReportEntryDto: type: object properties: sheet: type: string description: Nom de l'onglet traité example: Acteurs row: type: number description: Numéro de la ligne dans l'onglet (1 = en-tête) example: 4 status: enum: - created - updated - error type: string description: Résultat du traitement de la ligne example: updated identifier: type: string description: Identifiant lisible de l'enregistrement concerné example: "MOA : jean.dupont@example.com" message: type: string description: Détail (motif d'erreur ou information) example: Type d'acteur introuvable pour le rôle « XYZ » required: - sheet - row - status ImportReportDto: type: object properties: summary: $ref: "#/components/schemas/ImportReportSummaryDto" entries: type: array items: $ref: "#/components/schemas/ImportReportEntryDto" logs: description: Journal d'exécution (erreurs au niveau onglet, etc.) type: array items: type: string required: - summary - entries - logs CreateHostingDto: type: object properties: label: type: string hostingOptionId: type: string description: ID of the hosting option applicationId: type: string format: uuid isActive: type: boolean nullable: true description: Indicates whether the hosting is active, passif or not specified (null). required: - applicationId - isActive HostingOptionDto: type: object properties: site: type: string description: Site name (géographique) example: CER(RENNES) platform: type: string description: Platform name example: PHYSIQUE provider: type: string description: Provider name example: DTNUM building: type: string description: Building (optional) example: B15 room: type: string description: Room (optional) example: IT2 id: type: string description: Unique identifier of the hosting option example: 12345678-1234-1234-1234-123456789012 required: - site - platform - provider - id HostingDto: type: object properties: label: type: string hostingOptionId: type: string description: ID of the hosting option applicationId: type: string format: uuid isActive: type: boolean nullable: true description: Indicates whether the hosting is active, passif or not specified (null). id: type: string hostingOption: $ref: "#/components/schemas/HostingOptionDto" required: - applicationId - isActive - id - hostingOption UpdateHostingDto: type: object properties: label: type: string hostingOptionId: type: string description: ID of the hosting option applicationId: type: string format: uuid isActive: type: boolean nullable: true description: Indicates whether the hosting is active, passif or not specified (null). CreateHostingOptionDto: type: object properties: site: type: string description: Site name (géographique) example: CER(RENNES) platform: type: string description: Platform name example: PHYSIQUE provider: type: string description: Provider name example: DTNUM building: type: string description: Building (optional) example: B15 room: type: string description: Room (optional) example: IT2 required: - site - platform - provider PaginatedHostingOptionDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/HostingOptionDto" total: type: number description: Total number of items example: 100 required: - results - total UpdateHostingOptionDto: type: object properties: site: type: string description: Site name (géographique) example: CER(RENNES) platform: type: string description: Platform name example: PHYSIQUE provider: type: string description: Provider name example: DTNUM building: type: string description: Building (optional) example: B15 room: type: string description: Room (optional) example: IT2 required: - site - platform - provider CreateLabelDto: type: object properties: labelSourceId: type: string example: 5708d232-8338-4abf-8f38-8370acc89497 description: ID de la source du label value: type: string example: short-app-name description: Value of the label required: - value LabelDto: type: object properties: labelSourceId: type: string example: 5708d232-8338-4abf-8f38-8370acc89497 description: ID de la source du label value: type: string example: short-app-name description: Value of the label id: type: string example: 5708d232-8338-4abf-8f38-8370acc89497 description: ID of the label applicationId: type: string example: 5708d232-8338-4abf-8f38-8370acc89497 description: ID of the application to which the label belongs required: - value - id - applicationId CreateLabelSourceDto: type: object properties: source: type: string description: Source name example: CODE_PAI required: - source LabelSourceDto: type: object properties: source: type: string description: Source name example: CODE_PAI id: type: string description: Unique identifier of the label source example: 5708d232-8338-4abf-8f38-8370acc89497 required: - source - id PaginatedLabelSourceDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/LabelSourceDto" total: type: number description: Total number of items example: 100 required: - results - total UpdateLabelSourceDto: type: object properties: source: type: string description: Source name example: CODE_PAI required: - source CreateMditCampaignDto: type: object properties: year: type: number minimum: 2000 maximum: 2100 description: Année de la campagne (millésime) example: 2027 label: type: string description: Libellé optionnel de la campagne example: Campagne dette IT 2027 isActive: type: boolean description: Campagne active (présentée dans le sélecteur) example: true default: true required: - year MditCampaignDto: type: object properties: year: type: number minimum: 2000 maximum: 2100 description: Année de la campagne (millésime) example: 2027 label: type: string description: Libellé optionnel de la campagne example: Campagne dette IT 2027 isActive: type: boolean description: Campagne active (présentée dans le sélecteur) example: true default: true id: type: string description: Identifiant unique de la campagne example: 5708d232-8338-4abf-8f38-8370acc89497 required: - year - id PaginatedMditCampaignDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/MditCampaignDto" total: type: number description: Total number of items example: 100 required: - results - total UpdateMditCampaignDto: type: object properties: year: type: number minimum: 2000 maximum: 2100 description: Année de la campagne (millésime) example: 2027 label: type: string description: Libellé optionnel de la campagne example: Campagne dette IT 2027 isActive: type: boolean description: Campagne active (présentée dans le sélecteur) example: true default: true ExternalRessourceType: type: string enum: - documentation - supervision - service - audience_metrics - main_service description: Type of the external resource CreateLinkDto: type: object properties: link: type: string format: uri description: The URL of the link type: description: Type of the external resource allOf: - $ref: "#/components/schemas/ExternalRessourceType" description: type: string description: Optional description of the link required: - link - type LinkDto: type: object properties: id: type: string description: Unique identifier of the link link: type: string description: The URL of the link type: enum: - documentation - supervision - service - audience_metrics - main_service type: string description: Type of the external resource description: type: string description: Description of the link required: - id - link - type PaginatedLinkDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/LinkDto" total: type: number description: Total number of items example: 100 required: - results - total UpdateLinkDto: type: object properties: link: type: string format: uri description: The URL of the link type: description: Type of the external resource allOf: - $ref: "#/components/schemas/ExternalRessourceType" description: type: string description: Optional description of the link CreateTechnicalDebtInfoDto: type: object properties: technicalMaturity: type: number minimum: 1 maximum: 5 example: 3.2 description: Technical maturity score (1-5). Omit / null = not rated. businessMaturity: type: number minimum: 1 maximum: 5 example: 4.5 description: Business maturity score (1-5). Omit / null = not rated. costContainment: type: number minimum: 1 maximum: 5 example: 2.75 description: Cost containment score (1-5). Omit / null = not rated. millesime: type: number minimum: 2000 maximum: 2100 example: 2026 description: Millésime (année) de la campagne dette IT. Par défaut, l'année courante. PaginatedTechnicalDebtInfoDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/TechnicalDebtInfoDto" total: type: number description: Total number of items example: 100 required: - results - total TechnicalDebtPointDto: type: object properties: id: type: string label: type: string shortName: type: string nullable: true technicalDebtInfo: nullable: true description: Technical debt information for the application type: object allOf: - $ref: "#/components/schemas/CreateTechnicalDebtInfoDto" required: - id - label - shortName RgaaComplianceErrorResponseDto: type: object properties: message: type: string example: Une conformité RGAA existe déjà pour cette application description: Message d'erreur en cas de conflit lors de la création d'une conformité RGAA required: - message RgaaComplianceDto: type: object properties: audit_date: type: string nullable: true example: 2024-01-15 description: Date de l'audit RGAA service_url: type: string nullable: true example: https://service.example.gouv.fr description: URL du service web audité accessibility_url: type: string nullable: true example: https://service.example.gouv.fr/accessibilite description: URL de la déclaration d'accessibilité score_percentage: type: number nullable: true minimum: 0 maximum: 100 example: 85.5 description: Score de conformité RGAA en pourcentage (0-100) id: type: string example: 12345678-1234-1234-1234-123456789012 description: Identifiant unique de la conformité RGAA applicationId: type: string example: 12345678-1234-1234-1234-123456789012 description: Identifiant de l'application required: - id - applicationId CreateRgaaComplianceDto: type: object properties: audit_date: type: string nullable: true example: 2024-01-15 description: Date de l'audit RGAA service_url: type: string nullable: true example: https://service.example.gouv.fr description: URL du service web audité accessibility_url: type: string nullable: true example: https://service.example.gouv.fr/accessibilite description: URL de la déclaration d'accessibilité score_percentage: type: number nullable: true minimum: 0 maximum: 100 example: 85.5 description: Score de conformité RGAA en pourcentage (0-100) TechnologyErrorResponseDto: type: object properties: message: type: string example: Cette technologie est déjà renseignée pour cette application description: Message d'erreur en cas de conflit required: - message TechnologyDto: type: object properties: technology: type: string example: Base de données description: Famille / catégorie de technologie product: type: string example: PostgreSQL description: Produit concret (sert à résoudre la fin de vie) version: type: string nullable: true maxLength: 50 example: "20.11" description: Version utilisée docUrl: type: string nullable: true maxLength: 2048 format: uri example: https://www.postgresql.org/docs/ description: Lien documentaire (URL) associé au produit id: type: string example: 12345678-1234-1234-1234-123456789012 description: Identifiant unique de la technologie applicationId: type: string example: 12345678-1234-1234-1234-123456789012 description: Identifiant de l'application eolDate: type: string nullable: true format: date-time example: 2026-04-30 description: Date de fin de support/vie de la version (source endoflife.date) eolCheckedAt: type: string nullable: true format: date-time example: 2026-07-03T10:00:00.000Z description: Date de dernière vérification du statut de fin de vie eolProduct: type: string nullable: true example: postgresql description: Slug produit endoflife.date résolu (null + eolCheckedAt renseigné = produit non suivi par endoflife.date) eoasDate: type: string nullable: true format: date-time example: 2026-10-20 description: Date de fin de support actif de la version (source endoflife.date) latestVersion: type: string nullable: true example: 20.19.5 description: Dernière version publiée du cycle correspondant (source endoflife.date) required: - technology - product - id - applicationId EolProductDto: type: object properties: name: type: string example: nodejs description: Slug produit endoflife.date label: type: string nullable: true example: Node.js description: Libellé d'affichage du produit category: type: string nullable: true example: database description: Catégorie du produit aliases: example: - node description: Alias reconnus pour ce produit type: array items: type: string required: - name - aliases CreateTechnologyDto: type: object properties: technology: type: string example: Base de données description: Famille / catégorie de technologie product: type: string example: PostgreSQL description: Produit concret (sert à résoudre la fin de vie) version: type: string nullable: true maxLength: 50 example: "20.11" description: Version utilisée docUrl: type: string nullable: true maxLength: 2048 format: uri example: https://www.postgresql.org/docs/ description: Lien documentaire (URL) associé au produit required: - technology - product GetIqAvgGroupedDto: type: object properties: label: type: string example: 2025-07 moyenne: type: number example: 78.2 min: type: number example: 62 max: type: number example: 93 count: type: number example: 14 required: - label - moyenne - min - max - count Notifier: type: object properties: id: type: string email: type: string required: - id - email ReportStatus: type: string enum: - in_pending - in_progress - done description: Le statut du signalement ReportDto: type: object properties: notifier: description: The user who reported the issue allOf: - $ref: "#/components/schemas/Notifier" status: description: Le statut du signalement allOf: - $ref: "#/components/schemas/ReportStatus" createdAt: type: string description: Date de création de la metadata example: 2023-10-01T12:00:00Z id: type: string applicationId: type: string nullable: true application: nullable: true type: object allOf: - $ref: "#/components/schemas/ApplicationDto" notifierId: type: string description: type: string updatedAt: format: date-time type: string required: - notifier - status - createdAt - id - applicationId - application - notifierId - description - updatedAt PaginatedReportDto: type: object properties: results: description: Array of results type: array items: $ref: "#/components/schemas/ReportDto" total: type: number description: Total number of items example: 100 required: - results - total CreateReportRequestDto: type: object properties: applicationId: type: string description: type: string notes: type: string default: "" required: - description UpdateReportDto: type: object properties: description: type: string description: La description du signalement status: enum: - in_pending - in_progress - done type: string description: Le statut du signalement notes: type: string description: La note du signalement HealthCheckDto: type: object properties: maintenance: type: boolean description: Indique si l'API est en mode maintenance lecture seule example: true version: type: string description: Version du backend example: v1.86.0 etat: enum: &a45 - OK - KO type: string description: État de la connexion à la base de données example: OK required: - maintenance - version - etat HealthCheckErrorDto: type: object properties: maintenance: type: boolean description: Indique si l'API est en mode maintenance lecture seule example: true version: type: string description: Version du backend example: v1.86.0 etat: enum: *a45 type: string description: État de la connexion à la base de données example: OK message: type: string description: Détail de l'indisponibilité example: La base de données est indisponible required: - maintenance - version - etat - message security: - oauth2: [] - api_key: []