Folders
Récupération des dossiers
Route
GET /rest/folders
Paramètres
Aucun paramètre n'est nécessaire.
Retour
L'ensemble des dossiers du périmètre de l'utilisateur sont retournés :
{
    "folders": [
        {
            "name": "Compétences fonctionnelles",
            "id": 1,
            "label": "Compétences fonctionnelles",
            "public": true,
            "user_id": 21,
            "parent_id": null,
            "level": 0,
            "countResources": 0,
            "pinned": true,
            "canEdit": true
        },
        {
            "name": "Administration municipale",
            "id": 4,
            "label": "Administration municipale",
            "public": true,
            "user_id": 21,
            "parent_id": 1,
            "level": 1,
            "countResources": 0,
            "pinned": false,
            "canEdit": true
        }
    ]
}
| Code Http | Type | Description | Exemple | 
| 200 | array | Les dossiers ont bien été trouvés | Voir résultat requête juste au dessus | 
Récupération d'un dossier
Route
GET /rest/folders/{id}
Paramètres
| Valeur | Type | Obligatoire | Description | 
| id | integer | Oui | Identifiant du dossier | 
Retour
Exemple de retour :
{
    "folder": {
        "id": 4,
        "label": "Administration municipale",
        "public": true,
        "user_id": 21,
        "parent_id": 1,
        "level": 1,
        "ownerDisplayName": "Bernard BLIER",
        "sharing": {
            "entities": [
                {
                    "entity_id": 1,
                    "edition": false,
                    "canDelete": false,
                    "label": "Ville de Maarch-les-Bains"
                },
                {
                    "entity_id": 2,
                    "edition": false,
                    "canDelete": false,
                    "label": "Cabinet du Maire"
                }
            ]
        },
        "pinned": false
    }
}
| Code Http | Type | Description | Exemple | 
| 200 | array | Le dossier a bien été trouvé | Voir résultat requête juste au dessus | 
| 400 | array | Le paramètre id envoyé n'est pas de type integer | {"errors": "Route id is not an integer"} | 
| 400 | array | Une erreur s'est produite | {"errors": "Le dossier recherché est introuvable ou est en dehors du périmètre de l'utilisateur connecté"} | 
Création d'un dossier
Route
POST /rest/folders
Paramètres
Body
| Valeur | Type | Obligatoire | Description | 
| label | string | Oui | Nom du dossier |  |  | 
| parent_id | integer | Non | Identifiant du dossier parent | 
Exemple
Enregistrement d'un dossier ayant pour sujet "Un dossier à enregistrer" :
{
    "label" : "Un dossier à enregistrer"
}
Retour
| Code Http | Type | Description | Exemple | 
| 200 | array | Le dossier a bien été créé | { "folder": 40 } | 
| 400 | array | Le champ label n'est pas de type string | {"errors": "Body label is empty or not a string"} | 
| 400 | array | Le champ parent_id n'est pas de type integer | {"errors": "Body parent_id is not an integer"} | 
| 400 | array | Le dossier parent est introuvable ou en dehors de l'utilisateur connecté | {"errors": "Parent Folder not found or out of your perimeter"} | 
Modification d'un dossier
Route
PUT /rest/folders/{id}
Paramètres
| Valeur | Type | Obligatoire | Description | 
| id | integer | Oui | Identifiant du dossier | 
Body
| Valeur | Type | Obligatoire | Description | 
| label | string | Oui | Nom du dossier | 
| parent_id | integer | Non | Identifiant du dossier parent | 
Exemple
Modification d'un dossier ayant pour sujet "Un dossier à modifier" :
{
    "label" : "Un dossier à modifier"
}
Retour
| Code Http | Type | Description | Exemple | 
| 200 | array | Le dossier a bien été modifié |  | 
| 400 | array | Le paramètre id envoyé est absent ou n'est pas de type integer | {"errors": "Query id is empty or not an integer"} | 
| 400 | array | Le champ label est absent ou n'est pas de type string | {"errors": Body label is empty or not a string"} | 
| 400 | array | Le champ parent_id n'est pas de type integer | {"errors": Body parent_id is not an integer"} | 
| 400 | array | Le champ parent_id et le paramètre id ne peuvent pas être de la même valeur | {"errors": Parent_id and id can not be the same"} | 
| 400 | array | Le champ parent_id n'existe pas ou est un parent de parent_id | {"errors": parent_id does not exist or Id is a parent of parent_id"} | 
| 400 | array | Le dossier n'a pas été trouvé ou est en dehors du périmètre de l'utilisateur connecté | {"errors": Folder not found or out of your perimeter"} | 
| 400 | array | Le dossier parent n'a pas été trouvé ou est en dehors de votre périmètre | {"errors": Parent Folder not found or out of your perimeter"} | 
| 400 | array | Impossible de déplacer ce dossier car au moins un dossier est en dehors du périmètre de l'utilisateur connecté | {"errors": Cannot move folder because at least one folder is out of your perimeter"} | 
| 400 | array | Impossible de partager/départager le dossier car au moins un dossier est en dehors du périmètre de l'utilisateur connecté | {"errors": Cannot share/unshare folder because at least one folder is out of your perimeter"} | 
Suppression d'un dossier
Route
DELETE /rest/folders/{id}
Paramètres
| Valeur | Type | Obligatoire | Description | 
| id | integer | Oui | Identifiant du dossier | 
| user_id | integer | Oui | Identifiant de l'utilsateur | 
Retour
| Code Http | Type | Description | Exemple | 
| 204 | array | Le dossier a bien été supprimé |  | 
| 400 | array | Le paramètre id envoyé est absent ou n'est pas de type integer | {"errors": Query id is empty or not an integer"} | 
| 500 | array | Impossible de supprimer le dossier car au moins un dossier est en dehors du périmètre de l'utilisateur connecté | {"errors": Cannot delete because at least one folder is out of your perimeter"} | 
Partage du dossier aux entités
Route
PUT /rest/folders/{id}/sharing
Paramètres
| Valeur | Type | Obligatoire | Description | 
| id | integer | Oui | Identifiant du dossier | 
Body
| Valeur | Type | Obligatoire | Description | 
| public | boolean | Oui | Confidentialité du dossier | 
| sharing.entities.entity_id | integer | Oui | Identifiant technique de l'entité | 
| sharing.entities.edition | boolean | Oui | Droit de l'entité sur la modification des paramètres du dossier | 
{
  "public": true,
  "sharing": {
    "entities": [
      {
        "entity_id": 4,
        "edition": false
      },
      {
        "entity_id": 3,
        "edition": false
      }]
  }
}
Retour
| Code Http | Type | Description | Exemple | 
| 204 | array | Les entités ayant accès à ce dossier ont bien été mises à jour |  | 
| 400 | array | Le paramètre id envoyé est absent ou n'est pas de type integer | {"errors": Query id is empty or not an integer"} | 
| 400 | array | Le paramètre public envoyé est absent ou n'est pas de type boolean | {"errors": Body public is empty or not a boolean"} | 
| 400 | array | Il n'y a pas de champ entities dans l'objet sharing | {"errors": Body sharing/entities does not exists"} | 
Portée d'un dossier
Route
GET /rest/folders/{id}/filters
Paramètres
L'identifiant du dossier  : {id} dans les paramètres de l'url
Retour
| Code Http | Type | Description | Exemple | 
| 200 | array | Le dossier a bien été trouvé |  | 
| 400 | array | Le paramètre id n'est pas de type integer | {"errors": "Route id is not an integer"} | 
| 400 | array | Le dossier est en dehors de la portée de l'utilisateur connecté | {"errors": "Folder out of perimeter"} | 
Exemple de retour :
{
  "entities": [
    {
      "entityId": "COR",
      "label": "Correspondants Archive",
      "count": 1
    },
    {
      "entityId": "DGA",
      "label": "Direction Générale Adjointe",
      "count": 1
    }
  ],
  "priorities": [],
  "categories": [],
  "statuses": [
    {
      "id": "EXP_SEDA",
      "label": "A archiver",
      "count": 1
    },
    {
      "id": "EVIS",
      "label": "A e-viser",
      "count": 1
    },
  ],
  "entitiesChildren": [
    {
      "entityId": "COR",
      "label": "Correspondants Archive",
      "count": 1
    },
    {
      "entityId": "DGA",
      "label": "Direction Générale Adjointe",
      "count": 4
    },
  ],
  "doctypes": [
    {
      "id": 101,
      "label": "Abonnements – documentation – archives",
      "count": 3
    },
    {
      "id": 102,
      "label": "Convocation",
      "count": 1
    }
  ],
  "folders": []
}
Récupération des ressources d'un dossier
Route
GET /rest/folders/{id}/resources
Paramètres
Body
| Valeur | Type | Obligatoire | Description | 
| id | integer | Oui | Identifiant du dossier | 
Retour
{
  "resources": [
    {
      "resId": 107,
      "chrono": "MAARCH/2021A/11",
      "barcode": null,
      "subject": "salut",
      "confidentiality": null,
      "statusLabel": "A archiver",
      "statusImage": "fm-letter-status-acla",
      "priorityColor": "#009dc5",
      "closing_date": null,
      "countAttachments": 0,
      "hasDocument": true,
      "mailTracking": true,
      "integrations": null,
      "retentionFrozen": false,
      "binding": null,
      "countNotes": 76,
      "folders": [
        {
          "id": 1,
          "label": "Compétences fonctionnelles"
        }
      ],
      "display": [],
      "allowed": true
    },
    {
      "resId": 108,
      "chrono": "MAARCH/2021A/12",
      "barcode": null,
      "subject": "fffffff",
      "confidentiality": null,
      "statusLabel": "A e-viser",
      "statusImage": "fm-letter-status-aval",
      "priorityColor": "#009dc5",
      "closing_date": null,
      "countAttachments": 0,
      "hasDocument": true,
      "mailTracking": false,
      "integrations": null,
      "retentionFrozen": false,
      "binding": null,
      "countNotes": 1,
      "folders": [
        {
          "id": 1,
          "label": "Compétences fonctionnelles"
        }
      ],
      "display": [],
      "allowed": true
    }
  ],
  "countResources": 2,
  "allResources": [
    107,
    108
  ]
}
| Code Http | Type | Description | Exemple | 
| ̀ 200 | array | Les ressources ont bien été retournées |  | 
| 400 | array | Le paramètre id envoyé est absent ou n'est pas de type integer | {"errors": "Route id is not an integer"} | 
| 400 | array | Le dossier est en dehors de la portée de l'utilisateur connecté | {"errors": "Folder out of perimeter"} | 
Ajout de ressources par id
Route
POST /rest/folders/{id}/resources
Paramètres
Body
| Valeur | Type | Obligatoire | Description | 
| resources | array | Oui | Ressources à ajouter | 
{
    "resources": [112]
}
Retour
{
    "countResources": 1
}
| Code Http | Type | Description | Exemple | 
| ̀ 200 | array | Les ressources ont bien été ajoutées |  | 
| 400 | array | Le paramètre id envoyé est absent ou n'est pas de type integer | {"errors": "Route id is not an integer"} | 
| 400 | array | Les ressources envoyées sont vides ou ne sont pas de type array | {"errors": "Body resources is empty or not an array"} | 
| 400 | array | Le dossier est en dehors de la portée de l'utilisateur connecté | {"errors": "Folder out of perimeter"} | 
| 400 | array | Les ressources sont en dehors du périmètre | {"errors": "Resources out of perimeter"} | 
Suppression de ressources par id
Route
DELETE /rest/folders/{id}/resources
Paramètres
| Valeur | Type | Obligatoire | Description | 
| id | integer | Oui | Identifiant du dossier | 
Body
| Valeur | Type | Obligatoire | Description | 
| resources | array | Oui | Ressources à supprimer | 
{
    "resources":[107]
}
Retour
{
    "countResources" : 5
}
| Code Http | Type | Description | Exemple | 
| ̀ 204 | array | Les ressources ont bien été supprimées |  | 
| 400 | array | Le paramètre id envoyé est absent ou n'est pas de type integer | {"errors": "Route id is not an integer"} | 
| 400 | array | Les ressources envoyées sont vides ou ne sont pas de type array | {"errors": "Body resources is empty or not an array"} | 
| 400 | array | Le dossier est en dehors de la portée de l'utilisateur connecté | {"errors": "Folder out of perimeter"} | 
| 400 | array | Les ressources sont en dehors du périmètre | {"errors": "Resources out of perimeter"} | 
Epinglement d'un dossier
Route
POST /rest/folders/{id}/pin
Paramètres
| Valeur | Type | Obligatoire | Description | 
| id | integer | Oui | Identifiant du dossier | 
Retour
| Code Http | Type | Description | Exemple | 
| 204 | array | Le dossier a bien été épinglé |  | 
| 400 | array | Le paramètre id ne correspond à aucun dossier ou n'est pas de type integer | {"errors": "Route id not found or is not an integer"} | 
| 400 | array | Dossier non trouvé ou en dehors du périmètre de l'utilisateur connecté | {"errors": "Folder not found or out of your perimeter"} | 
| 400 | array | Le dossier est déjà épinglé | {"errors": "Folder is already pinned"} | 
Récupérer les dossiers épinglés
Route
GET /rest/pinnedFolders
Retour
Exemple de retour :
{
    "folders": [
        {
            "name": "Archives",
            "id": 15,
            "label": "Archives",
            "public": true,
            "user_id": 21,
            "parent_id": 1,
            "level": 1,
            "countResources": 0
        },
        {
            "name": "Compétences fonctionnelles",
            "id": 1,
            "label": "Compétences fonctionnelles",
            "public": true,
            "user_id": 21,
            "parent_id": null,
            "level": 0,
            "countResources": 0
        }
    ]
}
| Code Http | Type | Description | Exemple | 
| 200 | array | Les dossiers épinglés sont retournés | 
Désépinglement d'un dossier
Route
DELETE /rest/folders/{id}/unpin
Paramètres
Body
| Valeur | Type | Obligatoire | Description | 
| id | integer | Oui | Identifiant du dossier | 
Retour
| Code Http | Type | Description | Exemple | 
| 204 | array | Le dossier a bien été désépinglé |  | 
| 400 | array | Le paramètre id ne renvoie à aucun dossier ou n'est pas de type integer | {"errors": "Route id not found or is not an integer"} | 
| 400 | array | Le dossier n'a pas été trouvé ou est en dehors de la portée de l'utilisateur connecté | {"errors": "Folder out of perimeter"} | 
| 400 | array | Le dossier n'est pas épinglé | {"errors": "Folder is not pinned"} |