Aller au contenu

Utilisateurs

Cette page décrit les contrats de gestion des utilisateurs, de leurs affectations, profils, signatures et intégrations. La gestion des jetons est détaillée dans Jetons API.

Toutes les routes exigent une authentification, sauf les routes générales de récupération et d'initialisation de mot de passe documentées dans Authentification. Un compte WebService reste limité par sa liste authorizedApi lorsqu'elle est définie.

Le privilège admin_users est requis pour administrer les utilisateurs. Sauf pour un super administrateur, l’application vérifie que l’utilisateur ciblé appartient à une entité que l’administrateur est autorisé à gérer, ou qu’il n’est rattaché à aucune entité. Les opérations personnelles peuvent concerner le compte de l’utilisateur connecté lorsque la route API le permet. Les privilèges manage_personal_data et view_personal_data contrôlent respectivement la modification et la consultation des données personnelles.

Création d'un utilisateur

Route

POST /rest/users

Paramètres

Body

Valeur Type Obligatoire Valeur par défaut Description
userId string Oui Login
firstname string Oui Prénom
lastname string Oui Nom
initials string Non Initiales
mail string Oui Email
phone string Non Numéro de téléphone
mode string Non "standard" "standard" : Par défaut, "rest" : Utilisateur WebService (API), "root_invisible" : Compte super administrateur visible dans les workflows (Assignable) ou "root_visible" : Compte super administrateur non visible dans les workflows (Non Assignable)
Exemple
{
    "userId" : "utilisateur.exemple",
    "firstname" : "Utilisateur",
    "lastname" : "Exemple",
    "mail" : "utilisateur@example.invalid",
    "phone" : "+33000000000"
}

Retour

Code Http Type Description Exemple
200 array L'utilisateur a bien été créé {"id": 21}
400 array Un paramètre obligatoire est manquant {"errors": "Bad Request"}
403 array Droits insuffisants pour cette action {"errors": "Service forbidden"}

Modification d'un utilisateur

Route

PUT /rest/users/{id}

Le paramètre id de la route représente l'identifiant technique (users.id) de l'utilisateur à modifier.

Paramètres

Body

Valeur Type Obligatoire Valeur par défaut Description
firstname string Oui Prénom
lastname string Oui Nom
initials string Non Initiales
mail string Oui Email
phone string Non Numéro de téléphone
mode string Non "standard" "standard" : Par défaut, "rest" : Utilisateur WebService (API), "root_invisible" : Compte super administrateur visible dans les workflows (Assignable) ou "root_visible" : Compte super administrateur non visible dans les workflows (Non Assignable)
Exemple
{
    "firstname" : "Utilisateur",
    "lastname" : "Exemple",
    "mail" : "utilisateur@example.invalid",
    "phone" : "+33000000000"
}

Retour

Code Http Type Description Exemple
204 array L'utilisateur a bien été modifié
400 array Un paramètre obligatoire est manquant {"errors": "Bad Request"}
403 array Droits insuffisants pour cette action {"errors": "Service forbidden"}

Modification du mot de passe d'un utilisateur

Cette route permet à un utilisateur authentifié de modifier un mot de passe dont il connaît la valeur actuelle.

Route

PUT /rest/users/{id}/password

La requête doit contenir un jeton valide dans l'en-tête Authorization :

Authorization: Bearer <token>

Paramètres

URL

Valeur Type Obligatoire Description
id integer Oui Identifiant technique de l'utilisateur (users.id)

Body

Valeur Type Obligatoire Description
currentPassword string Oui Mot de passe actuel de l'utilisateur ciblé
newPassword string Oui Nouveau mot de passe respectant les règles de sécurité actives
reNewPassword string Oui Confirmation du nouveau mot de passe. La valeur doit être identique à newPassword

Les règles actives peuvent être récupérées avec la route GET /rest/passwordRules. Le nouveau mot de passe ne doit pas non plus appartenir à l'historique des mots de passe interdits à la réutilisation.

Exemple
{
  "currentPassword": "AncienMotDePasse-2025",
  "newPassword": "NouveauMotDePasse-2026",
  "reNewPassword": "NouveauMotDePasse-2026"
}

Règles d'accès

  • Un utilisateur standard ne peut modifier que son propre mot de passe.
  • Pour modifier le mot de passe d'un autre compte, le compte ciblé doit être un utilisateur WebService en mode rest. L'appelant doit disposer du privilège admin_users et le compte doit appartenir à son périmètre, sauf pour un super administrateur.
  • Le mot de passe actuel du compte ciblé reste obligatoire, y compris pour un compte WebService.

Retour

Code HTTP Type Description
200 object Le mot de passe a été modifié
400 object Identifiant ou paramètres invalides, confirmation différente, mot de passe non conforme ou déjà utilisé
401 object Authentification absente ou invalide, ou mot de passe actuel incorrect
403 object Droits insuffisants, utilisateur hors périmètre ou modification du compte ciblé interdite

Exemple

{
  "success": "success"
}

Après une réponse 200 :

  • le mot de passe est enregistré sous forme de hash
  • la date de dernière modification est mise à jour
  • le nouveau mot de passe est ajouté à l'historique
  • une entrée est ajoutée à l'historique de l'utilisateur.

Ajout d'un groupe

Route

POST /rest/users/{id}/groups

Le paramètre id de la route représente l'identifiant technique (users.id) de l'utilisateur à modifier.

Paramètres

Body

Valeur Type Obligatoire Valeur par défaut Description
groupId string Oui Identifiant du groupe à ajouter (usergroups.group_id)
Exemple
{
    "groupId" : "ELU"
}

Retour

Code Http Type Description Exemple
200 array La modification a bien été prise en compte
400 array Un paramètre obligatoire est manquant {"errors": "Bad Request"}
403 array Droits insuffisants pour cette action {"errors": "Service forbidden"}

Suppression d'un groupe

Route

DELETE /rest/users/{id}/groups/{groupId}

Le paramètre id de la route représente l'identifiant technique (users.id) de l'utilisateur à modifier. Le paramètre groupId représente l'identifiant (usergroups.group_id) du groupe à supprimer.

Retour

Code Http Type Description Exemple
200 array La modification a bien été prise en compte
400 array Un paramètre obligatoire est manquant {"errors": "Bad Request"}
403 array Droits insuffisants pour cette action {"errors": "Service forbidden"}

Ajout d'une entité

Route

POST /rest/users/{id}/entities

Le paramètre id de la route représente l'identifiant technique (users.id) de l'utilisateur à modifier.

Paramètres

Body

Valeur Type Obligatoire Valeur par défaut Description
entityId string Oui Identifiant (entities.entity_id) de l'entité à ajouter
Exemple
{
    "entityId" : "PJS"
}

Retour

Code Http Type Description Exemple
200 array La modification a bien été prise en compte
400 array Un paramètre obligatoire est manquant {"errors": "Bad Request"}
403 array Droits insuffisants pour cette action {"errors": "Service forbidden"}

Suppression d'une entité

Route

DELETE /rest/users/{id}/entities/{entityId}

Le paramètre id de la route représente l'identifiant technique (users.id) de l'utilisateur à modifier. Le paramètre entityId représente l'identifiant (entities.entity_id) de l'entité à supprimer.

Retour

Code Http Type Description Exemple
200 array La modification a bien été prise en compte
400 array Un paramètre obligatoire est manquant {"errors": "Bad Request"}
403 array Droits insuffisants pour cette action {"errors": "Service forbidden"}

Ajout d'un délégataire de signature

Route

PUT /rest/users/{id}/signatorySubstitute

Le paramètre id de la route représente l'identifiant technique (users.id) de l'utilisateur à modifier.

Paramètres

Body

Valeur Type Obligatoire Valeur par défaut Description
destUser integer Oui Identifiant (users.id) de l'utilisateur délégataire
Exemple
{
    "destUser" : 10
}

Retour

Code Http Type Description Exemple
200 array La modification a bien été prise en compte
400 array Un paramètre obligatoire est manquant {"errors": "Id is empty or not an integer"}

Suppression d'un délégataire de signature

Route

DELETE /rest/users/{id}/signatorySubstitute

Le paramètre id de la route représente l'identifiant technique (users.id) de l'utilisateur à modifier.

Paramètres

Body

Valeur Type Obligatoire Valeur par défaut Description
destUsers array Oui Tableau contenant le ou les identifiant(s) (users.id) de(s) l'utilisateur(s) délégataire(s) à supprimer
Exemple
{
    "destUsers" : [10, 19]
}

Retour

Code Http Type Description Exemple
204 array La modification a bien été prise en compte
400 array Un paramètre obligatoire est manquant {"errors": "Id is empty or not an integer"}

Liste des utilisateurs

Route

GET /rest/users

Retour

Code Http Type Description Exemple
200 array liste des utilisateurs
403 array Droits insuffisants pour cette action {"errors": "Service forbidden"}

Exemple

{
  "users": [
    {
      "id": 42,
      "user_id": "utilisateur.exemple",
      "firstname": "Utilisateur",
      "lastname": "Exemple",
      "status": "OK",
      "mail": "utilisateur@example.invalid",
      "mode": "standard"
    }
  ],
  "quota": []
}
Description des statuts utilisateur :
  • OK : Actif
  • ABS : Absent
  • SPD : Suspendu

Export des utilisateurs

Cette route génère un fichier CSV contenant les utilisateurs compris dans le périmètre d'administration de l'appelant.

Route

PUT /rest/users/export

L'appelant doit disposer du privilège admin_users. Un super administrateur peut exporter tous les utilisateurs non supprimés. Pour les autres administrateurs, l'export est limité à leur périmètre d'entités et aux utilisateurs sans entité.

Paramètres

Body

Valeur Type Obligatoire Valeur par défaut Description
data array Non Champs par défaut Colonnes à exporter
data[].label string Oui si data est renseigné Libellé utilisé dans l'en-tête CSV
data[].value string Oui si data est renseigné Identifiant du champ à exporter
delimiter string Non , Séparateur CSV : ,, ; ou TAB

Les champs exportables sont :

Valeur Description
id Identifiant technique
userId Login
firstname Prénom
lastname Nom
phone Numéro de téléphone
mail Adresse électronique
status Statut du compte
accountType Mode du compte
groups Groupes associés
entities Entités associées
baskets Bannettes disponibles
redirectedBaskets Bannettes redirigées vers un autre utilisateur
assignedBaskets Bannettes attribuées par un autre utilisateur

Sans propriété data, les champs id, userId, firstname, lastname, phone et mail sont exportés. Le champ phone est retiré si l'appelant ne dispose pas du privilège view_personal_data.

Exemple
{
  "delimiter": ";",
  "data": [
    {
      "label": "Login",
      "value": "userId"
    },
    {
      "label": "Nom",
      "value": "lastname"
    },
    {
      "label": "Statut",
      "value": "status"
    }
  ]
}

Retour

Code HTTP Type Description
200 fichier CSV Fichier export_maarch.csv
400 object Aucun champ autorisé n'a été sélectionné
403 object L'appelant ne dispose pas du privilège admin_users

La réponse 200 utilise le type de contenu application/vnd.ms-excel et l'en-tête Content-Disposition: attachment; filename=export_maarch.csv.


Import des utilisateurs

Cette route crée ou met à jour plusieurs utilisateurs. Chaque entrée est traitée indépendamment.

Route

PUT /rest/users/import

L'appelant doit disposer du privilège admin_users. Hors super administrateur, la modification est limitée aux utilisateurs de son périmètre et aux utilisateurs sans entité.

Paramètres

Body

Valeur Type Obligatoire Description
users array Oui Utilisateurs à créer ou à mettre à jour
users[].id integer Non Identifiant technique. Son absence déclenche une création
users[].user_id string Oui à la création Login du nouvel utilisateur
users[].firstname string Oui à la création Prénom, limité à 255 caractères
users[].lastname string Oui à la création Nom, limité à 255 caractères
users[].mail string Oui à la création Adresse électronique valide, limitée à 255 caractères
users[].phone string Non Numéro de téléphone, limité à 32 caractères

Lors d'une mise à jour, seuls les champs non vides parmi firstname, lastname, mail et phone sont modifiés. La modification du téléphone nécessite le privilège manage_personal_data.

Si le login d'un nouvel utilisateur correspond à un compte au statut DEL, le compte est réactivé avec le statut OK. Si le compte existe avec un autre statut, l'entrée est rejetée.

Exemple
{
  "users": [
    {
      "user_id": "utilisateur.exemple",
      "firstname": "Utilisateur",
      "lastname": "Exemple",
      "mail": "utilisateur@example.invalid",
      "phone": "+33000000000"
    },
    {
      "id": 42,
      "mail": "compte.secondaire@example.invalid"
    }
  ]
}

Retour

Code HTTP Type Description
200 object Résultat détaillé de l'import
400 object La propriété users est absente ou n'est pas un tableau
403 object L'appelant ne dispose pas du privilège admin_users

Une erreur sur une entrée n'interrompt pas le traitement des autres entrées. Les index présents dans warnings.details et errors.details correspondent aux index du tableau users.

Exemple

{
  "success": 1,
  "warnings": {
    "count": 0,
    "details": []
  },
  "errors": {
    "count": 1,
    "details": [
      {
        "error": "Argument mail is not correct for user 1",
        "index": 1,
        "lang": "argumentMailNotCorrect"
      }
    ]
  }
}

Consultation d'un utilisateur

Route

GET /rest/users/{id}

Paramètres

URL

Valeur Type Obligatoire Description
id integer Oui Identifiant technique de l'utilisateur (users.id)

Un utilisateur peut consulter son propre compte. La consultation d'un autre compte nécessite le privilège admin_users. Seul le super administrateur peut consulter un compte en mode root_invisible.

Retour

Code HTTP Type Description
200 object Informations générales de l'utilisateur
400 object L'identifiant n'est pas un entier
403 object Droits insuffisants ou compte root_invisible non accessible
404 object L'utilisateur n'existe pas

Données

Valeur Type Description
id integer Identifiant technique
firstname string Prénom
lastname string Nom
enabled boolean false lorsque le compte est suspendu (SPD), true dans les autres cas
mail string Adresse électronique
phone string Numéro de téléphone. La propriété peut être absente si l'appelant ne peut pas consulter les données personnelles
mode string Mode du compte
department string ou null Libellé de l'entité principale
Exemple
{
  "id": 42,
  "firstname": "Utilisateur",
  "lastname": "Exemple",
  "enabled": true,
  "mail": "utilisateur@example.invalid",
  "phone": "+33000000000",
  "mode": "standard",
  "department": "Direction générale"
}

Consultation détaillée d'un utilisateur

Route

GET /rest/users/{id}/details

Paramètres

URL

Valeur Type Obligatoire Description
id integer Oui Identifiant technique de l'utilisateur (users.id)

Un utilisateur peut consulter ses propres informations détaillées. La consultation d'un autre utilisateur nécessite le privilège admin_users et reste limitée au périmètre d'administration. Seul le super administrateur peut consulter un compte en mode root_invisible.

Retour

Code HTTP Type Description
200 object Informations détaillées de l'utilisateur
400 object Identifiant invalide ou utilisateur inexistant
403 object Droits insuffisants, utilisateur hors périmètre ou compte root_invisible non accessible

Données principales

Valeur Type Description
id integer Identifiant technique
user_id string Login
firstname string Prénom
lastname string Nom
status string Statut OK, ABS, SPD ou DEL
phone string Numéro de téléphone. La propriété peut être absente sans le privilège view_personal_data
mail string Adresse électronique
initials string Initiales
mode string Mode du compte
authorizedApi array ou null Routes autorisées pour un compte WebService
external_id object Identifiants du compte dans les services externes
absence object ou null Configuration de l'absence
signatures array Signatures de l'utilisateur, vides sans le privilège view_personal_data
emailSignatures array Signatures de courriel, vides sans le privilège view_personal_data
groups array Groupes associés
allGroups array Groupes que l'administrateur peut associer
entities array Entités associées
allEntities array Entités que l'administrateur peut associer
baskets array Bannettes de l'utilisateur
assignedBaskets array Bannettes attribuées par d'autres utilisateurs
redirectedBaskets array Bannettes redirigées
canModifyPassword boolean Indique si le mot de passe peut être modifié depuis l'administration
canSendActivationNotification boolean Indique si une notification d'activation peut être envoyée
canLinkToExternalSignatoryBook boolean Indique si le compte peut être lié au parapheur externe configuré

Vérification avant la suppression d'un utilisateur

Cette route indique si l'administrateur peut gérer les éléments qui bloqueraient la suppression et fournit les données nécessaires à leur réattribution.

Route

GET /rest/users/{id}/isDeletable

Paramètres

URL

Valeur Type Obligatoire Description
id integer Oui Identifiant technique de l'utilisateur (users.id)

La vérification nécessite le privilège admin_users, respecte le périmètre d'administration et ne peut pas cibler le compte de l'appelant.

Retour

Code HTTP Type Description
200 object Résultat de la vérification et éléments à réattribuer
400 object Identifiant invalide ou utilisateur inexistant
403 object Droits insuffisants, utilisateur hors périmètre ou tentative sur son propre compte

Données

Valeur Type Description
isDeletable boolean Indique si l'appelant peut prendre en charge tous les éléments bloquants
listTemplateEntities array Entités des modèles de liste hors du périmètre de l'appelant, présent lorsque isDeletable vaut false
listInstanceEntities array Entités des listes de diffusion hors du périmètre de l'appelant, présent lorsque isDeletable vaut false
listTemplates array Modèles de liste à traiter avant la suppression, présent lorsque isDeletable vaut true
listInstances array Listes de diffusion de courriers à traiter, présent lorsque isDeletable vaut true
workflowListInstances array Circuits de visa à traiter, présent lorsque isDeletable vaut true
Exemple
{
  "isDeletable": true,
  "listTemplates": [],
  "listInstances": [],
  "workflowListInstances": []
}

Suspension d'un utilisateur

La suspension désactive le compte en lui attribuant le statut SPD. Elle supprime également ses redirections de bannettes et certaines associations aux listes de diffusion.

Route

PUT /rest/users/{id}/suspend

Paramètres

URL

Valeur Type Obligatoire Description
id integer Oui Identifiant technique de l'utilisateur (users.id)

La suspension nécessite le privilège admin_users, respecte le périmètre d'administration et ne peut pas cibler le compte de l'appelant. Seul un super administrateur peut suspendre un compte super administrateur.

Retour

Code HTTP Type Description
204 aucun L'utilisateur a été suspendu
400 object Identifiant invalide ou utilisateur inexistant
403 object Droits insuffisants, utilisateur hors périmètre, compte non autorisé ou présence dans une liste de diffusion ou un modèle de liste bloquant

La réponse 204 ne contient pas de corps.


Suppression d'un utilisateur

La suppression est logique : le compte est conservé avec le statut DEL. Ses associations aux groupes, entités, bannettes, redirections et listes sont supprimées. La synchronisation avec le parapheur interne peut également être déclenchée.

Route

DELETE /rest/users/{id}

Paramètres

URL

Valeur Type Obligatoire Description
id integer Oui Identifiant technique de l'utilisateur (users.id)

La suppression nécessite le privilège admin_users, respecte le périmètre d'administration et ne peut pas cibler le compte de l'appelant. Seul un super administrateur peut supprimer un compte super administrateur.

Retour

Code HTTP Type Description
200 object L'utilisateur a été supprimé logiquement
400 object Identifiant invalide ou utilisateur inexistant
403 object Droits insuffisants, utilisateur hors périmètre, compte non autorisé ou présence dans une liste de diffusion ou un modèle de liste bloquant

Exemple

La propriété problem vaut null lorsque la synchronisation éventuelle avec le parapheur interne n'a rencontré aucune erreur.

{
  "problem": null
}

Consultation du statut d'un utilisateur

Cette route recherche un utilisateur par son login, sans tenir compte de la casse.

Route

GET /rest/users/{userId}/status

Paramètres

URL

Valeur Type Obligatoire Description
userId string Oui Login de l'utilisateur (users.user_id)

L'appelant doit disposer du privilège admin_users.

Retour

Code HTTP Type Description
200 object Statut du compte, ou null si le login n'existe pas
403 object L'appelant ne dispose pas du privilège admin_users

Exemple

{
  "status": "OK"
}

Les statuts possibles sont OK (actif), ABS (absent), SPD (suspendu) et DEL (supprimé).


Modification du statut d'un utilisateur

Cette route permet de déclarer un utilisateur absent ou de le remettre en activité.

Route

PUT /rest/users/{id}/status

Paramètres

URL

Valeur Type Obligatoire Description
id integer Oui Identifiant technique de l'utilisateur (users.id)

Body

Valeur Type Obligatoire Description
status string Oui Nouveau statut : OK ou ABS

Un utilisateur peut modifier son propre statut. La modification d'un autre utilisateur nécessite le privilège admin_users et reste limitée au périmètre d'administration.

Le passage de ABS à OK efface la configuration d'absence enregistrée sur le compte. Les statuts SPD et DEL ne sont pas acceptés par cette route.

Exemple
{
  "status": "ABS"
}

Retour

Code HTTP Type Description
200 object Statut mis à jour
400 object Identifiant invalide, utilisateur inexistant ou statut absent ou non autorisé
403 object Droits insuffisants ou utilisateur hors périmètre

Exemple

{
  "user": {
    "status": "ABS"
  }
}

Liaison des comptes Maarch Courrier avec les comptes Maarch Parapheur

Associer un compte utilisateur Maarch Parapheur

Route

PUT /rest/users/{id}/linkToMaarchParapheur

Le paramètre id de la route représente l'identifiant technique de l'utilisateur Maarch Courrier.

Body
Valeur Type Obligatoire Description
maarchParapheurUserId integer Oui Identifiant technique de l'utilisateur Maarch Parapheur
Exemple
{
    "maarchParapheurUserId" : 19
}

Retour

Code Http Type Description Exemple
200 json La liaison a bien été effectuée {"success": "success"}
400 array Message d'erreur {"errors": "User does not exist in Maarch Parapheur"}
403 array Utilisateur déjà lié {"errors": "This maarch parapheur user is already linked to someone. Choose another one"}

Création d'un nouveau compte Maarch Parapheur

Il est possible de créer un nouveau compte utilisateur Maarch Parapheur et l'associer automatiquement au compte utilisateur Maarch Parapheur.

Route

PUT /rest/users/{id}/createInMaarchParapheur

Le paramètre id de la route représente l'identifiant technique de l'utilisateur Maarch Courrier.

Body
Valeur Type Obligatoire Description
login string Oui Identifiant technique de l'utilisateur Maarch Parapheur
Exemple
{
    "login" : "utilisateur.exemple"
}

Retour

Code Http Type Description Exemple
200 array La liaison a bien été effectuée {"externalId": 19}
400 array Message d'erreur {"errors": "User does not exist in Maarch Parapheur"}
403 array Utilisateur déjà lié {"errors": "This maarch parapheur user is already linked to someone. Choose another one"}
Exemple
{
  "externalId": 19 // Identifiant technique de l'utilisateur Maarch Parapheur créé
}

Dissocier un compte utilisateur Maarch Parapheur

Route

PUT /rest/users/{id}/unlinkToMaarchParapheur

Le paramètre id de la route représente l'identifiant technique de l'utilisateur Maarch Courrier.

Retour

Code HTTP Type Description Exemple
200 json La dissociation a bien été effectuée {"success": "success"}

Statut de l'utilisateur Maarch Courrier dans Maarch Parapheur

Route

GET /rest/users/{id}/statusInMaarchParapheur

Le paramètre id de la route représente l'identifiant technique de l'utilisateur Maarch Courrier.

Retour

Code Http Type Description Exemple
200 json Renvoyer le login de l'utilisateur Maarch {"link": "utilisateur.exemple", "errors": ""}
400 array L'utilisateur n'a pas d'identifiant Maarch Parapheur {"errors": "User does not have Maarch Parapheur Id"}
403 array Maarch Parapheur n'est pas activé {"errors": "maarchParapheur is not enabled"}

Exemple

{
  "link": "utilisateur.exemple",
  "errors": ""
}

Modifier le rôle d'un utilisateur dans un groupe

PUT /rest/users/{id}/groups/{groupId}

id est l'identifiant technique de l'utilisateur et groupId l'identifiant métier du groupe. L'appelant doit disposer de admin_users, administrer l'utilisateur et pouvoir affecter le groupe.

Valeur du body Type Obligatoire Description
role string Non Rôle dans le groupe, chaîne vide par défaut
{
  "role": "Responsable"
}
Code HTTP Type Description
200 object {"success":"success"}
400 object Utilisateur, identifiant ou groupe invalide
403 object Droits, périmètre ou groupe non affectable

Lister les entités d'un utilisateur

GET /rest/users/{id}/entities

L'api vérifie uniquement l'existence de l'utilisateur, aucun privilège ou périmètre supplémentaire n'est contrôlé.

Code HTTP Type Description
200 object Propriété entities
400 object User does not exist
401 object Authentification invalide
403 object Route non autorisée au compte WebService

Modifier le rôle d'un utilisateur dans une entité

PUT /rest/users/{id}/entities/{entityId}

L'appelant doit disposer de admin_users et administrer l'utilisateur dans son périmètre.

Valeur Type Obligatoire Description
id (URL) integer Oui Identifiant technique utilisateur
entityId (URL) string Oui Identifiant métier de l'entité
user_role (body) string Non Rôle, chaîne vide par défaut
{
  "user_role": "Responsable"
}
Code HTTP Type Description
200 object {"success":"success"}
400 object Utilisateur ou entité absent
403 object Droits ou périmètre insuffisants

Définir l'entité principale

PUT /rest/users/{id}/entities/{entityId}/primaryEntity

Aucun body. L'appelant doit disposer de admin_users et administrer l'utilisateur dans son périmètre.

Code HTTP Type Description
200 object Propriété entities actualisée
400 object Utilisateur ou entité absent
403 object Droits ou périmètre insuffisants

Vérifier les usages avant de retirer une entité

GET /rest/users/{id}/entities/{entityId}

L'appelant doit disposer de admin_users et administrer l'utilisateur.

Code HTTP Type Description
200 object Booléens hasListinstances et hasListTemplates
400 object Utilisateur ou entité absent
403 object Droits ou périmètre insuffisants
{
  "hasListinstances": false,
  "hasListTemplates": false
}

Ajouter une signature manuscrite

POST /rest/users/{id}/signatures

L'utilisateur courant peut gérer ses signatures. Pour un autre utilisateur, manage_personal_data, admin_users et le périmètre sont requis.

Valeur du body Type Obligatoire Description
base64 string Oui Image encodée, 2 Mo au maximum
name string Oui Nom de fichier sûr
label string Oui Libellé
{
  "base64": "<contenu-base64>",
  "name": "signature.png",
  "label": "Signature principale"
}
Code HTTP Type Description
200 object Propriété signatures
400 object Paramètre, nom, type ou taille invalide
403 object Droits ou périmètre insuffisants
500 object Docserver inaccessible

Lire le contenu d'une signature manuscrite

GET /rest/users/{id}/signatures/{signatureId}/content

L'utilisateur courant peut lire sa signature. Pour un autre utilisateur, view_personal_data, admin_users et le périmètre sont requis.

Code HTTP Type Description
200 binaire Image avec son type MIME
400 object Identifiant invalide ou signature absente
403 object Droits ou périmètre insuffisants
404 object Signature not found on docserver

Renommer une signature manuscrite

PUT /rest/users/{id}/signatures/{signatureId}

Même contrôle d'accès que pour l'ajout.

Valeur du body Type Obligatoire Description
label string Oui Nouveau libellé
Code HTTP Type Description
200 object Propriété signature
400 object Body invalide
403 object Droits ou périmètre insuffisants

Supprimer une signature manuscrite

DELETE /rest/users/{id}/signatures/{signatureId}

Même contrôle d'accès que pour l'ajout. Aucun body.

Code HTTP Type Description
200 object Propriété signatures actualisée
403 object Droits ou périmètre insuffisants

Lister les empreintes utilisables dans le parapheur

GET /rest/users/{id}/visaSignatures

id est l'identifiant technique. Le cas d'usage interdit la consultation des signatures d'un autre utilisateur sans autorisation.

Code HTTP Type Description
200 array Empreintes de signature
403 object Accès aux signatures d'un autre utilisateur interdit
404 object Utilisateur inexistant

La structure détaillée des empreintes n'est pas couverte par un test HTTP de contrat.

Créer des redirections de bannettes

POST /rest/users/{id}/redirectedBaskets

L'utilisateur courant peut agir pour lui-même, sinon admin_users et le périmètre sont requis. Le body est un tableau de redirections.

Valeur d'une redirection Type Obligatoire Description
actual_user_id integer Oui Délégataire
group_id integer Oui Identifiant technique du groupe
basket_id string Oui Identifiant métier de la bannette
originalOwner integer Non Propriétaire initial pour une chaîne de délégation
[
  {
    "actual_user_id": 43,
    "group_id": 6,
    "basket_id": "COURRIERS_A_TRAITER"
  }
]
Code HTTP Type Description
200 object redirectedBaskets, baskets et éventuel problem
400 object Redirection invalide
403 object Droits ou périmètre insuffisants

Supprimer des redirections de bannettes

DELETE /rest/users/{id}/redirectedBaskets?redirectedBasketIds[]=15
Paramètre query Type Obligatoire Description
redirectedBasketIds array Oui Identifiants techniques des redirections

L'utilisateur courant peut supprimer ses redirections, sinon admin_users et le périmètre sont requis. Chaque redirection doit concerner l'utilisateur ciblé comme propriétaire ou délégataire.

Code HTTP Type Description
200 object baskets et éventuel problem
400 object Paramètre ou utilisateur invalide
403 object Redirection hors périmètre

Modifier l'affichage des bannettes d'un utilisateur

PUT /rest/users/{id}/baskets

admin_users et le périmètre sont requis.

Valeur d'un élément baskets Type Obligatoire Description
basketId string Oui Identifiant métier de la bannette
groupSerialId integer Oui Identifiant technique du groupe
allowed boolean Oui Afficher ou masquer
{
  "baskets": [
    {
      "basketId": "COURRIERS_A_TRAITER",
      "groupSerialId": 6,
      "allowed": true
    }
  ]
}
Code HTTP Type Description
200 object {"success":"success"}
400 object Relation, élément ou préférence invalide
403 object Droits ou périmètre insuffisants

Envoyer la notification d'activation

PUT /rest/users/{id}/accountActivationNotification

Aucun body. admin_users et le périmètre sont requis. La méthode de connexion doit être standard.

Code HTTP Type Description
204 aucun Notification envoyée
403 object Droits insuffisants ou connexion non standard

Programmer une absence

PUT /rest/users/{id}/absence

L'utilisateur courant peut programmer sa propre absence, sinon admin_users et le périmètre sont requis.

Valeur du body Type Obligatoire Description
absenceDate.startDate string Non Date de début, non passée
absenceDate.endDate string Oui Date de fin postérieure au début
redirectedBaskets array Oui Redirections contenant actual_user_id, group_id et basket_id
{
  "absenceDate": {
    "startDate": "2026-09-01",
    "endDate": "2026-09-15"
  },
  "redirectedBaskets": []
}
Code HTTP Type Description
204 aucun Absence enregistrée ou absence future annulée
400 object Date, utilisateur ou redirection invalide
403 object Droits ou périmètre insuffisants

Lier Maarch Courrier Mobile

PATCH /rest/users/{id}/maarchCourrierMobile/link

Le cas d'usage vérifie que l'utilisateur ciblé existe et correspond à l'utilisateur courant.

Valeur du body Type Obligatoire Description
mcm object Oui Configuration mobile
mcm.tokens array Non Jetons mobiles
mcm.preferenceNotificationMCM array Non Préférences de notification
{
  "mcm": {
    "tokens": ["<token-mobile>"],
    "preferenceNotificationMCM": []
  }
}
Code HTTP Type Description
204 aucun Liaison enregistrée
400 object id ou mcm absent
403 object Utilisateur ciblé différent de l'utilisateur courant

Délier Maarch Courrier Mobile

PATCH /rest/users/{id}/maarchCourrierMobile/unlink

Aucun body. Le cas d'usage limite l'opération à l'utilisateur courant.

Code HTTP Type Description
204 aucun Jetons mobiles supprimés
400 object Identifiant absent
403 object Utilisateur ciblé différent de l'utilisateur courant

Supprimer les préférences de notification mobile

DELETE /rest/users/{id}/maarchCourrierMobile/unlinkPreferenceNotification

Aucun body. Le cas d'usage limite l'opération à l'utilisateur courant.

Code HTTP Type Description
204 aucun Préférences supprimées
403 object Utilisateur ciblé différent de l'utilisateur courant

Consulter le profil courant

GET /rest/currentUser/profile

La réponse agrège identité, préférences, entités, groupes, bannettes, redirections, signatures, privilèges, règles de mot de passe, absence et délégataires. Les clauses de sécurité des groupes et bannettes sont retirées.

Code HTTP Type Description
200 object Profil de l'utilisateur authentifié
401 object Authentification invalide

Modifier le profil courant

PUT /rest/currentUser/profile

Le paramètre global canUpdateProfile doit être activé ou l'utilisateur doit posséder admin_users.

Valeur du body Type Obligatoire Description
firstname string Oui Prénom
lastname string Oui Nom
mail string Oui Adresse électronique valide
phone string Non Téléphone valide
initials string Non Initiales
Code HTTP Type Description
204 aucun Profil modifié
400 object Champ invalide
403 object Modification du profil interdite

Modifier les préférences du profil courant

PUT /rest/currentUser/profile/preferences
Valeur du body Type Obligatoire Description
documentEdition string Non Méthode d'édition autorisée par l'application
homeGroups valeur JSON Non Groupement de la page d'accueil
{
  "documentEdition": "onlyoffice"
}
Code HTTP Type Description
204 aucun Préférences modifiées
400 object Méthode d'édition interdite

Enregistrer l'état du parcours guidé

PUT /rest/currentUser/profile/featureTour
Valeur du body Type Obligatoire Description
featureTour valeur JSON non vide Oui État du parcours guidé
Code HTTP Type Description
204 aucun État enregistré
400 object Body featureTour is empty

Gérer les signatures de courriel personnelles

Action Route Body Retour
Créer POST /rest/currentUser/emailSignatures title et htmlBody 200, emailSignatures
Modifier PUT /rest/currentUser/emailSignature/{id} title et htmlBody 200, emailSignature
Supprimer DELETE /rest/currentUser/emailSignature/{id} Aucun 200, emailSignatures
Lister avec contenu GET /rest/currentUser/emailSignatures Aucun 200, signatures personnelles et globales
Lister sans contenu GET /rest/currentUser/emailSignaturesList Aucun 200, signatures personnelles et globales
Consulter une personnelle GET /rest/currentUser/emailSignatures/{id} Aucun 200 ou 404 Signature not found
Consulter une globale GET /rest/currentUser/globalEmailSignatures/{id} Aucun 200, signature ou null

Le contenu HTML est nettoyé par le serveur. Les routes personnelles utilisent toujours l'utilisateur authentifié.

{
  "title": "Signature professionnelle",
  "htmlBody": "<p>Utilisateur Exemple</p>"
}

Modifier la couleur d'une bannette du profil courant

PUT /rest/currentUser/groups/{groupId}/baskets/{basketId}
Valeur Type Obligatoire Description
groupId (URL) integer Oui Identifiant technique du groupe
basketId (URL) string Oui Identifiant métier de la bannette
color (body) string Non Couleur, une chaîne vide pour supprimer la couleur
Code HTTP Type Description
200 object Propriété userBaskets

Lister les modèles accessibles au profil courant

GET /rest/currentUser/templates?type=mail&target=attachment
Paramètre query Type Obligatoire Description
type string Non Type converti en majuscules
target string Non Cible du modèle
Code HTTP Type Description
200 object Propriété templates, limitée aux entités du profil

Lister les adresses d'expédition disponibles

GET /rest/currentUser/availableEmails

Aucun paramètre. La réponse est construite pour l'utilisateur authentifié.

Code HTTP Type Description
200 object Propriété emails

Rechercher des utilisateurs

GET /rest/autocomplete/users?search=utilisateur&inEntity=SERVICE_A&serial=true
Paramètre query Type Obligatoire Description
search string Oui Recherche sur prénom et nom
inEntity string ou integer Non Identifiant métier ou technique d'entité
serial valeur non vide Non Place l'identifiant technique dans id

Les comptes supprimés, suspendus, WebService et super administrateur invisible sont exclus. Limite : 50.

Code HTTP Type Description
200 array Résultats
400 object Bad Request
[
  {
    "type": "user",
    "id": 42,
    "serialId": 42,
    "idToDisplay": "Utilisateur Exemple",
    "descriptionToDisplay": "Service A",
    "status": "OK"
  }
]

Rechercher des utilisateurs administrables

GET /rest/autocomplete/users/administration?search=utilisateur

La route limite un administrateur non super administrateur à ses entités et aux comptes sans entité.

Code HTTP Type Description
200 array Au plus 50 utilisateurs
400 object Bad Request

Rechercher des utilisateurs pour un circuit

GET /rest/autocomplete/users/circuit?search=utilisateur&circuit=opinion

Le paramètre circuit=opinion sélectionne les utilisateurs possédant le privilège avis_documents, les autres valeurs sélectionnent visa et signature. Les comptes WebService, supprimés, suspendus et invisibles sont exclus.

Code HTTP Type Description
200 array Utilisateurs affectables au circuit

Rechercher des comptes Maarch Parapheur

GET /rest/autocomplete/maarchParapheurUsers?search=utilisateur&excludeAlreadyConnected=true
Paramètre query Type Obligatoire Description
search string Oui Recherche distante
excludeAlreadyConnected valeur non vide Non Exclut les comptes déjà liés
Code HTTP Type Description
200 array Comptes Maarch Parapheur
400 object Erreur du service distant
403 object maarchParapheur is not enabled
500 object Configuration absente ou incomplète

Rechercher des comptes Fast Parapheur

GET /rest/autocomplete/fastParapheurUsers?search=utilisateur&excludeAlreadyConnected=true

search est obligatoire et contient au moins deux caractères. La recherche est limitée aux abonnés accessibles depuis les entités de l'appelant.

Code HTTP Type Description
200 array Comptes Fast Parapheur
400 object Recherche trop courte, configuration ou service distant en erreur

Envoyer les signatures vers Maarch Parapheur

PUT /rest/users/{id}/externalSignatures

Aucun body. L'utilisateur courant peut envoyer ses signatures, sinon admin_users et le périmètre sont requis. Maarch Parapheur doit être activé et l'utilisateur lié.

Code HTTP Type Description
200 object {"success":"success"}
400 object Aucune signature, docserver ou service distant en erreur
403 object Accès interdit, fichier absent, utilisateur non lié ou parapheur désactivé

Lier un utilisateur à Fast Parapheur

PUT /rest/users/{id}/linkToFastParapheur

admin_users et le périmètre sont requis.

Valeur du body Type Obligatoire Description
fastParapheurUserEmail string Oui Adresse électronique du compte Fast Parapheur
{
  "fastParapheurUserEmail": "utilisateur@example.invalid"
}
Code HTTP Type Description
204 aucun Liaison créée
400 object Identifiant, courriel, configuration ou compte distant invalide
403 object Droits insuffisants ou compte déjà lié

Délier un utilisateur de Fast Parapheur

PUT /rest/users/{id}/unlinkToFastParapheur

Aucun body. admin_users et le périmètre sont requis.

Code HTTP Type Description
204 aucun Liaison supprimée
400 object Identifiant invalide
403 object Droits ou périmètre insuffisants

Consulter la liaison Fast Parapheur

GET /rest/users/{id}/statusInFastParapheur

Aucun body.

Code HTTP Type Description
200 object Adresse liée dans link
400 object Configuration ou compte distant en erreur
403 object Fast Parapheur désactivé ou utilisateur non lié
{
  "link": "utilisateur@example.invalid"
}