Historiques
Ces routes consultent et exportent l'historique général de Maarch Courrier ainsi que l'historique des traitements par lots. L'authentification REST est obligatoire pour toutes les routes de cette page. Une authentification absente ou invalide renvoie 401 avec {"errors":"Authentication Failed"}.
Historique général
Lister l'historique
Route
Authentification, privilège et périmètre
Le privilège et le périmètre dépendent des paramètres de la requête :
Mode
Contrôle d'accès
Périmètre
Sans resId
Privilège view_history
Historique général de l'instance
Avec resId
Courrier dans le périmètre de l'utilisateur et privilège view_full_history
Événements du courrier dans res_letterbox ou res_view_letterbox
Avec resId et onlyActions
Courrier dans le périmètre de l'utilisateur et privilège view_doc_history ou view_full_history
Actions réalisées sur le courrier
Paramètres de query string
Valeur
Type
Obligatoire
Description
limit
integer
Non
Nombre maximal de résultats, 25 par défaut
offset
integer
Non
Décalage du premier résultat, 0 par défaut
users[]
array
Non
Identifiants techniques numériques ou identifiants de connexion des utilisateurs
startDate
string
Non
Conserve les événements strictement postérieurs à cette date
endDate
string
Non
Conserve les événements strictement antérieurs à cette date
resId
integer
Non
Identifiant du courrier dont l'historique est demandé
onlyActions
boolean
Non
Avec une valeur non vide, conserve les événements dont le type commence par ACTION#
actions[]
array
Non
Identifiants d'actions, convertis en types d'événement ACTION#{id}
systemActions[]
array
Non
Types d'événements système
search
string
Non
Recherche insensible à la casse dans info et remote_ip
order
string
Non
Direction attendue : asc ou desc
orderBy
string
Non
Champ de tri envoyé par le frontend
Tri dans l'implémentation actuelle
Le contrôleur ne lit pas orderBy. Lorsque order est renseigné, le tri appliqué est actuellement event_date DESC.
Retour
Code HTTP
Type
Description
Exemple
200
object
Propriété history paginée et nombre total dans count
{"history":[{"record_id":42,"event_date":"2026-09-01 09:30:00","user_id":12,"info":"Modification du courrier","remote_ip":"192.0.2.10","userLabel":"Jean Dupont"}],"count":1}
403
object
Courrier absent du périmètre ou resId invalide
{"errors":"Document out of perimeter"}
403
object
Privilège requis absent
{"errors":"Service forbidden"}
Données d'un événement
Valeur
Type
Description
record_id
integer ou string
Identifiant de l'objet concerné par l'événement
event_date
string
Date et heure de l'événement
user_id
integer ou null
Identifiant technique de l'utilisateur à l'origine de l'événement
info
string
Description de l'événement
remote_ip
string ou null
Adresse IP enregistrée
userLabel
string
Nom et prénom de l'utilisateur, chaîne vide si l'utilisateur n'existe plus
Lister les filtres disponibles
Route
GET /rest/history/availableFilters
Authentification, privilège et périmètre
Les contrôles sont identiques à ceux de GET /rest/history : view_history sans resId, ou contrôle du périmètre du courrier avec view_full_history . Avec resId et onlyActions, view_doc_history suffit également.
Paramètres de query string
Valeur
Type
Obligatoire
Description
resId
integer
Non
Limite les filtres aux événements du courrier
onlyActions
boolean
Non
Avec une valeur non vide, limite les filtres aux types ACTION#
Retour
Code HTTP
Type
Description
Exemple
200
object
Actions, événements système et utilisateurs présents dans l'historique ciblé
{"actions":[{"id":"19","label":"Clôturer"}],"systemActions":[{"id":"LOGIN","label":null}],"users":[{"id":12,"login":"jdupont","label":"Jean Dupont"}]}
403
object
Courrier absent du périmètre ou resId invalide
{"errors":"Document out of perimeter"}
403
object
Privilège requis absent
{"errors":"Service forbidden"}
Données des filtres
Valeur
Type
Description
actions[].id
string
Identifiant de l'action extrait du type ACTION#{id}
actions[].label
string ou null
Libellé de l'action, null lorsqu'elle n'existe plus
systemActions[].id
string
Type de l'événement système
systemActions[].label
null
Le libellé est traduit par le frontend
users[].id
integer ou null
Identifiant technique de l'utilisateur
users[].login
string ou null
Identifiant de connexion
users[].label
string ou null
Nom et prénom, null lorsque l'utilisateur n'existe plus
Lire l'historique d'un utilisateur
Route
GET /rest/history/users/{userSerialId}
Authentification, privilège et périmètre
Un utilisateur peut consulter son propre historique sans privilège fonctionnel supplémentaire. La consultation de l'historique d'un autre utilisateur exige view_history .
Paramètres d'URL
Valeur
Type
Obligatoire
Description
userSerialId
integer
Oui
Identifiant technique de l'utilisateur
Paramètres de query string
Valeur
Type
Obligatoire
Description
startDate
string
Non
Conserve les événements strictement postérieurs à cette date
adminMode
boolean
Non
Avec une valeur non vide, ajoute remote_ip et supprime la limite de 500 résultats
Retour
Code HTTP
Type
Description
Exemple
200
object
Historique de l'utilisateur dans histories
{"histories":[{"info":"Connexion à Maarch Courrier","record_id":"jdupont","event_date":"2026-09-01 08:45:00","remote_ip":"192.0.2.10"}]}
403
object
Consultation d'un autre utilisateur sans view_history
{"errors":"Service forbidden"}
La propriété remote_ip n'est présente que lorsque adminMode est renseigné.
Exporter l'historique général
Route
Authentification, privilège et périmètre
L'implémentation actuelle exige le privilège admin_contacts . Elle n'applique ni view_history , ni le périmètre d'un courrier. L'export porte sur l'historique général de l'instance.
Paramètres de query string
Valeur
Type
Obligatoire
Description
limit
integer
Non
Nombre maximal de lignes exportées, 1000 par défaut
Body
Valeur
Type
Obligatoire
Description
delimiter
string
Oui
Séparateur CSV : ;, , ou TAB
format
string
Oui
Format demandé, toute chaîne non vide est acceptée, mais le contrôleur produit toujours un CSV
data
array
Oui
Colonnes à exporter, sous la forme {value, label}
parameters
object
Oui
Filtres de l'export
parameters.startDate
string
Non
Conserve les événements strictement postérieurs à cette date
parameters.endDate
string
Non
Conserve les événements strictement antérieurs à cette date
parameters.filterUsed.users
array
Non
Utilisateurs sous la forme {login}
parameters.filterUsed.actions
array
Non
Actions sous la forme {id}
parameters.filterUsed.systemActions
array
Non
Événements système sous la forme {id}
Les valeurs de colonne utilisées par l'interface sont event_date, record_id, userLabel, info et remote_ip. label devient l'en-tête de la colonne CSV.
{
"delimiter" : ";" ,
"format" : "csv" ,
"data" : [
{ "value" : "event_date" , "label" : "Événement" },
{ "value" : "userLabel" , "label" : "Utilisateur" },
{ "value" : "info" , "label" : "Information" }
],
"parameters" : {
"startDate" : "2026-09-01 00:00:00" ,
"endDate" : "2026-09-02 00:00:00" ,
"filterUsed" : {
"actions" : [{ "id" : "19" }],
"systemActions" : [],
"users" : []
}
}
}
Retour
Code HTTP
Type
Description
Exemple
200
fichier
Contenu CSV, avec Content-Type: application/vnd.ms-excel et le nom export_maarch.csv
Fichier CSV
400
object
Séparateur absent ou invalide
{"errors":"Delimiter is empty or not a string between [',', ';', 'TAB']"}
400
object
Format absent ou invalide
{"errors":"Format data is empty or not an array"}
400
object
Liste des colonnes absente ou vide
{"errors":"Data data is empty or not an array"}
400
object
Paramètres absents ou vides
{"errors":"Parameters data is empty or not an array"}
403
object
Privilège admin_contacts absent
{"errors":"Service forbidden"}
Historique des traitements des scripts
Lister l'historique des traitements
Route
Authentification, privilège et périmètre
Le privilège view_history_batch est obligatoire. La route consulte l'historique global des traitements des scripts, sans filtre par entité.
Paramètres de query string
Valeur
Type
Obligatoire
Description
limit
integer
Non
Nombre maximal de résultats, 25 par défaut
offset
integer
Non
Décalage du premier résultat, 0 par défaut
startDate
string
Non
Conserve les traitements strictement postérieurs à cette date
endDate
string
Non
Conserve les traitements strictement antérieurs à cette date
modules[]
array
Non
Noms des modules à conserver
totalErrors
string ou boolean
Non
Avec une valeur non vide, conserve uniquement les traitements dont total_errors est supérieur à 0
search
string
Non
Recherche insensible à la casse dans info et module_name
order
string
Non
Direction du tri : asc ou desc
orderBy
string
Non
Champ de tri : event_date, module_name, total_processed, total_errors ou info
Un champ orderBy invalide applique le tri event_date DESC.
Retour
Code HTTP
Type
Description
Exemple
200
object
Propriété history paginée et nombre total dans count
{"history":[{"event_date":"2026-09-01 02:00:00","module_name":"notifications","total_processed":120,"total_errors":2,"info":"Traitement terminé"}],"count":1}
403
object
Privilège view_history_batch absent
{"errors":"Service forbidden"}
Données d'un traitement
Valeur
Type
Description
event_date
string
Date et heure d'exécution
module_name
string
Nom du module ou du traitement
total_processed
integer ou null
Nombre d'éléments traités
total_errors
integer ou null
Nombre d'erreurs
info
string
Informations enregistrées par le traitement
Lister les modules disponibles
Route
GET /rest/batchHistory/availableFilters
Authentification, privilège et périmètre
Le privilège view_history_batch est obligatoire. Aucun paramètre ni body n'est attendu.
Retour
Code HTTP
Type
Description
Exemple
200
object
Modules distincts présents dans l'historique des traitements
{"modules":[{"id":"notifications","label":"notifications"}]}
403
object
Privilège view_history_batch absent
{"errors":"Service forbidden"}
Chaque élément de modules contient le nom du module dans id et label.
Exporter l'historique des traitements
Route
PUT /rest/batchHistory/export
Authentification, privilège et périmètre
L'implémentation actuelle exige le privilège admin_contacts . Elle n'applique pas view_history_batch . L'export porte sur l'ensemble de l'historique des traitements des scripts.
Paramètres de query string
Valeur
Type
Obligatoire
Description
limit
integer
Non
Nombre maximal de lignes exportées, 1000 par défaut
Body
Valeur
Type
Obligatoire
Description
delimiter
string
Oui
Séparateur CSV : ;, , ou TAB
format
string
Oui
Format demandé, toute chaîne non vide est acceptée, mais le contrôleur produit toujours un CSV
data
array
Oui
Colonnes à exporter, sous la forme {value, label}
parameters
object
Oui
Filtres de l'export
parameters.startDate
string
Non
Conserve les traitements strictement postérieurs à cette date
parameters.endDate
string
Non
Conserve les traitements strictement antérieurs à cette date
parameters.filterUsed.modules
array
Non
Modules sous la forme {id}
parameters.filterUsed.totalProcessed
array
Non
Nombres d'éléments traités sous la forme {id}
parameters.filterUsed.totalErrors
array
Non
Nombres d'erreurs sous la forme {id}
Les valeurs de colonne utilisées par l'interface sont event_date, total_processed, total_errors, info et module_name. label devient l'en-tête de la colonne CSV.
{
"delimiter" : ";" ,
"format" : "csv" ,
"data" : [
{ "value" : "event_date" , "label" : "Événement" },
{ "value" : "module_name" , "label" : "Module" },
{ "value" : "total_errors" , "label" : "Nombre d'erreurs" }
],
"parameters" : {
"startDate" : "2026-09-01 00:00:00" ,
"endDate" : "2026-09-02 00:00:00" ,
"filterUsed" : {
"modules" : [{ "id" : "notifications" }],
"totalProcessed" : [],
"totalErrors" : []
}
}
}
Retour
Code HTTP
Type
Description
Exemple
200
fichier
Contenu CSV, avec Content-Type: application/vnd.ms-excel et le nom export_maarch.csv
Fichier CSV
400
object
Séparateur absent ou invalide
{"errors":"Delimiter is empty or not a string between [',', ';', 'TAB']"}
400
object
Format absent ou invalide
{"errors":"Format data is empty or not an array"}
400
object
Liste des colonnes absente ou vide
{"errors":"Data data is empty or not an array"}
400
object
Paramètres absents ou vides
{"errors":"Parameters data is empty or not an array"}
403
object
Privilège admin_contacts absent
{"errors":"Service forbidden"}
1 septembre 2026
1 septembre 2026