Aller au contenu

Circuits de visa et d'avis

Ces routes manipulent les circuits de visa et d'avis d'un courrier. Elles nécessitent une authentification REST. Les contrôleurs vérifient l'existence du courrier et, selon l'action, son appartenance au périmètre de l'utilisateur.

Le choix du parapheur interne est décrit dans Parapheur interne. Seule la modification d'un circuit de type visaCircuit a un effet conditionnel confirmé.

Lister les modèles de circuit disponibles

GET /rest/availableCircuits?circuit=visa
Paramètre Emplacement Type Obligatoire Description
circuit query string string non vide oui opinion sélectionne les modèles d'avis ; toute autre valeur sélectionne les modèles de visa.

La réponse 200 OK contient la propriété circuits. Chaque élément expose les propriétés confirmées suivantes :

Propriété Type Description
id integer Identifiant du modèle
type string Type de circuit
entityId integer Entité propriétaire
title string Libellé
description string Description
private boolean Indique si le modèle est privé

Une query string absente ou invalide produit une réponse 400 Bad Request.

Consulter le circuit de visa d'un courrier

GET /rest/resources/{resId}/visaCircuit
Paramètre Emplacement Type Description
resId chemin integer Identifiant du courrier

La réponse 200 OK contient circuit, la liste ordonnée des étapes, et hasHistory, qui indique l'existence d'un historique du circuit. Une étape contient notamment son identifiant, son ordre, son rôle, son état de visa et l'utilisateur ou l'entité désignée.

Consulter le circuit d'avis d'un courrier

GET /rest/resources/{resId}/opinionCircuit

Le paramètre resId est l'identifiant entier du courrier. La réponse 200 OK contient uniquement la propriété circuit. Contrairement à la route du circuit de visa, le contrôleur ne retourne pas hasHistory.

Remplacer un circuit

PUT /rest/circuits/{type}
Content-Type: application/json
Paramètre Emplacement Type Description
type chemin string visaCircuit ou opinionCircuit
resId body integer Identifiant du courrier
workflow body array Étapes du nouveau circuit

Exemple minimal :

{
  "resId": 42,
  "workflow": [
    {
      "item_id": 17,
      "item_type": "user_id",
      "process_comment": "",
      "signatory": true
    }
  ]
}

L'objet exact d'une étape dépend du type de circuit et reprend les propriétés validées par le contrôleur de liste de diffusion. La réponse de succès est 204 No Content.

La mise à jour est transactionnelle : le circuit est remplacé dans une transaction de base de données. Pour un visaCircuit, lorsque config.newInternalParaph vaut true, le workflow est également synchronisé avec le parapheur électronique avant la validation de la transaction. Un problème retourné par cette synchronisation annule la transaction et est propagé au client. Aucun appel équivalent n'est effectué pour opinionCircuit.

config.newInternalParaph visaCircuit opinionCircuit
false ou absent Mise à jour historique du circuit Mise à jour historique du circuit
true Mise à jour puis synchronisation avec le parapheur électronique Mise à jour sans synchronisation démontrée

Les contrôles invalides produisent une réponse 400 Bad Request; une absence de droit ou un courrier hors périmètre produit une réponse 403 Forbidden.

Supprimer un circuit

DELETE /rest/resources/{resId}/circuits/{type}
Paramètre Emplacement Type Description
resId chemin integer Identifiant du courrier
type chemin string Type de circuit à supprimer

Le contrôleur vérifie le courrier et le périmètre de l'utilisateur, supprime les étapes du type demandé et trace l'opération dans l'historique. La réponse de succès est 204 No Content.