Modèles d'enregistrement¶
Cette page décrit les contrats publics utilisés pour choisir, créer et administrer les modèles d'enregistrement et leurs catégories personnalisées. Certaines structures retournées sont étroitement liées aux formulaires du frontend.
Toutes les routes nécessitent une authentification. Les modèles privés sont limités à leur propriétaire et les modèles partagés sont filtrés selon les entités du compte courant.
Lister les modèles¶
| Paramètre query string | Type | Obligatoire | Description |
|---|---|---|---|
showDisabled |
string true ou false |
Non | Inclut les modèles désactivés uniquement avec admin_indexing_models |
showInUserEntity |
string true ou false |
Non | Restreint la sélection aux modèles privés du compte et aux modèles de ses entités |
Retour¶
Le retour 200 contient indexingModels. Chaque entrée provient du modèle interne et comprend notamment l'identifiant, le libellé, la catégorie, le propriétaire, les indicateurs private, default, enabled et le rattachement éventuel à un modèle maître.
{
"indexingModels": [
{
"id": 1,
"label": "Courrier Arrivée",
"category": "incoming",
"default": true,
"owner": 23,
"private": false,
"master": null,
"enabled": true,
"mandatoryFile": true,
"ladProcessing": true,
"isCustom": false
}
]
}
Consulter un modèle¶
| Paramètre | Emplacement | Type | Obligatoire | Description |
|---|---|---|---|---|
id |
URL | integer | Oui | Identifiant du modèle |
used |
Query string | string true |
Non | Ajoute le nombre de courriers par statut utilisant le modèle |
Retour¶
Le retour 200 contient indexingModel, ses entities, ses fields, ses blocks, mandatoryFile, ladProcessing, isCustom et, pour une catégorie personnalisée, categoryLabel. Avec used=true, la propriété used contient le nombre de courriers par statut.
{
"indexingModel": {
"id": 42,
"label": "Courrier entrant",
"category": "incoming",
"default": false,
"owner": 19,
"private": false,
"master": null,
"enabled": true,
"isCustom": false,
"entities": [
{
"id": "ALL_ENTITIES",
"keyword": "ALL_ENTITIES",
"entity_id": "ALL_ENTITIES",
"parent": "#",
"icon": "fa fa-hashtag",
"allowed": true,
"text": "<toutes-les-entités>",
"state": {
"selected": true
}
}
],
"fields": [
{
"identifier": "subject",
"mandatory": true,
"default_value": "",
"unit": "mail",
"enabled": true,
"allowedValues": []
},
{
"identifier": "doctype",
"mandatory": true,
"default_value": null,
"unit": "mail",
"enabled": true,
"allowedValues": [101, 102]
}
],
"mandatoryFile": true,
"ladProcessing": false,
"blocks": [
{"identifier": "mail", "label": "Courrier", "position": 0, "system": true},
{"identifier": "contact", "label": "Contact", "position": 1, "system": true},
{"identifier": "process", "label": "Traitement", "position": 2, "system": true},
{"identifier": "classifying", "label": "Classement", "position": 3, "system": true}
],
"allDoctypes": false
}
}
| Code HTTP | Message confirmé |
|---|---|
400 |
Model not found |
400 |
Model out of perimeter |
Lister les entités proposées¶
Cette route publique prépare les données nécessaires aux formulaires.
| Paramètre query string | Type | Obligatoire | Description |
|---|---|---|---|
allEntities |
string true |
Non | Demande les entités autorisées en mode administration |
resId |
integer | Non | Restreint la réponse à l'entité destinataire d'un courrier accessible |
Retour¶
Sans query string, le retour 200 contient entities. Chaque entrée expose id, entity_id, entity_label, level et éventuellement parent_entity_id.
{
"entities": [
{
"id": 1,
"entity_label": "Ville de Maarch-les-Bains",
"entity_id": "VILLE",
"level": 0
},
{
"id": 3,
"entity_label": "Direction Générale des Services",
"entity_id": "DGS",
"parent_entity_id": "VILLE",
"level": 1
}
]
}
Avec allEntities=true, les entrées sont adaptées au composant d'arborescence et ajoutent notamment serialId, parent, allowed, text et state. Avec resId, la liste contient uniquement l'entité destinataire du courrier. Un courrier hors périmètre retourne 403 avec {"errors":"Document out of perimeter"}.
Créer un modèle¶
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
label |
string | Oui | Libellé, au maximum 256 caractères |
category |
string | Oui | Catégorie système ou personnalisée existante |
fields |
array | Oui | Champs du formulaire et doit contenirdoctype et subject |
private |
boolean | Non | Ignoré ou forcé selon les privilèges |
default |
boolean | Non | Réservé à admin_indexing_models |
entities |
array | Non | Identifiants d'entités ouALL_ENTITIES |
master |
integer | Non | Modèle maître public existant |
mandatoryFile |
boolean | Non | Rend le fichier obligatoire |
ladProcessing |
boolean | Non | Active le traitement LAD |
allDoctypes |
boolean | Non | Autorise tous les types pour le champdoctype |
blocks |
array | Non | Blocs du formulaire, les quatre blocs système sont utilisés par défaut |
Chaque élément de fields utilise les clés confirmées identifier, mandatory, enabled, default_value, unit et éventuellement allowedValues.
Chaque élément de blocks contient identifier, label et position. Les identifiants et positions doivent être uniques. Les blocs système mail, contact, process et classifying sont obligatoires. Les champs référencent leur bloc avec unit.
Body¶
{
"label": "Courrier entrant",
"category": "incoming",
"private": false,
"default": false,
"mandatoryFile": true,
"ladProcessing": false,
"allDoctypes": false,
"entities": ["ALL_ENTITIES"],
"blocks": [
{"identifier": "mail", "label": "Courrier", "position": 0},
{"identifier": "contact", "label": "Contact", "position": 1},
{"identifier": "process", "label": "Traitement", "position": 2},
{"identifier": "classifying", "label": "Classement", "position": 3}
],
"fields": [
{
"identifier": "subject",
"mandatory": true,
"enabled": true,
"default_value": "",
"unit": "mail"
},
{
"identifier": "doctype",
"mandatory": true,
"enabled": true,
"default_value": null,
"unit": "mail",
"allowedValues": [101, 102]
}
]
}
Retour¶
| Code HTTP | Description ou message confirmé |
|---|---|
200 |
Objet contenant l'id créé |
400 |
Body label is empty or not a string or more than 256 characters |
400 |
Body category is empty, not a string or not a valid category |
400 |
Body fields is empty or not an array |
400 |
Mandatory 'doctype' field is missing ou Mandatory 'subject' field is missing |
400 |
Master model not found ou Master model is a private model |
Exemple de retour 200 :
Modifier un modèle¶
Privilège requis : admin_indexing_models.
Le body reprend la structure de création. label, category, default, mandatoryFile et fields sont obligatoires. entities, blocks, ladProcessing et allDoctypes peuvent également être transmis. La modification d'un modèle maître propage sa structure à ses modèles enfants et peut supprimer des valeurs de courriers pour les champs retirés.
Body¶
{
"label": "Courrier entrant mis à jour",
"category": "incoming",
"default": false,
"mandatoryFile": true,
"ladProcessing": false,
"allDoctypes": false,
"entities": ["ALL_ENTITIES"],
"blocks": [
{"identifier": "mail", "label": "Courrier", "position": 0},
{"identifier": "contact", "label": "Contact", "position": 1},
{"identifier": "process", "label": "Traitement", "position": 2},
{"identifier": "classifying", "label": "Classement", "position": 3}
],
"fields": [
{
"identifier": "subject",
"mandatory": true,
"enabled": true,
"default_value": "Objet par défaut",
"unit": "mail"
},
{
"identifier": "doctype",
"mandatory": true,
"enabled": true,
"default_value": 101,
"unit": "mail",
"allowedValues": [101, 102]
}
]
}
Retour¶
| Code HTTP | Description ou message confirmé |
|---|---|
204 |
Modification effectuée |
400 |
Param id is empty or not an integer |
400 |
Body default is empty or not a boolean |
400 |
Body mandatoryFile is empty or not a boolean |
400 |
Model not found ou Model out of perimeter |
403 |
Service forbidden |
Le retour 204 ne contient pas de body.
Désactiver ou activer un modèle¶
Privilège requis : admin_indexing_models. L'action est propagée aux modèles enfants.
Ces deux routes n'attendent aucun body.
Retour¶
| Code HTTP | Description ou message confirmé |
|---|---|
204 |
État modifié |
400 |
Route id is empty or not an integer |
400 |
Model not found |
400 |
Can not disable this model because this is the default model |
403 |
Service forbidden |
Le retour 204 ne contient pas de body.
Supprimer un modèle¶
Un modèle privé enfant est supprimable par son propriétaire. Un modèle public enfant exige create_public_indexing_models et un modèle maître exige admin_indexing_models. Le modèle par défaut ne peut pas être supprimé.
| Champ body | Type | Obligatoire | Description |
|---|---|---|---|
targetId |
integer | Si le modèle est utilisé | Modèle de remplacement pour les courriers existants |
Body¶
Le body est omis lorsque le modèle n'est utilisé par aucun courrier. Sinon, il contient le modèle de remplacement :
Retour¶
| Code HTTP | Description ou message confirmé |
|---|---|
204 |
Modèle et modèles enfants supprimés |
400 |
Param id is empty or not an integer |
400 |
Model not found ou Model out of perimeter |
400 |
Default model can not be deleted |
400 |
Model is used by at least one resource |
Le retour 204 ne contient pas de body.
Créer une catégorie personnalisée¶
Privilège requis : admin_indexing_models.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id |
string | Oui | Commence par une lettre puis lettres, chiffres,_, - ou : |
label |
string | Oui | Libellé |
chronoLetter |
string | Oui | Une lettre majuscule non utilisée |
Body¶
Retour¶
| Code HTTP | Description ou message confirmé |
|---|---|
201 |
{"success":true} |
400 |
badFormat, mandatoryField, alreadyExist ou chronoLetterAlreadyUsed |
403 |
Service forbidden |
Modifier une catégorie personnalisée¶
Privilège requis : admin_indexing_models. L'identifiant provient de l'URL.
Body¶
Retour¶
| Code HTTP | Description ou message confirmé |
|---|---|
200 |
{"success":true} |
400 |
badFormat, mandatoryField, alreadyExist ou chronoLetterAlreadyUsed |
403 |
Service forbidden |
404 |
categoryNotFound |
Consulter l'utilisation d'une catégorie¶
Retour¶
Le retour 200 contient indexingModels, liste des modèles utilisant la catégorie.
Rediriger une catégorie¶
| Champ body | Type | Obligatoire | Description |
|---|---|---|---|
replacementCategoryId |
string | Oui | Catégorie système ou personnalisée de remplacement |
Body¶
Retour¶
| Code HTTP | Description ou message confirmé |
|---|---|
200 |
{"success":true} |
400 |
replacementCategoryIdIsEmpty, replacementCategoryIdIsSame ou replacementCategoryNotFound |
404 |
categoryNotFound |
Supprimer une catégorie personnalisée¶
Privilège requis : admin_indexing_models.
| Champ body | Type | Obligatoire | Description |
|---|---|---|---|
reassignToCategoryId |
string | Si la catégorie est utilisée | Catégorie recevant les modèles et courriers |
Body¶
Le body est omis lorsque la catégorie n'est pas utilisée. Sinon, il contient la catégorie de remplacement :
Retour¶
| Code HTTP | Description ou message confirmé |
|---|---|
200 |
{"success": true} |
403 |
Service forbidden |
404 |
categoryNotFound |
409 |
categoryUsedByIndexingModels, avec le nombre used |