Attachments
Création d'une pièce jointe
Route
POST /rest/attachments
Paramètres
Body
| Valeur | Type | Obligatoire | Description | 
| title | string | Non | Sujet de la pièce jointe | 
| chrono | string | Non | Numéro chrono, si vide sera généré | 
| resIdMaster | int | Oui | Identifiant du courrier auquel est rattaché la pièce jointe (res_letterbox.res_id) | 
| type | string | Oui | Type de pièce jointe | 
| status | string | Non | Statut de la pièce jointe ("A_TRA", "TRA" ou "SIGN"), si vide sera "à traiter" | 
| encodedFile | base64 | Oui | Fichier encodé en base64 | 
| format | string | Oui | Format du fichier transmis | 
| originId | int | Non | Identifiant de la pièce jointe originelle (à transmettre lors de la création d'une version ou d'une réponse signée) | 
| recipientId | int | Non | Identifiant du contact de la pièce jointe (users.id ou contacts.id) | 
| recipientType | string | Non | Type du contact ("user" ou "contact") | 
| typist | int | Non | Identifiant du créateur de la pièce jointe (users.id) | 
| validationDate | date | Non | Date de retour attendue | 
| effectiveDate | date | Non | Date de retour effective | 
| externalId | array | Non | Identifiants externes | 
Exemple
Enregistrement d'une pièce jointe ayant pour sujet "Une lettre à envoyer" :
{
    "title" : "Une lettre à envoyer",
    "chrono" : "MAARCH/2019D/24",
    "resIdMaster" : 92,
    "type" : "response_project",
    "format" : "PDF",
    "encodedFile": "JVBERi0xLjQgLi4u",
    "externalId" : {"companyId" : "123456789"}
}
Retour
| Code Http | Type | Description | Exemple | 
| 200 | array | La pièce jointe a bien été créé | ['id' => 123] | 
| 400 | array | Un paramètre obligatoire est manquant | ['errors' => 'Bad Request'] | 
| 500 | array | Une erreur s'est produite | ['errors' => '[AttachmentController create] ...'] | 
Récupération des pièces jointes associées à un courrier (trié par date de modification décroissante)
Route
GET /rest/resources/{resId}/attachments
Paramètres
URL
| Valeur | Type | Obligatoire | Description | 
| resId | int | Oui | Identifiant du courrier | 
| limit | int | Non | Nombre de pièce jointe retournée au maximum | 
Retour
| Code Http | Type | Description | Exemple | 
| 200 | array | Informations liées aux pièces jointes du courrier | ['attachments' => '[...]'] | 
| 403 | array | Document hors du périmètre de l'utilisateur | ['errors' => 'Document out of perimeter'] | 
| 403 | array | Le paramètre 'limit' n'est pas un entier | ['errors' => 'Query limit is not an integer'] | 
Données
| Valeur | Type | Description | 
| attachments | array | Liste des pièce jointes du courrier | 
Données attachments
| Valeur | Type | Description | 
| resId | int | Identifiant de la pièce jointe | 
| chrono | string | Numéro chrono de la pièce jointe | 
| title | string | Objet de la pièce jointe | 
| format | string | Extension de la pièce jointe | 
| creationDate | timestamp without time zone | Date de création de la pièce jointe | 
| modificationDate | timestamp without time zone | Date de dernière modification de la pièce jointe | 
| modifiedBy | string | Nom de la dernière personne ayant modifié la pièce jointe | 
| relation | int | Numéro de version de la pièce jointe | 
| status | string | Statut de la pièce jointe | 
| type | string | Identifiant du type de la pièce jointe | 
| typeLabel | string | Libellé du type de la pièce jointe | 
| typistLabel | string | Prénom Nom du créateur de la pièce jointe | 
| typist | integer | Identifiant du créateur de la pièce jointe | 
| inSignatureBook | boolean | Indique si la pièce jointe est intégrée au parapheur | 
| inSendAttach | boolean | Indique si la pièce jointe est intégrée aux envois Maileva | 
Exemple
{
  "attachments": [
    {
      "resId": 3825,
      "chrono": "MAARCH/2020D/112",
      "title": "Un courrier à enregistrer",
      "typist": 19,
      "modifiedBy": "",
      "creationDate": "2020-03-20 15:49:51.595809",
      "modificationDate": null,
      "relation": 1,
      "status": "A_TRA",
      "type": "response_project",
      "inSignatureBook": true,
      "inSendAttach": false,
      "typistLabel": "Barbara BAIN",
      "typeLabel": "Projet de réponse",
      "canConvert": true
    }
  ],
  "mailevaEnabled": false
}
Route
GET /rest/attachments/{id}/content
Paramètres
URL
| Valeur | Type | Obligatoire | Description | 
| id | int | Oui | Identifiant de la pièce jointe | 
| mode | string | Non | Format du fichier retourné. Valeurs possibles : base64 ou vide | 
Retour
| Code Http | Type | Description | Exemple | 
| 200 | flux | Données du fichier rétournées dans une chaîne | Flux pdf | 
| 403 | array | Document hors du périmètre de l'utilisateur | ['errors' => 'Document out of perimeter'] | 
| 403 | array | La pièce jointe n'existe pas | ['errors' => 'Attachment not found'] | 
| 400 | array | La zone de stockage des pièces jointes n'existe pas | ['errors' => 'Docserver does not exist'] | 
| 400 | array | L'empreinte numérique du fichier ne correspond pas à celui de la base de données | ['errors' => 'Fingerprints do not match'] | 
| 404 | array | Le fichier de de la pièce jointe est introuvable | ['errors' => 'Attachment not found on docserver'] | 
| 404 | array | La fichier pdf de la pièce jointe n'a pas pu être renvoyé | ['errors' => 'Document not found on docserver'] | 
Données
Si mode est vide :  
| Valeur | Type | Description | 
| Flux pdf | flux | Flux pdf | 
Si mode est base64 : 
| Valeur | Type | Description | 
| encodedDocument | string | Contenu fichier encodé en base64 | 
| originalFormat | string | Extension du fichier original | 
| filename | string | Nom de la pièce jointe | 
| mimeType | string | Mime type du fichier retourne | 
| signatoryId | int | Identifiant du signataire (si pièce jointe signée) | 
Récupération de l'imagette de la pièce jointe
Route
GET /rest/attachments/{id}/thumbnail
Paramètres
URL
| Valeur | Type | Obligatoire | Description | 
| id | int | Oui | Identifiant de la pièce jointe | 
Retour
| Code Http | Type | Description | Exemple | 
| 200 | flux | Données du fichier rétournées dans une chaîne | Flux image | 
| 403 | array | Document hors du périmètre de l'utilisateur | ['errors' => 'Document out of perimeter'] | 
| 403 | array | La pièce jointe n'existe pas | ['errors' => 'Attachment not found'] | 
| 400 | array | La zone de stockage des imagettes n'existe pas | ['errors' => 'Docserver does not exist'] | 
| 404 | array | Le fichier imagette de la pièce jointe est introuvable | ['errors' => 'Thumbnail not found on docserver'] | 
Données
| Valeur | Type | Description | 
| Flux image | flux | Flux image | 
Récupération des types de pièce jointes
Route
GET /rest/attachmentsTypes
Retour
| Code Http | Type | Description | Exemple | 
| 200 | array | Informations des types | ['attachment_types' => '[...]'] | 
| 500 | array | Erreur serveur | ['errors' => '...'] | 
Données
| Valeur | Type | Description | 
| attachmentTypes | array | Liste des types de pièce jointe disponibles pour l'application | 
[identifiant du type de pièce jointe] =>
| Valeur | Type | Description | 
| id | integer | Identifiant technique du type de pièce jointe | 
| typeId | string | Identifiant texte du type de pièce jointe | 
| label | string | Nom du type de pièce jointe | 
| icon | string | Lettre icone (Utilisé dans le parapheur) | 
| signable | boolean | Flag si le type de pièce jointe peut être signé dans le parapheur | 
| visible | boolean | Flag si le type de pièce peut être utilisé graphiquement dans le logiciel | 
| chrono | boolean | Flag indiquant si un numéro chrono sera généré à la création d'une pièce jointe avec ce type | 
| emailLink | boolean | Flag indiquant que les pièces jointe de ce type seront ajoutées par défaut à l'envoi d'un mail | 
| versionEnabled | boolean | Flag indiquant s'il est possible de créér une nouvelle version | 
| newVersionDefault | boolean | Permet de cocher par défaut une nouvelle version | 
Exemple
{
  "attachmentsTypes": {
    "response_project": {
      "id": 1,
      "typeId": "response_project",
      "label": "Projet de réponse",
      "visible": true,
      "emailLink": true,
      "signable": true,
      "icon": "R",
      "chrono": true,
      "versionEnabled": true,
      "newVersionDefault": true
    },
    "signed_response": {
      "id": 2,
      "typeId": "signed_response",
      "label": "Réponse signée",
      "visible": false,
      "emailLink": true,
      "signable": false,
      "icon": "",
      "chrono": true,
      "versionEnabled": true,
      "newVersionDefault": true
    }
  }
}
Récupération d'une pièce jointe en fonction du numéro chrono
Route
GET /rest/attachmentsInformations?chrono={chrono}
Paramètres
URL
| Valeur | Type | Obligatoire | Description | 
| chrono | string | Oui | Numéro chrono de la pièce jointe | 
Retour
| Code Http | Type | Description | Exemple | 
| 200 | array | Informations liées à la pièce jointe | ['resId' => 3825, ...] | 
| 400 | array | Numéro chrono non défini | ['errors' => 'Query chrono is not set'] | 
| 403 | array | Document hors du périmètre de l'utilisateur | ['errors' => 'Document out of perimeter'] | 
Données
| Valeur | Type | Description | 
| resId | int | Identifiant de la pièce jointe | 
| resIdMaster | int | Identifiant du courrier principal | 
| title | string | Objet de la pièce jointe | 
| status | string | Statut de la pièce jointe | 
Exemple
{
  "resId": 3825,
  "resIdMaster": 2349,
  "status": "A_TRA",
  "title": "Réponse à votre demande"
}