Aller au contenu

Listes de diffusion

Récupération de la liste de diffusion d'un courrier

Route

GET /rest/resources/{resId}/listInstance

Paramètres

Valeur Type Obligatoire Description
resId int Oui Identifiant de la ressource

Retour

code HTTP type description
200 array Informations de liste de diffusion trouvée pour la ressource
403 array Ressource hors périmètre de l'utilisateur

Données

Valeur Type Description
listInstance array Tableau contenant les entrées de la liste de diffusion principale du courrier
hasHistory bool Un historique de la liste de diffusion existe-t-il, ou pas

Données détaillées du tableau

Valeur Type Description
listinstance_id int Identifiant technique de l'entrée de la liste de diffusion
res_id int Identifiant de la ressource
sequence int Numéro de séquence (ordre) dans la liste de diffusion pour un rôle donné
item_id string Identifiant de l'utilisateur ou de l'entité
item_type string Valeur pouvant être user_id ou entity_id, selon que l'item_id envoyé est un utilisateur ou une entité
item_mode string rôle dans la liste de diffusion (dest / cc / avis)
added_by_user int Identifiant technique de l'utilisateur ayant créé la liste de diffusion
viewed bool Indique si le document a été vu par l'utilisateur indiqué
difflist_type string Type de liste de diffusion ("entity_id" pour la liste de diffusion principale, "VISA_CIRCUIT" pour le circuit de visa, "AVIS_CIRCUIT" pour le circuit d'avis)
process_date date Date de traitement (utile pour les circuits de visa/avis)
process_comment string Consigne pour le circuit de visa
signatory bool Indique si l'utilisateur a signé la ressource
requested_signature bool signature demandée ou non
delegate ?int Identifiant de l'utilisateur délégataire de la signature
status string Statut de l'utilisateur
itemSerialId int Identifiant technique de l'utilisateur ou de l'entité
descriptionToDisplay string Si l'entrée correspond à un utilisateur, affichage ici de son entité primaire
{
    "listInstance": [
        {
            "listinstance_id": 53,
            "res_id": 124,
            "sequence": 0,
            "item_id": "bbain",
            "item_type": "user_id",
            "item_mode": "dest",
            "added_by_user": 19,
            "viewed": 0,
            "difflist_type": "entity_id",
            "process_date": null,
            "process_comment": null,
            "signatory": false,
            "requested_signature": false,
            "delegate": null,
            "status": "OK",
            "itemSerialId": 19,
            "labelToDisplay": "Barbara BAIN",
            "descriptionToDisplay": "Pôle Jeunesse et Sport"
        },
        {
            "listinstance_id": 54,
            "res_id": 124,
            "sequence": 0,
            "item_id": "cclavier",
            "item_type": "user_id",
            "item_mode": "cc",
            "added_by_user": 19,
            "viewed": 0,
            "difflist_type": "entity_id",
            "process_date": null,
            "process_comment": null,
            "signatory": false,
            "requested_signature": false,
            "delegate": null,
            "status": "OK",
            "itemSerialId": 25,
            "labelToDisplay": "Christian CLAVIER",
            "descriptionToDisplay": "Pôle Jeunesse et Sport"
        }
    ],
    "hasHistory": false
}

Récupération du circuit de visa d'une ressource

Route

GET /rest/resources/{resId}/visaCircuit

Paramètres

Valeur Type Obligatoire Description
resId int Oui Identifiant de la ressource

Retour

code HTTP type description
200 array Informations de liste de diffusion trouvée pour la ressource
403 array Ressource hors périmètre de l'utilisateur

Données

Valeur Type Description
circuit array Tableau contenant les entrées du circuit de visa du courrier
hasHistory bool Un historique de la liste de diffusion existe-t-il, ou pas

Données détaillées du tableau

Valeur Type Description
listinstance_id int Identifiant technique de l'entrée de la liste de diffusion
sequence int Numéro de séquence (ordre) dans la liste de diffusion pour un rôle donné
item_id int Identifiant de l'utilisateur
item_type string Toujours "user"
item_firstname string Prénom de l'utilisateur
item_lastname string Nom de l'utilisateur
viewed bool Indique si le document a été vu par l'utilisateur indiqué
process_date date Date de traitement (utile pour les circuits de visa/avis)
process_comment string Consigne pour le circuit de visa
signatory bool Indique si l'utilisateur a signé la ressource
requested_signature bool signature demandée ou non
delegate ?int Identifiant de l'utilisateur délégataire de la signature
item_entity string Libellé de l'entité de l'utilisateur
isValid bool Indique si l'utilisateur existe et qu'il n'a ni les statuts SPD ou DEL
status string Statut de l'utilisateur
externalId int Identifiant technique de l'utilisateur côté MP-API en cas d'utilisation du nouveau parapheur interne
labelToDisplay string Affichage de l'utilisateur
delegatedBy string Affichage de l'utilisateur initial en cas de délégation
hasPrivilege bool Indique si l'utilisateur a le privilège pour viser ou signer
{
    "circuit": [
        {
            "listinstance_id": 56,
            "sequence": 0,
            "item_id": 18,
            "item_type": "user",
            "item_firstname": "Denis",
            "item_lastname": "DAULL",
            "viewed": 0,
            "process_date": null,
            "process_comment": null,
            "signatory": false,
            "requested_signature": false,
            "delegate": null,
            "item_entity": "Secrétariat Général",
            "isValid": true,
            "status": "OK",
            "externalId": 21,
            "labelToDisplay": "Denis DAULL",
            "delegatedBy": null,
            "hasPrivilege": true
        },
        {
            "listinstance_id": 57,
            "sequence": 1,
            "item_id": 10,
            "item_type": "user",
            "item_firstname": "Patricia",
            "item_lastname": "PETIT",
            "viewed": 0,
            "process_date": null,
            "process_comment": null,
            "signatory": false,
            "requested_signature": true,
            "delegate": null,
            "item_entity": "Ville de Maarch-les-Bains",
            "isValid": true,
            "status": "OK",
            "externalId": 10,
            "labelToDisplay": "Patricia PETIT",
            "delegatedBy": null,
            "hasPrivilege": true
        }
    ],
    "hasHistory": false
}

Récupération du circuit d'avis (séquentiel) d'une ressource

Route

GET /rest/resources/{resId}/opinionCircuit

Paramètres

Valeur Type Obligatoire Description
resId int Oui Identifiant de la ressource

Retour

code HTTP type description
200 array Informations de liste de diffusion trouvée pour la ressource
403 array Ressource hors périmètre de l'utilisateur

Données

Valeur Type Description
circuit array Tableau contenant les entrées du circuit d'avis du courrier

Données détaillées du tableau

Valeur Type Description
listinstance_id int Identifiant technique de l'entrée de la liste de diffusion
sequence int Numéro de séquence (ordre) dans la liste de diffusion pour un rôle donné
item_id int Identifiant de l'utilisateur
item_type string Toujours "user"
item_firstname string Prénom de l'utilisateur
item_lastname string Nom de l'utilisateur
viewed bool Indique si le document a été vu par l'utilisateur indiqué
process_date date Date de traitement (utile pour les circuits de visa/avis)
process_comment string Consigne pour le circuit de visa
delegate ?int Identifiant de l'utilisateur délégataire de la signature
item_entity string Libellé de l'entité de l'utilisateur
isValid bool Indique si l'utilisateur existe et qu'il n'a ni les statuts SPD ou DEL
status string Statut de l'utilisateur
labelToDisplay string Affichage de l'utilisateur
delegatedBy string Affichage de l'utilisateur initial en cas de délégation
hasPrivilege bool Indique si l'utilisateur a le privilège pour donner un avis
{
    "circuit": [
        {
            "listinstance_id": 55,
            "sequence": 0,
            "item_id": 11,
            "item_type": "user",
            "item_firstname": "Amanda",
            "item_lastname": "ACKERMANN",
            "viewed": 0,
            "process_date": null,
            "process_comment": null,
            "delegate": null,
            "item_entity": "Pôle des Services Fonctionnels",
            "isValid": true,
            "status": "OK",
            "labelToDisplay": "Amanda ACKERMANN",
            "delegatedBy": null,
            "hasPrivilege": true
        }
    ]
}

Modification de la liste de diffusion d'un courrier

Route

PUT /rest/listinstances

Paramètres (body)

Valeur Type Obligatoire Description
resId int Oui Identifiant de la ressource
listInstances array Oui Tableau représentant la liste de diffusion (voir l'exemple ci-dessous)

⚠️ Les commentaires (//) sont ajoutés à titre explicatif uniquement. Ils ne font pas partie du JSON valide à envoyer.

[
    {
        "resId": 124, // resId du courrier
        "listInstances": [
            {
                "difflist_type": "entity_id", // Type de liste de diffusion
                "item_id": 19, // Identifiant de l'utilisateur ou de l'entité
                "item_mode": "dest", // Rôle
                "item_type": "user", // Type d'item (user ou entity)
                "process_date": null,
                "process_comment": null
            },
            {
                "difflist_type": "entity_id",
                "item_id": 6,
                "item_mode": "cc",
                "item_type": "entity",
                "process_date": null,
                "process_comment": null
            },
            {
                "difflist_type": "entity_id",
                "item_id": 25,
                "item_mode": "cc",
                "item_type": "user",
                "process_date": null,
                "process_comment": null
            }
        ]
    }
]

Retour

code HTTP type description exemple
204 / Aucun contenu
400 array Body non défini ou qui n'est pas un tableau ['errors' => 'Body is not set or not an array']
400 array Objet listInstances non défini ou qui n'est pas un tableau ['errors' => 'listInstances component is empty or not an object']
400 array Même utilisateur présent plusieurs fois avec le même rôle ['errors' => 'Some users/entities are present at least twice with the same role']
400 array ResId non défini ['errors' => 'resId is empty']
400 array Destinataire non renseigné ['errors' => 'Dest is missing']
400 array Utilisateur spécifié dans la liste de diffusion non trouvé ['errors' => 'User not found']
400 array Entité spécifiée dans la liste de diffusion non trouvée ou non active ['errors' => 'Entity not found or not active']
400 array item_type incorrect ['errors' => 'item_type does not exist']
403 array Privilèges manquants ['errors' => 'Privilege forbidden']
403 array Ressource hors périmètre de l'utilisateur ['errors' => 'Document out of perimeter']

Modification du circuit de visa d'un courrier

Route

PUT /rest/circuits/visaCircuit

Paramètres (body)

Valeur Type Obligatoire Description
resources array Oui Tableau des ressources à modifier (voir ci-dessous)

⚠️ Les commentaires (//) sont ajoutés à titre explicatif uniquement. Ils ne font pas partie du JSON valide à envoyer.

{
    "resources": [
        {
            "resId": 124, // resId de la ressource
            "listInstances": [
                {
                    "item_id": 17, // Identifiant technique de l'utilisateur
                    "item_type": "user", 
                    "sequence": 0, // Numéro de séquence dans le circuit de visa (ordre)
                    "currentRole": "visa", // Rôle dans le circuit (visa / sign)
                    "requested_signature": false, // Signature demandée ou non
                    "difflist_type": "VISA_CIRCUIT", // Type de liste de diffusion => VISA_CIRCUIT
                    "signaturePositions": [] // Position visuelle de signature 
                },
                {
                    "item_id": 10,
                    "item_type": "user",
                    "sequence": 1,
                    "currentRole": "sign",
                    "requested_signature": true,
                    "difflist_type": "VISA_CIRCUIT",
                    "signaturePositions": [
                        {
                            "sequence": 1, 
                            "page": 1, // Numéro de page
                            "positionX": 3.7, // Position X
                            "positionY": 84.44130127298445, // Position Y
                            "mainDocument": true, // true s'il s'agit du document principal, false s'il s'agit d'une PJ
                            "resId": 124, // Identifiant de la ressource
                            "isFromTemplate": false // true si les positions de signatures proviennent du modèle de document
                        }
                    ]
                }
            ]
        }
    ]
}

Retour

code HTTP type description exemple
204 / Aucun contenu
400 array Body non défini ou qui n'est pas un tableau ['errors' => 'Body is not set or not an array']
400 array ResId non défini ['errors' => 'Body resources[xxx] resId is empty']
400 array Liste de diffusion vide ['errors' => 'Body resources[xxx] listInstances is empty']
400 array Nouvel utilisateur ajouté avant des étapes déjà traitées ['errors' => 'Body resources[xxx] listInstances[yy] sequence is before already processed users']
400 array Utilisateur n'ayant pas des privilèges suffisants ['errors' => 'Body resources[xxx] listInstances[yy] item_id has not enough privileges']
403 array Ressource hors périmètre de l'utilisateur ['errors' => 'Document out of perimeter']

À noter que d'autres erreurs peuvent remonter selon le paramétrage du circuit de visa par l'administrateur fonctionnel (nombre minimum de viseurs, nombre maximum de signataires, signataire obligatoire, signataire obligatoire en fin de circuit).

Supprimer un circuit de visa ou d'avis

Route

DELETE /rest/resources/{resId}/circuits/{type}

Paramètres

Valeur Type Obligatoire Description
resId int Oui Identifiant de la ressource
type string Oui Type de circuit (visaCircuit ou opinionCircuit)

Retour

code HTTP type description exemple
204 / Aucun contenu
403 array Ressource hors périmètre de l'utilisateur ['errors' => 'Resource out of perimeter']