# API-Vitam - Access version v1

https://api.vitam.gouv.fr/access-external/{version}

- version: required(v1)

### Avertissements

Cette version d'API présente des fonctionnalités sous différents statuts :

- Supportées : rien n'est spécifié, la fonctionnalité ou la donnée est supportée

Pour le détail du modèle de chaque collection, se référer à la documentation du modèle de données.

### Licence

Ce document est distribué sous les termes de la Licence Ouverte V2.0

### API Access

L'API d'Accès propose les points d'entrées et les méthodes pour atteindre, requêter et récupérer les informations depuis les Units et les Objects.

Cette API est globalement reproduite dans tous les autres points d'accès lorsque l'accès à des Units et Objects est nécessaire. Les fonctionnalités offertes peuvent par contre varier (droit en modification, effacement, ...) selon le contexte.

## API Access externe

Dans le projet Vitam, Les API externes supportent le POST-X-HTTP-OVERRIDE=GET. Les API internes ne supportent que le GET.

## Units api

Units est le point d'entrée pour toutes les descriptions d'archives. Celles-ci contiennent les métadonnées de description et les métadonnées archivistiques (métadonnées de gestion).

Une Unit peut être de 3 types :

- "ingest" (unité archivistique classique),
- "holding" (unité archivistique d'arbre de positionnement)
- "filing" (unité archivistique de plan de classement). Les métadonnées de ces unités peuvent tout aussi bien décrire un dossier qu'un groupe d'objet lié. Les Units peuvent être organisées en arborescence et peuvent posséder :
- Plusieurs racines dans l'arborescence (Unit de plus haut niveau)
- Plusieurs parents directs (un dossier peut être rattaché à plusieurs dossiers)

Il s'agit d'une représentation dite de "graphe dirigé sans cycle" (DAG en Anglais pour "Directed Acyclic Graph").

Pour le model SEDA, il est équivalent à l'ArchiveUnit, notamment pour les parties Content et Management. Pour l'Isad(G) / EAD, il est équivalent à Description Unit.

Au plus, un seul groupe d'objets d'archives (Objects) est attaché à une Unit. Cela signifie que si une Unit doit avoir plus d'un groupe d'objets d'archive attaché, vous devez spécifier des sous-Units à l'Unit principale, chaque sous-Unit n'ayant qu'un groupe d'objets d'archives attaché. Un même groupe d'objets d'archives peut par contre être attaché à de multiples Units.

Aucun effacement n'est autorisé, ni aucune mise à jour complète (seules les mises à jours partielles sont autorisées via la commande POST via un update de masse). Les mises à jour des Unit doivent être réalisées via des mises à jour en masse, l'API d'update unitaire étant dépréciée.

### Structuration des métadonnées

La structuration d'un Unit est la suivante :

    {
      "#id": "UnitId",
      "#tenant": "tenantId",
      "#version": 1,
      "#unitType" : "HOLDING_UNIT (arbre), FILING_UNIT (Plan) ou INGEST (ArchiveUnit standard)"
      //Métadonnées du content
      "DescriptionLevel": "Fonds",
      "Title": "titre",
      "Description": "description du Unit",
      "#Management": {
        "StorageRule": {},
        "AppraisalRule": {},
        "AccessRule": {},
        "DisseminationRule": {},
        "ReuseRule": {},
        "ClassificationRule": {},
        "HoldRule": {},
        "NeedAuthorization": false // Accès nécessitant une autorisation explicite
      },
      "#unitups": [ "unitParentId", "unitParentId"], // liste des parents immédiats
      "#min": 1,
      "#max": 1,
      "#object": "objectId",
      "#nbunits": 1, // Nombre de Unit fils
      "#operations" : [ "id", "id" ], // liste des opérations auxquelles cette AU a participées
      "#allunitsups": [ "unitParentId", "unitParentId"], // liste de tous les parents jusqu'au sommet
      "#storage": { "#nbc": 2  } // information de stockage,
      "#originating_agency": "originationAgencyId",
      "#originating_agencies": [ "originationAgencyId" ],
      "#operations" : [ "operationId" ] // liste des opérations auxquelles cette AU a participées

## Objects api

/units/{idu}/objects est le point d'entrée pour la recherche sur les groupes d'objets associés à une unité archivistique dont l'identifiant est passé en paramètre.

/objects est le point d'entrée pour la recherche sur tout les groupes d'objets.

Ces points d'entrée permettent la recherche sur :

- tous les groupes objets, qui contiennent les métadonnées techniques (nom des objets, format, type MIME...)
- tous les objets binaires (des fichiers) non binaires (des références à des objets d'archives physiques ou externes au système).

Un Groupe d'Objects peut posséder de 1 à N objets. Chaque objet a un usage et une version dans son groupe d'objet. Ces distinctions permettent de différencier des usages comme version de conservation, version de diffusion...

Il peut exister plusieurs versions de l'objet pour un même usage (pour l'original numérique notamment), au fur et à mesure du cycle de vie du Groupe d'Objects. Par exemple l'objet d'usage+version "BinaryMaster_1" est la version 1 de l'usage BinaryMaster, le "BinaryMaster_2" est la version 2 de l'usage BinaryMaster. Dans le modèle de données de la solution logicielle Vitam, cet usage correspond au champ "qualifier".

Pour le model SEDA, il est équivalent à un DataObjectGroup. Pour l'EAD, il est équivalent à un Digital Archive Object Group or Set.

Chaque Groupe d'Objets doit être attaché à au moins un parent Unit.

Seul l'accès est autorisé (GET/POST en override de GET).

Chaque Objet n'est lié qu'à un seul Groupe d'objets. Chaque Objet a un qualifier (spécifiable via #qualifiers dans le DSL pour l'accès métadonnées et X-Qualifier en Header pour l'accès aux objets binaires) :

- PhysicalMaster : il s'agit de l'original papier ou physique s'il existe
- BinaryMaster : il s'agit de l'original numérique s'il existe
- Dissemination : il s'agit d'une version adaptée à la diffusion via le réseau et l'usage dans des navigateurs
- Thumbnail : il s'agit d'une version adaptée à la diffusion dans une taille et une qualité correspondant à une vignette (utile lors de l'affichage d'une liste)
- TextContent : il s'agit d'une version ne contenant que le texte du document, sans la mise en forme (son usage est en prévision du futur, par exemple pour des opérations d'analyses sémantiques)

Ces qualifiers peuvent être utilisés dans une requête GET en conjonction avec le Header Accept: application/octet-stream pour accéder en lecture à un usage particulier.

### Structuration des métadonnées

A noter: la structuration va changer dans la prochaine release

La structuration d'un Object est la suivante :

    {
      "#id": "ObjectId",
      "#tenant": "tenantId",
      //Métadonnées de l'Object
      "FileInfo": {
        "Filename": "filename",
        "LastModified": "date",
        "GPS": {}
      },
      "#qualifiers": [{
        "qualifier": "PhysicalMaster",
        "#nbc": 1,
        "versions": [
          {
            "#id": "abcdef",
            "DataObjectGroupId": "abcdef",
            "DataObjectVersion": "PhysicalMaster_1",
            "PhysicalDimensions": {},
            "PhysicalId": {},
            "xxx": "" // autres informations
          }
        ]},
        {
        "qualifier": "BinaryMaster",  // Version numérique
        "#nbc": 1, // nombre de versions
        "versions": [
          {
            "#id": "abcdef",
            "#storage" : {// informations sur le stockage de l'objet}
            "DataObjectGroupId": "abcdef",
            "DataObjectVersion": "BinaryMaster_1",
            "MessageDigest": "algorithme digest", // empreinte et algorithme d'empreinte de l'objet
            "Algorithm": "SHA-512",
            "FileInfo": {// informations du fichier},
            "Size": 10, // taille de l'objet
            "Uri": "Content/uri", // uri de l'objet
            "FormatIdentification": {
              "FormatLitteral": "format Literral",
              "MimeType": "mimetype",
              "FormatId": "pronomId"
            },
            "OtherMetadata": {
              // autres métadonnées non classées
            }
          }
        ]
        },
        {
          "qualifier": "Dissemination",  // Version de diffusion
          "#nbc": 1, // nombre de versions
          "versions": [
            {//idem à BinaryMaster}
          ]
        },
        {
          "qualifier": "TextContent",  // Contenu brut
          "#nbc": 1, // nombre de versions
          "versions": [
            {//idem à BinaryMaster}
          ]
        },
        {
          "qualifier": "Thumbnail",  // Vignette
          "#nbc": 1, // nombre de versions
          "versions": [
            {//idem à BinaryMaster}
          ]
        }
      ],
      "#unitups": [ "unitParentId", "unitParentId"],
      "#nbobjects": 1, // Nombre de versions d'objets contenus pour tous les usages
      "#storage": { "#nbc": 2  }, // information de stockage,
      "#originating_agency": "originationAgencyId",
      "#originating_agencies": [ "originationAgencyId" ],
      "#operations" : [ "operationId" ] // liste des opérations auxquelles ce groupe d'objets a participées
    }

Note : A l'avenir, à l'intérieur d'une version d'usage, et pour chaque version (pour les BinaryMaster notamment), un contexte sera ajouté à la structure de l'Object afin de pouvoir y introduire des données de contexte (version du référentiel Pronom par exemple...).

## Dipexport api

/dipexport (en v1 ou en v2) sont les points d'entrée permettant l'export sous forme de DIP (paquet d'information diffusé ou Dissemination Information Package en anglais) d'une sélection d'unités archivistiques.

Important : Deux actions sont disponibles. La première permet de lancer un processus de génération d'un DIP. La deuxième permet de télécharger le fichier généré par le processus précédent, une fois terminé.

### Champs d'application sur les Units

Les principes sont les suivants :

- Le POST peut être utilisé pour des opérations de mises à jour en masse. Il peut aussi être utilisé avec le header X-Http-Method-Override: GET pour réaliser un GET avec un BODY.
- Le PUT est utilisé pour réaliser un update partiel (déprécié), à partie de la release 16, le POST (massUpdate) doit être utilisé pour effectuer une mise à jour d'unités archivistiques.
- Pas de DELETE car ceci relève de l'élimination
- GET correspond à la recherche ou l'accès selon la présence d'un body ou non
- Un seul Object par Unit max
- Une requête depuis un Unit signifie recherche relative depuis celui-ci (roots = this)
- Accept: application/json signifie les métadonnées au format Json
- Accept: application/octet-stream signifie le retour du contenu binaire de l'Object

### ArchiveUnits

API qui définit les requêtes pour accéder aux Unités d'archives. La requête utilise le langage de requête DSL de Vitam en entrée et retourne une liste d'Unités d'archives selon le DSL Vitam en cas de succès.

#### /units get post

get

Requête qui retourne des résultats contenant des Unités d'archives. La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée et retourne une liste d'Unités d'archives selon le DSL Vitam en cas de succès.

Permissions requises:

- units:read

post

Requête qui déclanche la mise à jour de masse des métadonnées descriptives des unités archivistiques. Sans le Header, le point d'API est utilisé pour mettre à jour en masse les métadonnées descriptives des unités archivistiques. Possibilité de remplacer une chaîne de caractères par une autre vià l'opération $setregex.

Avec le Header, La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée et retourne une liste d'Unités d'archives selon le DSL Vitam en cas de succès. La requête utilise POST avec X-Http-Method-Override: GET Permissions requises:

- units:update

#### get /units

Requête qui retourne des résultats contenant des Unités d'archives. La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée et retourne une liste d'Unités d'archives selon le DSL Vitam en cas de succès.

Permissions requises:

- units:read

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

- Accept: required(one of application/json, application/zip, application/octet-stream)

  Allow to specify if a result must contain only Metadata ('application/json') or only the Objects with a binary content ('application/octet-stream').

### Body

Media type: application/json

Type: object

Properties

- $roots: required(array of string)

  Contient les racines de la recherche

- $query: required(array of object)

  Contient plusieurs requêtes

  Items:

- $filter: (object)

  Contient les filtres à appliquer

  - $offset: (integer - minimum: 1 - maximum: 100000)
  - $limit: (integer - minimum: 1 - maximum: 100000)
  - $orderby: (object)
  - $track_total_hits: (boolean)

    Devrait être setté à "true", au niveau de la configuration, pour avoir une précision sur les résultats de recherche dépassant 10k données (par défaut "false").

- $projection: required(object)

  Contient la projection à appliquer

  - $fields: (object)
- $facet: (array of DslTypes.Facet)

  Contains facet if requested

  Items: Facet

  - $name: required(string)
  - $terms: (object)
    - $field: required(string)

      Example:

          #qualifiers.versions.FormatIdentification.MimeType

    - $subobject: required(string)

      Example:

          #qualifiers.versions

    - $size: required(number)

      Example:

          20

    - $order: required(string)

      Example:

          ASC

  - $filters: (object)
    - $query_filters: required(array of object)

      Items: items

      - $name: required(string)
      - $query: required(object)
  - $date_range: (object)
    - $subobject: required(string)

      Example:

          #qualifiers.versions

    - $field: required(string)

      Example:

          #qualifiers.versions.FileInfo.LastModified

    - $format: required(string)

      Example:

          YYYY

    - $ranges: required(array of object - minItems: 1 - maxItems: 2)

      Items: items

      - $from: required(string)

        Example:

            2017

      - $to: required(string)

        Example:

            2020

  - $sum: (object)
    - $field: required(string)

      Example:

          #qualifiers.versions.Size

    - $subobject: required(string)

      Example:

          #qualifiers.versions

Example:

    {
      "$roots": [],
      "$query": [
        {
          "$eq": {
            "#tenant": "0"
          }
        }
      ],
      "$filter": {
        "$limit": 5
      },
      "$projection": {
        "$fields": {
          "Title": 1
        }
      },
      "$facets": [
        {
          "$name": "ObjectTypeFacet",
          "$terms": {
            "$field": "DescriptionLevel",
            "$size": 20,
            "$order": "ASC"
          }
        }
      ]
    }

## HTTP status code 200

Renvoie la liste des résultats d'Unités d'archives correspondant à la requête DSL

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $facetResults: (array of object)

  Contient la resultat facet

  Items: items

  - name: required(string)

    Example:

        facetName

  - buckets: required(array of any)

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

- $context: required(object)

  Contient la requête DSL liée à la réponse

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $filter: (object)

    Contient les filtres à appliquer

    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: required(object)

    Contient la projection à appliquer

    - $fields: (object)
  - $facet: (array of DslTypes.Facet)

    Contains facet if requested

    Items: Facet

    - $name: required(string)
    - $terms: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.FormatIdentification.MimeType

      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $size: required(number)

        Example:

            20

      - $order: required(string)

        Example:

            ASC

    - $filters: (object)
      - $query_filters: required(array of object)

        Items: items

        - $name: required(string)
        - $query: required(object)
    - $date_range: (object)
      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $field: required(string)

        Example:

            #qualifiers.versions.FileInfo.LastModified

      - $format: required(string)

        Example:

            YYYY

      - $ranges: required(array of object - minItems: 1 - maxItems: 2)

        Items: items

        - $from: required(string)

          Example:

              2017

        - $to: required(string)

          Example:

              2020

    - $sum: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.Size

      - $subobject: required(string)

        Example:

            #qualifiers.versions

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$filter": {
          "$limit": 100,
          "$offset": 50
        },
        "$projection": {
          "$fields": {
            "myField1": 1,
            "myField2.mySubField": 1
          }
        }
      }

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $results: required(array of object)

  Contient la list des résultats

  Items:

Examples:

-default-response:

    {
      "httpCode": 200,
      "$hits": {
        "total": 13,
        "size": 3,
        "offset": 10,
        "limit": 1000
      },
      "$context": {
        "$roots": [ "id0" ],
        "$query": [
          { "$match": { "title": "titre" }, "$depth": 4 }
        ],
        "$filter": { "$limit": 1000, "$offset": 10 },
        "$projection": { "$fields": { "#id": 1, "title": 1, "#type": 1, "#sector": 1, "#parents": 1, "#object": 1 } }
      },
      "$results": [
        {
          "#id": "id1", "title": "titre 1", "#type": "DemandeCongés",
          "#parents": [ { "#id": "id4", "#type": "DossierCongés" } ],
          "#object": { "#id": "id101", "#type": "Document",
            "#qualifiers": { "BinaryMaster": 5, "Dissemination": 1, "Thumbnail": 1, "TextContent": 1 } }
        },
        {
          "#id": "id2", "title": "titre 2", "#type": "DemandeCongés",
          "#parents": [ { "#id": "id4", "#type": "DossierCongés" } ],
          "#object": { "#id": "id102", "#type": "Document",
            "#qualifiers": { "BinaryMaster": 5, "Dissemination": 1, "Thumbnail": 1, "TextContent": 1 } }
        },
        {
          "#id": "id3", "title": "titre 3", "#type": "DemandeCongés",
          "#parents": [ { "#id": "id4", "#type": "DossierCongés" } ],
          "#object": { "#id": "id103", "#type": "Image",
            "#qualifiers": { "BinaryMaster": 3, "Dissemination": 1, "Thumbnail": 1, "TextContent": 1 } }
        }
      ]
    }

-facet-response:

    {
      "httpCode": 200,
      "$hits": {
        "total": 10000,
        "offset": 0,
        "limit": 5,
        "size": 5
      },
      "$results": [
        {
          "Title": "Biographie_du_ministre_du_commerce"
        },
        {
          "Title": "Assemblée Parlementaire"
        },
        {
          "Title": "BAD0431E2C5E80E5BD42D547A3ED59665555.odt"
        },
        {
          "Title": "Pouvoir_executif"
        },
        {
          "Title": "sous fonds 1 nouveau jeu de test"
        }
      ],
      "$facetResults": [
        {
          "name": "ObjectTypeFacet",
          "buckets": [
            {
              "value": "Item",
              "count": 50860
            },
            {
              "value": "RecordGrp",
              "count": 1398
            },
            {
              "value": "File",
              "count": 3
            },
            {
              "value": "Fonds",
              "count": 2
            },
            {
              "value": "Subfonds",
              "count": 2
            }
          ]
        }
      ],
      "$context": {
        "$roots": [],
        "$query": [
          {
            "$eq": {
              "#tenant": "0"
            }
          }
        ],
        "$filter": {
          "$limit": 5
        },
        "$projection": {
          "$fields": {
            "Title": 1
          }
        },
        "$facets": [
          {
            "$name": "ObjectTypeFacet",
            "$terms": {
              "$field": "DescriptionLevel",
              "$size": 20,
              "$order": "ASC"
            }
          }
        ]
      }
    }

## HTTP status code 400

Bad Request, syntax might be erroneous

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 405

Method Not Allowed, requested resource is not allowed

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 500

Internal Server Error, the server encountered an unexpected condition which prevented it from fulfilling the request

#### post /units

Requête qui déclanche la mise à jour de masse des métadonnées descriptives des unités archivistiques. Sans le Header, le point d'API est utilisé pour mettre à jour en masse les métadonnées descriptives des unités archivistiques. Possibilité de remplacer une chaîne de caractères par une autre vià l'opération $setregex.

Avec le Header, La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée et retourne une liste d'Unités d'archives selon le DSL Vitam en cas de succès. La requête utilise POST avec X-Http-Method-Override: GET Permissions requises:

- units:update

### Headers

- X-Http-Method-Override: (GET)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Examples:

UnitsBatchUpdate:

    {
      "$roots": [],
      "$query": [ { "$eq": { "#id": "{{guid}}" } }
      ],
      "$action": [
        {
          "$setregex": {
            "$target": "Title",
            "$controlPattern": "Dessert placé",
            "$updatePattern": "Dessert glacé"
          }
        }
      ]
    }

BatchUpdateObject:

    {
      "$roots": [],
      "$query": [
        {
          "$in": {
            "#id": [
              "MY-AU-GUID"
            ]
          }
        }
      ],
      "$threshold": 10000,
      "$action": [
        {
          "$set": {
            "Gps": {
              "GpsLatitude": "lat is here",
              "GpsLongitude": "long is here"
            }
          }
        }
      ]
    }

BatchRemove:

    {
      "$roots": [],
      "$query": [
        {
          "$in": {
            "#id": [
              "MY-AU-GUID"
            ]
          }
        }
      ],
      "$threshold": 10000,
      "$action": [
        {
          "$unset": [
            "Description"
          ]
        }
      ]
    }

## HTTP status code 200

OK, operation in success

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 202

Renvoie le statut de l'opération de mise à jour

### Body

Media type: application/json

Type: any

## HTTP status code 400

Bad Request, syntax might be erroneous

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 403

Forbidden, requested action is forbidden

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 405

Method Not Allowed, requested resource is not allowed

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 500

Renvoie le statut final de l'opération en KO

### Body

Media type: application/json

Type: any

#### /units/stream get

get

Requête qui déclenche la récupération de toutes les unités d'archives dans un Json Stream.

Permissions requises:

- units:stream

#### get /units/stream

Requête qui déclenche la récupération de toutes les unités d'archives dans un Json Stream.

Permissions requises:

- units:stream

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

- Accept: required(one of application/json, application/zip, application/octet-stream)

  Allow to specify if a result must contain only Metadata ('application/json') or only the Objects with a binary content ('application/octet-stream').

### Body

Media type: application/json

Type: object

Properties

- $roots: required(array of string)

  Contient les racines de la recherche

- $query: required(array of object)

  Contient plusieurs requêtes

  Items:

- $projection: required(object)

  Contient la projection à appliquer

  - $fields: (object)

Example:

    {
      "$roots": [],
      "$query": [
        {
          "$gt": {
            "#approximate_creation_date": "2022-01-01"
          }
        }
      ],
      "$projection": {
        "$fields": {
        }
      },
      "$facets": [],
      "$threshold": 500000
    }

## HTTP status code 200

Renvoie la liste des résultats d'Unités d'archives correspondant à la requête DSL

### Headers

- X-Units-Count: required(number)

  nombre des unités archivestiques retournées dans le flux

  Example:

      141202

- X-Content-Length: required(number)

  la taille du flux de données

  Example:

      13978998

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/octet-stream

Type: array of object

Items:

Example:

    {"DescriptionLevel":"Item","Title":"Generated Archive Unit (31235)","Description":"Generated Archive Unit five three two one three","TransactedDate":"2018-02-01T17:36:35","#id":"aeaqaaaaaaga3nz4acpm4al7baut7qaaaaaq","#tenant":0,"#object":"aebaaaaaaaga3nz4acpm4al7bauhwmiaaaaq","#unitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#min":1,"#max":2,"#allunitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#management":{},"#unitType":"INGEST","#operations":["aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq"],"#opi":"aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq","#originating_agency":"Service_producteur","#originating_agencies":["Service_producteur"],"#storage":{"strategyId":"default"},"#version":0,"#sedaVersion":"2.1","#approximate_creation_date":"2022-02-17T15:18:55.037","#approximate_update_date":"2022-02-17T15:18:55.037"}
    {"DescriptionLevel":"Item","Title":"Generated Archive Unit (59325)","Description":"Generated Archive Unit five two three nine five","TransactedDate":"2018-02-01T17:36:52","#id":"aeaqaaaaaaga3nz4acpm4al7bauvo4yaaadq","#tenant":0,"#object":"aebaaaaaaaga3nz4acpm4al7baul2dyaaaaq","#unitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#min":1,"#max":2,"#allunitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#management":{},"#unitType":"INGEST","#operations":["aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq"],"#opi":"aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq","#originating_agency":"Service_producteur","#originating_agencies":["Service_producteur"],"#storage":{"strategyId":"default"},"#version":0,"#sedaVersion":"2.1","#approximate_creation_date":"2022-02-17T15:18:55.026","#approximate_update_date":"2022-02-17T15:18:55.026"}
    {"DescriptionLevel":"Item","Title":"Generated Archive Unit (5580)","Description":"Generated Archive Unit zero eight five five","TransactedDate":"2018-02-01T17:36:18","#id":"aeaqaaaaaaga3nz4acpm4al7bausldyaaada","#tenant":0,"#object":"aebaaaaaaaga3nz4acpm4al7bauecnaaaabq","#unitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#min":1,"#max":2,"#allunitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#management":{},"#unitType":"INGEST","#operations":["aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq"],"#opi":"aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq","#originating_agency":"Service_producteur","#originating_agencies":["Service_producteur"],"#storage":{"strategyId":"default"},"#version":0,"#sedaVersion":"2.1","#approximate_creation_date":"2022-02-17T15:18:55.031","#approximate_update_date":"2022-02-17T15:18:55.031"}
    {"DescriptionLevel":"Item","Title":"Generated Archive Unit (70396)","Description":"Generated Archive Unit six nine three zero seven","TransactedDate":"2018-02-01T17:36:59","#id":"aeaqaaaaaaga3nz4acpm4al7bauwc6iaaada","#tenant":0,"#object":"aebaaaaaaaga3nz4acpm4al7baunmjqaaaaq","#unitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#min":1,"#max":2,"#allunitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#management":{},"#unitType":"INGEST","#operations":["aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq"],"#opi":"aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq","#originating_agency":"Service_producteur","#originating_agencies":["Service_producteur"],"#storage":{"strategyId":"default"},"#version":0,"#sedaVersion":"2.1","#approximate_creation_date":"2022-02-17T15:18:55.038","#approximate_update_date":"2022-02-17T15:18:55.038"}
    {"DescriptionLevel":"Item","Title":"Generated Archive Unit (65588)","Description":"Generated Archive Unit eight eight five five six","TransactedDate":"2018-02-01T17:36:55","#id":"aeaqaaaaaaga3nz4acpm4al7bauvzsyaaaeq","#tenant":0,"#object":"aebaaaaaaaga3nz4acpm4al7baumv2iaaaaq","#unitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#min":1,"#max":2,"#allunitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#management":{},"#unitType":"INGEST","#operations":["aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq"],"#opi":"aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq","#originating_agency":"Service_producteur","#originating_agencies":["Service_producteur"],"#storage":{"strategyId":"default"},"#version":0,"#sedaVersion":"2.1","#approximate_creation_date":"2022-02-17T15:18:55.047","#approximate_update_date":"2022-02-17T15:18:55.047"}
    {"DescriptionLevel":"Item","Title":"Generated Archive Unit (78837)","Description":"Generated Archive Unit seven three eight eight seven","TransactedDate":"2018-02-01T17:37:03","#id":"aeaqaaaaaaga3nz4acpm4al7bauwqwaaaaaq","#tenant":0,"#object":"aebaaaaaaaga3nz4acpm4al7bauowvyaaaaq","#unitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#min":1,"#max":2,"#allunitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#management":{},"#unitType":"INGEST","#operations":["aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq"],"#opi":"aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq","#originating_agency":"Service_producteur","#originating_agencies":["Service_producteur"],"#storage":{"strategyId":"default"},"#version":0,"#sedaVersion":"2.1","#approximate_creation_date":"2022-02-17T15:18:55.034","#approximate_update_date":"2022-02-17T15:18:55.034"}
    {"DescriptionLevel":"Item","Title":"Generated Archive Unit (69248)","Description":"Generated Archive Unit eight four two nine six","TransactedDate":"2018-02-01T17:36:58","#id":"aeaqaaaaaaga3nz4acpm4al7bauwbdyaaaca","#tenant":0,"#object":"aebaaaaaaaga3nz4acpm4al7baunhryaaaaq","#unitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#min":1,"#max":2,"#allunitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#management":{},"#unitType":"INGEST","#operations":["aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq"],"#opi":"aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq","#originating_agency":"Service_producteur","#originating_agencies":["Service_producteur"],"#storage":{"strategyId":"default"},"#version":0,"#sedaVersion":"2.1","#approximate_creation_date":"2022-02-17T15:18:55.048","#approximate_update_date":"2022-02-17T15:18:55.048"}
    {"DescriptionLevel":"Item","Title":"Generated Archive Unit (49382)","Description":"Generated Archive Unit two eight three nine four","TransactedDate":"2018-02-01T17:36:47","#id":"aeaqaaaaaaga3nz4acpm4al7bauu63yaaadq","#tenant":0,"#object":"aebaaaaaaaga3nz4acpm4al7baukjqaaaaba","#unitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#min":1,"#max":2,"#allunitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#management":{},"#unitType":"INGEST","#operations":["aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq"],"#opi":"aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq","#originating_agency":"Service_producteur","#originating_agencies":["Service_producteur"],"#storage":{"strategyId":"default"},"#version":0,"#sedaVersion":"2.1","#approximate_creation_date":"2022-02-17T15:18:55.041","#approximate_update_date":"2022-02-17T15:18:55.041"}
    {"DescriptionLevel":"Item","Title":"Generated Archive Unit (5584)","Description":"Generated Archive Unit four eight five five","TransactedDate":"2018-02-01T17:36:18","#id":"aeaqaaaaaaga3nz4acpm4al7bausleaaaadq","#tenant":0,"#object":"aebaaaaaaaga3nz4acpm4al7bauecnyaaaba","#unitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#min":1,"#max":2,"#allunitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#management":{},"#unitType":"INGEST","#operations":["aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq"],"#opi":"aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq","#originating_agency":"Service_producteur","#originating_agencies":["Service_producteur"],"#storage":{"strategyId":"default"},"#version":0,"#sedaVersion":"2.1","#approximate_creation_date":"2022-02-17T15:18:55.042","#approximate_update_date":"2022-02-17T15:18:55.042"}
    {"DescriptionLevel":"Item","Title":"Generated Archive Unit (49383)","Description":"Generated Archive Unit three eight three nine four","TransactedDate":"2018-02-01T17:36:47","#id":"aeaqaaaaaaga3nz4acpm4al7bauu63yaaaeq","#tenant":0,"#object":"aebaaaaaaaga3nz4acpm4al7baukjqiaaaaq","#unitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#min":1,"#max":2,"#allunitups":["aeaqaaaaaaga3nz4acpm4al7baurv2aaaaia"],"#management":{},"#unitType":"INGEST","#operations":["aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq"],"#opi":"aeeaaaaaacga3nz4acqz2al7basvuyiaaaaq","#originating_agency":"Service_producteur","#originating_agencies":["Service_producteur"],"#storage":{"strategyId":"default"},"#version":0,"#sedaVersion":"2.1","#approximate_creation_date":"2022-02-17T15:18:55.042","#approximate_update_date":"2022-02-17T15:18:55.042"}

## HTTP status code 417

Expectation Failed, used in Validation when the required validation (X-Valid) is in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 500

Internal Server Error, the server encountered an unexpected condition which prevented it from fulfilling the request

#### /units/rules post

post

Requête qui déclenche la mise à jour de masse des métadonnées de gestion d'unités d'archives. La requête utilise un POJO spécifique pour effectuer la mise à jour des éléments de gestion.

Permissions requises:

- units:rules:update

#### post /units/rules

Requête qui déclenche la mise à jour de masse des métadonnées de gestion d'unités d'archives. La requête utilise un POJO spécifique pour effectuer la mise à jour des éléments de gestion.

Permissions requises:

- units:rules:update

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Example:

RulesUpdate:

    {
      "dslRequest": {
        "$roots": [],
        "$query": [ { "$eq": { "#id": "MY-AU-GUID" } } ],
        "$threshold": 10000
      },
      "ruleActions": {
        "add": [],
        "update": [],
        "delete": [
          {
            "HoldRule": {
              "Rules": [
                {
                  "Rule": "HOL-00001"
                }
              ]
            }
          }
        ]
      }
    }

## HTTP status code 202

Renvoie le statut de l'opération de mise à jour

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $results: required(array of StandardTypes.AsyncResponse)

  Contient la list des résultats

  Items: Réponse DSL

  - itemId: required(string)

    Contient le code retrour http

  - message: required(string)

    Contient le nombre de hits

  - globalStatus: required(string)

    Contient le code retrour http

  - statusMeter: required(array of number)

    lala

  - data: required(object)

    Contient le code retrour http

  - itemsStatus: required(object)

    Contient le code retrour http

  - evDetailData: required(string)

    Contient le code retrour http

  - globalState: required(string)

    Contient le code retrour http

  - subTaskStatus: required(object)

    Contient le code retrour http

  - lifecycleEnable: required(boolean)

    Contient le code retrour http

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $facetResults: (array of object)

  Contient la resultat facet

  Items:

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

- $context: (object)

  toto

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "offset": 0,
        "limit": 0,
        "size": 1
      },
      "$results": [
        {
          "itemId": "operationId",
          "message": "",
          "globalStatus": "STARTED",
          "statusMeter": [
            0,
            1,
            0,
            0,
            0,
            0,
            0
          ],
          "data": {},
          "itemsStatus": {},
          "evDetailData": "{}",
          "globalState": "RUNNING",
          "subTaskStatus": {},
          "lifecycleEnable": true
        }
      ],
      "$facetResults": [],
      "$context": {}
    }

## HTTP status code 500

Renvoie le statut final de l'opération en KO

### Body

Media type: application/json

Type: object

Properties

- httpCode: required(integer)

  Short code as in RFC 7231 (Http Status Codes).

- code: required(string)

  Vitam standard numerical code.

- context: required(string)

  Type of the task.

- state: required(string)

  Vitam standard litteral code.

- message: required(string)

  Vitam standard description message.

- description: required(string)

  Vitam detailed description of status.

Example:

    {
      "httpCode": 500,
      "code": "vitamcode",
      "context": "External Access",
      "state": "Input / Output",
      "message": "Access external bad request error",
      "description": "Internal Server Error"
    }

#### /units/computedInheritedRules post delete

Request Calcule/Supprime les règles héritées pour les unités archivistiques répondant aux critères de la requête DSL.

post

Request that will launch the computation

Permissions requises:

- computeInheritedRules:action

delete

Request that will delete the computation

Permissions requises:

- computeInheritedRules:delete

#### post /units/computedInheritedRules

Request that will launch the computation

Permissions requises:

- computeInheritedRules:action

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: any

Example:

    {
      "$query": [
        {
          "$eq": {
            "#opi": "aeeaaaaaagfex4j4aaqcqalmjv7flpiaaaaq"
          }
        }
      ]
    }

## HTTP status code 202

Renvoie le statut de l'opération de mise à jour

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: any

## HTTP status code 500

Renvoie le statut final de l'opération en KO

### Body

Media type: application/json

Type: any

#### delete /units/computedInheritedRules

Request that will delete the computation

Permissions requises:

- computeInheritedRules:delete

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: any

Example:

    {
      "$query": [
        {
          "$eq": {
            "#opi": "aeeaaaaaagfex4j4aaqcqalmjv7flpiaaaaq"
          }
        }
      ]
    }

## HTTP status code 202

Renvoie le statut de l'opération de mise à jour

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: any

## HTTP status code 500

Renvoie le statut final de l'opération en KO

### Body

Media type: application/json

Type: any

#### /units/{idu} get put

API qui définit les requêtes pour accéder à une Unité d'archive. La requête utilise le langage de requête DSL de Vitam en entrée et retourne une liste d'Unités d'archives selon le DSL Vitam en cas de succès.

get

Requête qui retourne une Unité d'archive. La requête utilise le langage de requête DSL de type recherche unitaire (GET BY ID) de Vitam en entrée et retourne une liste d'Unités d'archives contenant 1 seul résultat selon le DSL Vitam en cas de succès.

Permissions requises :

- units:id:read:json

put

[DEPRECATED] - Be careful, this endpoint is no longer acceptable for updating units. Use POST /units instead.
Requête qui modifie une Unité d'archive.
La requête utilise le langage de requête DSL de type modification unitaire (UPDATE BY ID) de Vitam en entrée et retourne le statut de la mise à jour en résultat selon le DSL Vitam en cas de succès.

Permissions requises:

- units:id:update

#### get /units/{idu}

Requête qui retourne une Unité d'archive. La requête utilise le langage de requête DSL de type recherche unitaire (GET BY ID) de Vitam en entrée et retourne une liste d'Unités d'archives contenant 1 seul résultat selon le DSL Vitam en cas de succès.

Permissions requises :

- units:id:read:json

### URI Parameters

- idu: required(string)

  Identifiant de l'unité d'archive.

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

- Accept: required(one of application/json, application/zip, application/octet-stream)

  Allow to specify if a result must contain only Metadata ('application/json') or only the Objects with a binary content ('application/octet-stream').

### Body

Media type: application/json

Type: object

Properties

- $projection: (object)

  Contient la projection à appliquer

  - $fields: (object)

Example:

    {
      "$projection": { "$fields": { "#id": 1, "title": 1, "#type": 1, "#parents": 1, "#object": 1 } }
    }

## HTTP status code 200

Renvoie la liste de résultats contenant 1 Unité d'archive correspondant à la requête DSL

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $context: required(object)

  Contient la requête DSL liée à la réponse

  - $projection: (object)

    Contient la projection à appliquer

    - $fields: (object)

  Example:

      {
        "$projection": {
          "$fields": {
            "myField1": 1,
            "myField2.mySubField": 1
          }
        }
      }

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $results: required(array of object)

  Contient la list des résultats

  Items:

- $facetResults: (array of object)

  Contient la resultat facet

  Items:

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "size": 1,
        "offset": 0,
        "limit": 10000
      },
      "$context": {
        "$projection": { "$fields": { "#id": 1, "title": 1, "#type": 1, "#parents": 1, "#object": 1 } }
      },
      "$results": [
        {
          "#id": "id1", "title": "titre 1", "#type": "DemandeCongés",
          "#parents": [ { "#id": "id4", "#type": "DossierCongés" } ],
          "#object": { "#id": "id101", "#type": "Document",
            "#qualifiers": { "BinaryMaster": 5, "Dissemination": 1, "Thumbnail": 1, "TextContent": 1 } }
        }
      ]
    }

## HTTP status code 400

Bad Request, syntax might be erroneous

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 403

Forbidden, requested action is forbidden

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

#### put /units/{idu}

[DEPRECATED] - Be careful, this endpoint is no longer acceptable for updating units. Use POST /units instead.
Requête qui modifie une Unité d'archive.
La requête utilise le langage de requête DSL de type modification unitaire (UPDATE BY ID) de Vitam en entrée et retourne le statut de la mise à jour en résultat selon le DSL Vitam en cas de succès.

Permissions requises:

- units:id:update

### URI Parameters

- idu: required(string)

  Identifiant de l'unité d'archive.

### Annotations

- deprecated

      "This method is deprecated and will be removed. You should use POST on /units instead (using massUpdate)."

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- $action: (array of object)

  Contient les actions de mise à jour à appliquer

  Items:

Example:

    {
      "$action": [ { "$set": { "NewField": "New value" } } ]
    }

## HTTP status code 200

Renvoie l'état d'execution de la modification correspondant à la requête DSL

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $context: required(object)

  Contient la requête DSL liée à la réponse

  - $action: (array of object)

    Contient les actions de mise à jour à appliquer

    Items:

  Example:

      {
        "$action": [
          {
            "$set": {
              "$myField1": "myValue"
            },
            "$unset": [
              "myField2"
            ]
          }
        ]
      }

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $results: required(array of object)

  Contient la list des résultats

  Items:

- $facetResults: (array of object)

  Contient la resultat facet

  Items:

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 0,
        "size": 0,
        "offset": 0,
        "limit": 0
      },
      "$context": {
        "$action": [{ "$set": { "NewField": "New value" } }]
      },
      "$results": []
    }

## HTTP status code 400

Bad Request, syntax might be erroneous

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 403

Forbidden, requested action is forbidden

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 405

Method Not Allowed, requested resource is not allowed

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

#### /units/{idu}/objects get post

API qui définit les requêtes pour accéder à l'Objet d'archives associé à l'Unité d'archives si elle existe. La requête utilise le langage de requête (DSL) de Vitam en entrée et retourne l'objet d'archives selon le DSL Vitam en cas de succès.

get

Requête qui retourne le résultat contenant un Object d'archives : ses métadonnées ou un de ses objets binaires. Dans le cas des métadonnées, la requête utilise le langage de requête DSL de type recherche unitaire (GET BY ID) de Vitam en entrée. 'Accept' header est 'application/octet-stream' (objet binaire) ou 'application/json' (métadonnées) Permissions requises:

- units:id:objects:read:json

ou

- units:id:objects:read:binary

post

Requête qui retourne le résultat contenant un Object d'archives : ses métadonnées ou un de ses objets binaires. Dans le cas des métadonnées, la requête utilise le langage de requête DSL de type recherche unitaire (GET BY ID) de Vitam en entrée. 'Accept' header est 'application/octet-stream' (objet binaire) ou 'application/json' (métadonnées) La requête utilise POST avec X-Http-Method-Override: GET.

#### get /units/{idu}/objects

Requête qui retourne le résultat contenant un Object d'archives : ses métadonnées ou un de ses objets binaires. Dans le cas des métadonnées, la requête utilise le langage de requête DSL de type recherche unitaire (GET BY ID) de Vitam en entrée. 'Accept' header est 'application/octet-stream' (objet binaire) ou 'application/json' (métadonnées) Permissions requises:

- units:id:objects:read:json

ou

- units:id:objects:read:binary

### URI Parameters

- idu: required(string)

### Headers

- Accept: required(one of application/octet-stream, application/json, application/zip)

  Allow to specify if a result must contain only Metadata ('application/json') or only the Objects with a binary content ('application/octet-stream').

- X-Qualifier: (one of BinaryMaster, Dissemination, Thumbnail, TextContent)

  L'usage est utilisée et obligatoire uniquement en présence de Accept: application/octet-stream. ONLY VALID with Accept application/octet-stream

- X-Version: (integer)

  La version est utilisée et obligatoire uniquement en présence de Accept: application/octet-stream. ONLY VALID with Accept application/octet-stream

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- $projection: (object)

  Contient la projection à appliquer

  - $fields: (object)

Example:

    {
      "$projection": { "$fields": { "#id": 1, "#qualifiers": 1, "#type": 1, "#parents": 1 } }
    }

## HTTP status code 200

Renvoie l'objet binaire (Returns the list of 1 Object matching the DSL query)

### Headers

- X-Qualifier: (one of PhysicalMaster, BinaryMaster, Dissemination, Thumbnail, TextContent)

  L'usage est utilisée et obligatoire uniquement en présence de Accept: application/octet-stream. ONLY VALID with Accept application/octet-stream

- X-Version: (integer)

  La version est utilisée et obligatoire uniquement en présence de Accept: application/octet-stream. ONLY VALID with Accept application/octet-stream

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/octet-stream

Type: any

Media type: application/json

Type: object

Properties

- $context: required(object)

  Contient la requête DSL liée à la réponse

  - $projection: (object)

    Contient la projection à appliquer

    - $fields: (object)

  Example:

      {
        "$projection": {
          "$fields": {
            "myField1": 1,
            "myField2.mySubField": 1
          }
        }
      }

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $results: required(array of object)

  Contient la list des résultats

  Items:

- $facetResults: (array of object)

  Contient la resultat facet

  Items:

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "size": 1,
        "offset": 0,
        "limit": 10000
      },
      "$context": {
        "$projection": { "$fields": { "#id": 1, "#qualifiers": 1, "#type": 1, "#parents": 1 } }
      },
      "$results": [
        {
          "#id": "id101", "#type": "Document",
          "#qualifiers": { "BinaryMaster": 5, "Dissemination": 1, "Thumbnail": 1, "TextContent": 1 },
          "#parents": [ { "#id": "id1", "#type": "DemandeCongés", "#sector": "RessourcesHumaines" } ]
        }
      ]
    }

## HTTP status code 400

Bad Request, syntax might be erroneous

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 403

Forbidden, requested action is forbidden

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 460

Data is not available for immediate access from tape storage offer. An Access Request is required to access Object.

#### post /units/{idu}/objects

Requête qui retourne le résultat contenant un Object d'archives : ses métadonnées ou un de ses objets binaires. Dans le cas des métadonnées, la requête utilise le langage de requête DSL de type recherche unitaire (GET BY ID) de Vitam en entrée. 'Accept' header est 'application/octet-stream' (objet binaire) ou 'application/json' (métadonnées) La requête utilise POST avec X-Http-Method-Override: GET.

### URI Parameters

- idu: required(string)

### Headers

- X-Http-Method-Override: required(GET)
- Accept: required(one of application/octet-stream, application/json, application/zip)

  Allow to specify if a result must contain only Metadata ('application/json') or only the Objects with a binary content ('application/octet-stream').

- X-Qualifier: (one of BinaryMaster, Dissemination, Thumbnail, TextContent)

  L'usage est utilisée et obligatoire uniquement en présence de Accept: application/octet-stream. ONLY VALID with Accept application/octet-stream

- X-Version: (integer)

  La version est utilisée et obligatoire uniquement en présence de Accept: application/octet-stream. ONLY VALID with Accept application/octet-stream

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- $projection: (object)

  Contient la projection à appliquer

  - $fields: (object)

Example:

    {
      "$projection": { "$fields": { "#id": 1, "#qualifiers": 1, "#type": 1, "#parents": 1 } }
    }

## HTTP status code 200

Renvoie l'objet binaire (Returns the list of 1 Object matching the DSL query)

### Headers

- X-Qualifier: (one of PhysicalMaster, BinaryMaster, Dissemination, Thumbnail, TextContent)

  L'usage est utilisée et obligatoire uniquement en présence de Accept: application/octet-stream. ONLY VALID with Accept application/octet-stream

- X-Version: (integer)

  La version est utilisée et obligatoire uniquement en présence de Accept: application/octet-stream. ONLY VALID with Accept application/octet-stream

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/octet-stream

Type: any

Media type: application/json

Type: object

Properties

- $context: required(object)

  Contient la requête DSL liée à la réponse

  - $projection: (object)

    Contient la projection à appliquer

    - $fields: (object)

  Example:

      {
        "$projection": {
          "$fields": {
            "myField1": 1,
            "myField2.mySubField": 1
          }
        }
      }

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $results: required(array of object)

  Contient la list des résultats

  Items:

- $facetResults: (array of object)

  Contient la resultat facet

  Items:

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "size": 1,
        "offset": 0,
        "limit": 10000
      },
      "$context": {
        "$projection": { "$fields": { "#id": 1, "#qualifiers": 1, "#type": 1, "#parents": 1 } }
      },
      "$results": [
        {
          "#id": "id101", "#type": "Document",
          "#qualifiers": { "BinaryMaster": 5, "Dissemination": 1, "Thumbnail": 1, "TextContent": 1 },
          "#parents": [ { "#id": "id1", "#type": "DemandeCongés", "#sector": "RessourcesHumaines" } ]
        }
      ]
    }

## HTTP status code 400

Bad Request, syntax might be erroneous

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 403

Forbidden, requested action is forbidden

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 460

Data is not available for immediate access from tape storage offer. An Access Request is required to access Object.

#### /units/{idu}/objects/accessRequests post

Endpoint d'API pour la création de Demandes d'Accès depuis une offre froide à des Objets d'archives.

post

Création d'une demandes d'accès à un objet d'archives associé à une unité d'archives.

Si l'objet est persisté sur une offre de stockage « froide », une demandes d'accès est créée, et renvoyée.

Si l'objet est persisté sur une offre de stockage « chaude », aucune demandes d'accès n'est renvoyée.

La création d'une demandes d'accès, permet de pré-commander des données persistées sur une offre « froide », et de le mettre à disposition pour lecture.

L'appelant doit monitorer périodiquement le statut des demandes d'accès (typiquement toutes les quelques minutes ou heures).

Une fois une demandes d'accès est devient prête (READY), la disponibilité immédiate des données depuis l'offre « froide » est garantie.

La durée d'expiration d'une demandes d'accès, qui court à partir du moment où cette dernière devient prête, est paramétrée par l'administrateur de Vitam.

Au bout d'une durée configurée par l'administrateur, une demandes d'accès est purgée de l'offre (NOT_FOUND).

Une fois une demandes d'accès est expirée (EXPIRED) ou supprimée, la disponibilité des données n'est alors plus garantie.

IMPORTANT: Les demandes d'accès créées doivent être supprimées au plus vite, dès que la donnée a été récupérée. Un trop grand nombre et/ou volume de demandes d'accès non supprimées risque d'impacter les capacité de stockage du cache de l'offre « froide », ainsi que la stabilité de l'offre.

Permissions requises:

- units:id:objects:accessrequests:create

#### post /units/{idu}/objects/accessRequests

Création d'une demandes d'accès à un objet d'archives associé à une unité d'archives.

Si l'objet est persisté sur une offre de stockage « froide », une demandes d'accès est créée, et renvoyée.

Si l'objet est persisté sur une offre de stockage « chaude », aucune demandes d'accès n'est renvoyée.

La création d'une demandes d'accès, permet de pré-commander des données persistées sur une offre « froide », et de le mettre à disposition pour lecture.

L'appelant doit monitorer périodiquement le statut des demandes d'accès (typiquement toutes les quelques minutes ou heures).

Une fois une demandes d'accès est devient prête (READY), la disponibilité immédiate des données depuis l'offre « froide » est garantie.

La durée d'expiration d'une demandes d'accès, qui court à partir du moment où cette dernière devient prête, est paramétrée par l'administrateur de Vitam.

Au bout d'une durée configurée par l'administrateur, une demandes d'accès est purgée de l'offre (NOT_FOUND).

Une fois une demandes d'accès est expirée (EXPIRED) ou supprimée, la disponibilité des données n'est alors plus garantie.

IMPORTANT: Les demandes d'accès créées doivent être supprimées au plus vite, dès que la donnée a été récupérée. Un trop grand nombre et/ou volume de demandes d'accès non supprimées risque d'impacter les capacité de stockage du cache de l'offre « froide », ainsi que la stabilité de l'offre.

Permissions requises:

- units:id:objects:accessrequests:create

### URI Parameters

- idu: required(string)

### Headers

- Accept: required(application/json)
- Content-Type: required(application/json)
- X-Qualifier: required(one of BinaryMaster, Dissemination, Thumbnail, TextContent)

  Le qualifier de l'objet binaire

- X-Version: required(integer)

  La version de l'objet (Ex. 1, 2...)

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

## HTTP status code 200

Renvoie le résultat de création de la demande d'accès à l'objet d'archives

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- httpCode: required(integer)

  Http status code la réponse

- $results: required(array of AccessTypes.AccessRequestReference)

  Contient la demande d'accès à l'objet, si celle-ci a bien été créée.

  Si l'objet est persisté sur une offre de stockage « froide », une demande d'accès est renvoyée. Si l'objet est persisté sur une offre de stockage « chaude », aucune demande d'accès n'est renvoyée.

  Items: Les références d'une demande d'accès d'une stratégie stockage « froide »

  - accessRequestId: required(string)

    L'identifiant de la demande d'accès

  - storageStrategyId: required(string)

    Stratégie de stockage associée à la demande d'accès

  Example:

      {
        "accessRequestId": "aeaaaaaaaag5nq65ag2cgal54k3u7aqaaaaq",
        "storageStrategyId": "tape"
      }

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "offset": 0,
        "limit": 0,
        "size": 1
      },
      "$results": [
        {
          "accessRequestId": "aeaaaaaaaag5nq65ag2cgal54mxefmqaaaaq",
          "storageStrategyId": "tape"
        }
      ],
      "$facetResults": [],
      "$context": {}
    }

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 500

Internal Server Error, the server encountered an unexpected condition which prevented it from fulfilling the request

#### /units/bulk post

post

Requête qui déclanche la mise à jour unitaire des métadonnées descriptives de plusieurs unités archivistiques. La requête utilise le langage de requête DSL de type mise à jour unitaire de masse (BULK UPDATE) de Vitam en entrée. Permissions requises:

- units:bulk:update

#### post /units/bulk

Requête qui déclanche la mise à jour unitaire des métadonnées descriptives de plusieurs unités archivistiques. La requête utilise le langage de requête DSL de type mise à jour unitaire de masse (BULK UPDATE) de Vitam en entrée. Permissions requises:

- units:bulk:update

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- queries: required(array of DslTypes.DslAtomicUpdateQuery)

  Contient la liste des requêtes de mise à jour unitaire des métadonnées

  Items: Requête DSL multiple pour le traitement de masse pour mise à jour unitaire des métadonnées

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

    Example:

        {
          "$query": [
            {
              "$eq": {
                "myField1": "myValue"
              },
              "$depth": 4
            }
          ]
        }

  - $action: required(array of object)

    Contient les actions de mise à jour à appliquer

    Items:

    Example:

        {
          "$action": [
            {
              "$set": {
                "$myField1": "myValue"
              },
              "$unset": [
                "myField2"
              ]
            }
          ]
        }

- threshold: (integer - minimum: 1 - maximum: 100000000)

  Contient le seuil du traitement en masse unitaire en nombre de queries (optionnel)

Example:

BulkAtomicUpdate:

    {
      "threshold": 10000,
      "queries": [
        {
          "$query": [
            {
              "$eq": {
                "ArchivalAgencyArchiveUnitIdentifier": "Value1"
              }
            }
          ],
          "$action": [
            {
              "$set": {
                "Title": "AAAUI Value1 modifiée par le passage des TNR"
              }
            }
          ]
        },
        {
          "$query": [
            {
              "$eq": {
                "ArchivalAgencyArchiveUnitIdentifier": "Value2"
              }
            }
          ],
          "$action": [
            {
              "$setregex": {
                "$target": "Description",
                "$controlPattern": "Cette unité de description doit hériter",
                "$updatePattern": "Cette unité de description modifiée par le passage des TNR doit hériter"
              }
            },
            {
              "$set": {
                "Description": "Cette unité de description a été modifiée par le passage des TNR"
              }
            }
          ]
        }
      ]
    }

## HTTP status code 200

Renvoie le statut de l'opération de mise à jour

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: any

## HTTP status code 400

Bad Request, syntax might be erroneous

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 403

Forbidden, requested action is forbidden

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 405

Method Not Allowed, requested resource is not allowed

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 500

Renvoie le statut final de l'opération en KO

### Body

Media type: application/json

Type: any

### ArchiveUnits with inherited rules

API qui définit les requêtes pour accéder aux Unités d'archives avec leurs règles de gestion héritées. La requête utilise le langage de requête DSL de Vitam en entrée et retourne une liste d'Unités d'archives avec leurs règles de gestion selon le DSL Vitam en cas de succès.

#### /unitsWithInheritedRules get

get

Requête qui retourne des résultats contenant des Unités d'archives ainsi que leurs règles de gestion héritées. La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée et retourne une liste d'Unités d'archives avec leurs règles de gestion selon le DSL Vitam en cas de succès.

Permissions requises:

- unitsWithInheritedRules:read

#### get /unitsWithInheritedRules

Requête qui retourne des résultats contenant des Unités d'archives ainsi que leurs règles de gestion héritées. La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée et retourne une liste d'Unités d'archives avec leurs règles de gestion selon le DSL Vitam en cas de succès.

Permissions requises:

- unitsWithInheritedRules:read

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

- Accept: required(one of application/json, application/zip, application/octet-stream)

  Allow to specify if a result must contain only Metadata ('application/json') or only the Objects with a binary content ('application/octet-stream').

### Body

Media type: application/json

Type: object

Properties

- $roots: required(array of string)

  Contient les racines de la recherche

- $query: required(array of object)

  Contient plusieurs requêtes

  Items:

- $filter: (object)

  Contient les filtres à appliquer

  - $offset: (integer - minimum: 1 - maximum: 100000)
  - $limit: (integer - minimum: 1 - maximum: 100000)
  - $orderby: (object)
- $projection: required(object)

  Contient la projection à appliquer

  - $fields: (object)
- $facet: (array of DslTypes.Facet)

  Contains facet if requested

  Items: Facet

  - $name: required(string)
  - $terms: (object)
    - $field: required(string)

      Example:

          #qualifiers.versions.FormatIdentification.MimeType

    - $subobject: required(string)

      Example:

          #qualifiers.versions

    - $size: required(number)

      Example:

          20

    - $order: required(string)

      Example:

          ASC

  - $filters: (object)
    - $query_filters: required(array of object)

      Items: items

      - $name: required(string)
      - $query: required(object)
  - $date_range: (object)
    - $subobject: required(string)

      Example:

          #qualifiers.versions

    - $field: required(string)

      Example:

          #qualifiers.versions.FileInfo.LastModified

    - $format: required(string)

      Example:

          YYYY

    - $ranges: required(array of object - minItems: 1 - maxItems: 2)

      Items: items

      - $from: required(string)

        Example:

            2017

      - $to: required(string)

        Example:

            2020

  - $sum: (object)
    - $field: required(string)

      Example:

          #qualifiers.versions.Size

    - $subobject: required(string)

      Example:

          #qualifiers.versions

Example:

    {
      "$roots": [
        "id0"
      ],
      "$query": [
        {
          "$match": {
            "title": "titre"
          },
          "$depth": 4
        }
      ],
      "$filter": {
        "$limit": 1000,
        "$offset": 10
      },
      "$projection": {
        "$fields": {
          "#id": 1,
          "title": 1,
          "#type": 1,
          "#sector": 1,
          "#parents": 1,
          "#object": 1
        }
      }
    }

## HTTP status code 200

Renvoie la liste des résultats d'Unités d'archives correspondant à la requête DSL ainsi que leurs règles héritées.

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $facetResults: (array of object)

  Contient la resultat facet

  Items: items

  - name: required(string)

    Example:

        facetName

  - buckets: required(array of any)

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

- $context: required(object)

  Contient la requête DSL liée à la réponse

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $filter: (object)

    Contient les filtres à appliquer

    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: required(object)

    Contient la projection à appliquer

    - $fields: (object)
  - $facet: (array of DslTypes.Facet)

    Contains facet if requested

    Items: Facet

    - $name: required(string)
    - $terms: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.FormatIdentification.MimeType

      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $size: required(number)

        Example:

            20

      - $order: required(string)

        Example:

            ASC

    - $filters: (object)
      - $query_filters: required(array of object)

        Items: items

        - $name: required(string)
        - $query: required(object)
    - $date_range: (object)
      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $field: required(string)

        Example:

            #qualifiers.versions.FileInfo.LastModified

      - $format: required(string)

        Example:

            YYYY

      - $ranges: required(array of object - minItems: 1 - maxItems: 2)

        Items: items

        - $from: required(string)

          Example:

              2017

        - $to: required(string)

          Example:

              2020

    - $sum: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.Size

      - $subobject: required(string)

        Example:

            #qualifiers.versions

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$filter": {
          "$limit": 100,
          "$offset": 50
        },
        "$projection": {
          "$fields": {
            "myField1": 1,
            "myField2.mySubField": 1
          }
        }
      }

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $results: required(array of object)

  Contient la list des résultats

  Items:

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "size": 3,
        "offset": 0,
        "limit": 1000
      },
      "$context": {
        "$roots": [ "id0" ],
        "$query": [
          { "$match": { "title": "Arpajon" }, "$depth": 4 }
        ],
        "$filter": { "$limit": 1000, "$offset": 10 },
        "$projection": { "$fields": { "#id": 1, "title": 1 } }
      },
      "$results": [
        {
          "Title": "Arpajon",
          "#id": "aeaqaaaaaaftcq6raam3galew4bftjiaaaba",
          "InheritedRules": {
            "StorageRule": {
              "Rules": [],
              "Properties": []
            },
            "AppraisalRule": {
              "Rules": [
                {
                  "UnitId": "aeaqaaaaaaftcq6raam3galew4bftjiaaaba",
                  "OriginatingAgency": "SNCF",
                  "Paths": [
                    [
                      "aeaqaaaaaaftcq6raam3galew4bftjiaaaba"
                    ]
                  ],
                  "Rule": "APP-00049",
                  "StartDate": "2014-01-01",
                  "EndDate": "2015-01-01"
                }
              ],
              "Properties": [
                {
                  "UnitId": "aeaqaaaaaaftcq6raam3galew4bftjiaaaba",
                  "OriginatingAgency": "SNCF",
                  "Paths": [
                    [
                      "aeaqaaaaaaftcq6raam3galew4bftjiaaaba"
                    ]
                  ],
                  "PropertyName": "FinalAction",
                  "PropertyValue": "Destroy"
                }
              ]
            },
            "DisseminationRule": {
              "Rules": [],
              "Properties": []
            },
            "ReuseRule": {
              "Rules": [],
              "Properties": []
            },
            "ClassificationRule": {
              "Rules": [],
              "Properties": []
            },
            "AccessRule": {
              "Rules": [],
              "Properties": []
            },
            "HoldRule": {
              "Rules": [
                {
                  "UnitId": "aeaqaaaaaaftcq6raam3galew4bftjiaaaba",
                  "OriginatingAgency": "SNCF",
                  "Paths": [
                    [
                      "aeaqaaaaaaftcq6raam3galew4bftjiaaaba"
                    ]
                  ],
                  "Rule": "HOL-00002",
                  "StartDate": "2014-01-01",
                  "EndDate": "2020-01-01",
                  "HoldEndDate": "2020-01-01",
                  "HoldOwner": "Owner",
                  "HoldReason": "Reason",
                  "HoldReassessingDate": "2018-01-01",
                  "PreventRearrangement": false
                }
              ]
            }
          }
        }
      ]
    }

## HTTP status code 400

Bad Request, syntax might be erroneous

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 403

Forbidden, requested action is forbidden

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Groupe d'objet

API qui définit l'ensemble des requêtes sur les groupes d'objets.

#### /objects get post

get

Requête qui retourne des résultats contenant des Groupes d'objets. La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam et peut utiliser l'opérateur $subobject (Voir documentation DSL) en entrée et retourne une liste d'Unités d'archives selon le DSL Vitam en cas de succès.

Permissions requises:

- objects:read

post

Requête qui retourne des résultats contenant des Groupes d'objets en utilisant le verbe POST et le header X-Http-Method-Override: GET. La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam et peut utiliser l'opérateur $subobject (Voir documentation DSL) en entrée et retourne une liste d'Unités d'archives selon le DSL Vitam en cas de succès.

#### get /objects

Requête qui retourne des résultats contenant des Groupes d'objets. La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam et peut utiliser l'opérateur $subobject (Voir documentation DSL) en entrée et retourne une liste d'Unités d'archives selon le DSL Vitam en cas de succès.

Permissions requises:

- objects:read

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

- Accept: required(one of application/json, application/zip, application/octet-stream)

  Allow to specify if a result must contain only Metadata ('application/json') or only the Objects with a binary content ('application/octet-stream').

### Body

Media type: application/json

Type: object

Properties

- $roots: required(array of string)

  Contient les racines de la recherche

- $query: required(array of object)

  Contient plusieurs requêtes

  Items:

- $filter: (object)

  Contient les filtres à appliquer

  - $offset: (integer - minimum: 1 - maximum: 100000)
  - $limit: (integer - minimum: 1 - maximum: 100000)
  - $orderby: (object)
  - $track_total_hits: (boolean)

    Devrait être setté à "true", au niveau de la configuration, pour avoir une précision sur les résultats de recherche dépassant 10k données (par défaut "false").

- $projection: required(object)

  Contient la projection à appliquer

  - $fields: (object)
- $facet: (array of DslTypes.Facet)

  Contains facet if requested

  Items: Facet

  - $name: required(string)
  - $terms: (object)
    - $field: required(string)

      Example:

          #qualifiers.versions.FormatIdentification.MimeType

    - $subobject: required(string)

      Example:

          #qualifiers.versions

    - $size: required(number)

      Example:

          20

    - $order: required(string)

      Example:

          ASC

  - $filters: (object)
    - $query_filters: required(array of object)

      Items: items

      - $name: required(string)
      - $query: required(object)
  - $date_range: (object)
    - $subobject: required(string)

      Example:

          #qualifiers.versions

    - $field: required(string)

      Example:

          #qualifiers.versions.FileInfo.LastModified

    - $format: required(string)

      Example:

          YYYY

    - $ranges: required(array of object - minItems: 1 - maxItems: 2)

      Items: items

      - $from: required(string)

        Example:

            2017

      - $to: required(string)

        Example:

            2020

  - $sum: (object)
    - $field: required(string)

      Example:

          #qualifiers.versions.Size

    - $subobject: required(string)

      Example:

          #qualifiers.versions

Example:

    {
     "$query": [
       {
         "$and": [
           {
         "$match": {
           "FileInfo.FileName": "FileName.txt"
         }
           },
           {
         "$subobject": {
           "#qualifiers.versions": {
             "$and": [
               {
             "$eq": {
               "#qualifiers.versions.FormatIdentification.MimeType": "text/plain"
             }
               },
               {
             "$lte": {
               "#qualifiers.versions.Size": 20000
             }
               }
             ]
           }
         }
           }
         ]
       }
     ],
     "$projection": {},
     "$filter": {}
    }

## HTTP status code 200

Renvoie la liste de résultats correspondant à la requête DSL

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $facetResults: (array of object)

  Contient la resultat facet

  Items: items

  - name: required(string)

    Example:

        facetName

  - buckets: required(array of any)

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

- $context: required(object)

  Contient la requête DSL liée à la réponse

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $filter: (object)

    Contient les filtres à appliquer

    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: required(object)

    Contient la projection à appliquer

    - $fields: (object)
  - $facet: (array of DslTypes.Facet)

    Contains facet if requested

    Items: Facet

    - $name: required(string)
    - $terms: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.FormatIdentification.MimeType

      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $size: required(number)

        Example:

            20

      - $order: required(string)

        Example:

            ASC

    - $filters: (object)
      - $query_filters: required(array of object)

        Items: items

        - $name: required(string)
        - $query: required(object)
    - $date_range: (object)
      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $field: required(string)

        Example:

            #qualifiers.versions.FileInfo.LastModified

      - $format: required(string)

        Example:

            YYYY

      - $ranges: required(array of object - minItems: 1 - maxItems: 2)

        Items: items

        - $from: required(string)

          Example:

              2017

        - $to: required(string)

          Example:

              2020

    - $sum: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.Size

      - $subobject: required(string)

        Example:

            #qualifiers.versions

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$filter": {
          "$limit": 100,
          "$offset": 50
        },
        "$projection": {
          "$fields": {
            "myField1": 1,
            "myField2.mySubField": 1
          }
        }
      }

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $results: required(array of object)

  Contient la list des résultats

  Items:

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 10000,
        "offset": 0,
        "limit": 5,
        "size": 5
      },
      "$results": [
        {
          "#nbobjects": 2
        },
        {
          "#nbobjects": 1
        },
        {
          "#nbobjects": 1
        },
        {
          "#nbobjects": 1
        },
        {
          "#nbobjects": 1
        }
      ],
      "$facetResults": [
        {
          "name": "ObjectTypeFacet",
          "buckets": [
            {
              "value": "text/plain",
              "count": 50108
            },
            {
              "value": "application/pdf",
              "count": 167
            },
            {
              "value": "image/jpeg",
              "count": 59
            },
            {
              "value": "application/vnd.oasis.opendocument.text",
              "count": 38
            },
            {
              "value": "image/png",
              "count": 5
            },
            {
              "value": "application/vnd.oasis.opendocument.spreadsheet",
              "count": 4
            },
            {
              "value": "",
              "count": 3
            },
            {
              "value": "application/mp4; video/mp4",
              "count": 3
            },
            {
              "value": "application/vnd.oasis.opendocument.presentation",
              "count": 2
            },
            {
              "value": "application/javascript",
              "count": 1
            },
            {
              "value": "application/json",
              "count": 1
            },
            {
              "value": "application/x-bzip2",
              "count": 1
            },
            {
              "value": "application/x-tar",
              "count": 1
            },
            {
              "value": "application/xml; text/xml",
              "count": 1
            },
            {
              "value": "application/zip",
              "count": 1
            },
            {
              "value": "audio/flac",
              "count": 1
            },
            {
              "value": "image/svg+xml",
              "count": 1
            },
            {
              "value": "text/css",
              "count": 1
            },
            {
              "value": "text/html",
              "count": 1
            },
            {
              "value": "text/x-vCalendar",
              "count": 1
            }
          ]
        }
      ],
      "$context": {
        "$roots": [],
        "$query": [
          {
            "$eq": {
              "#tenant": 0
            }
          }
        ],
        "$filter": {
          "$limit": 5
        },
        "$projection": {
          "$fields": {
            "#nbobjects": 1
          }
        },
        "$facets": [
          {
            "$name": "ObjectTypeFacet",
            "$terms": {
              "$field": "#qualifiers.versions.FormatIdentification.MimeType",
              "$subobject": "#qualifiers.versions",
              "$size": 20,
              "$order": "ASC"
            }
          }
        ]
      }
    }

## HTTP status code 400

Bad Request, syntax might be erroneous

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 403

Forbidden, requested action is forbidden

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

#### post /objects

Requête qui retourne des résultats contenant des Groupes d'objets en utilisant le verbe POST et le header X-Http-Method-Override: GET. La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam et peut utiliser l'opérateur $subobject (Voir documentation DSL) en entrée et retourne une liste d'Unités d'archives selon le DSL Vitam en cas de succès.

### Headers

- X-Http-Method-Override: required(GET)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

- Accept: required(one of application/json, application/zip, application/octet-stream)

  Allow to specify if a result must contain only Metadata ('application/json') or only the Objects with a binary content ('application/octet-stream').

### Body

Media type: application/json

Type: object

Properties

- $roots: required(array of string)

  Contient les racines de la recherche

- $query: required(array of object)

  Contient plusieurs requêtes

  Items:

- $filter: (object)

  Contient les filtres à appliquer

  - $offset: (integer - minimum: 1 - maximum: 100000)
  - $limit: (integer - minimum: 1 - maximum: 100000)
  - $orderby: (object)
  - $track_total_hits: (boolean)

    Devrait être setté à "true", au niveau de la configuration, pour avoir une précision sur les résultats de recherche dépassant 10k données (par défaut "false").

- $projection: required(object)

  Contient la projection à appliquer

  - $fields: (object)
- $facet: (array of DslTypes.Facet)

  Contains facet if requested

  Items: Facet

  - $name: required(string)
  - $terms: (object)
    - $field: required(string)

      Example:

          #qualifiers.versions.FormatIdentification.MimeType

    - $subobject: required(string)

      Example:

          #qualifiers.versions

    - $size: required(number)

      Example:

          20

    - $order: required(string)

      Example:

          ASC

  - $filters: (object)
    - $query_filters: required(array of object)

      Items: items

      - $name: required(string)
      - $query: required(object)
  - $date_range: (object)
    - $subobject: required(string)

      Example:

          #qualifiers.versions

    - $field: required(string)

      Example:

          #qualifiers.versions.FileInfo.LastModified

    - $format: required(string)

      Example:

          YYYY

    - $ranges: required(array of object - minItems: 1 - maxItems: 2)

      Items: items

      - $from: required(string)

        Example:

            2017

      - $to: required(string)

        Example:

            2020

  - $sum: (object)
    - $field: required(string)

      Example:

          #qualifiers.versions.Size

    - $subobject: required(string)

      Example:

          #qualifiers.versions

Example:

    {
     "$query": [
       {
         "$and": [
           {
         "$match": {
           "FileInfo.FileName": "FileName.txt"
         }
           },
           {
         "$subobject": {
           "#qualifiers.versions": {
             "$and": [
               {
             "$eq": {
               "#qualifiers.versions.FormatIdentification.MimeType": "text/plain"
             }
               },
               {
             "$lte": {
               "#qualifiers.versions.Size": 20000
             }
               }
             ]
           }
         }
           }
         ]
       }
     ],
     "$projection": {},
     "$filter": {}
    }

## HTTP status code 200

Renvoie la liste de résultats correspondant à la requête DSL

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $facetResults: (array of object)

  Contient la resultat facet

  Items: items

  - name: required(string)

    Example:

        facetName

  - buckets: required(array of any)

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

- $context: required(object)

  Contient la requête DSL liée à la réponse

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $filter: (object)

    Contient les filtres à appliquer

    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: required(object)

    Contient la projection à appliquer

    - $fields: (object)
  - $facet: (array of DslTypes.Facet)

    Contains facet if requested

    Items: Facet

    - $name: required(string)
    - $terms: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.FormatIdentification.MimeType

      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $size: required(number)

        Example:

            20

      - $order: required(string)

        Example:

            ASC

    - $filters: (object)
      - $query_filters: required(array of object)

        Items: items

        - $name: required(string)
        - $query: required(object)
    - $date_range: (object)
      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $field: required(string)

        Example:

            #qualifiers.versions.FileInfo.LastModified

      - $format: required(string)

        Example:

            YYYY

      - $ranges: required(array of object - minItems: 1 - maxItems: 2)

        Items: items

        - $from: required(string)

          Example:

              2017

        - $to: required(string)

          Example:

              2020

    - $sum: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.Size

      - $subobject: required(string)

        Example:

            #qualifiers.versions

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$filter": {
          "$limit": 100,
          "$offset": 50
        },
        "$projection": {
          "$fields": {
            "myField1": 1,
            "myField2.mySubField": 1
          }
        }
      }

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $results: required(array of object)

  Contient la list des résultats

  Items:

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 10000,
        "offset": 0,
        "limit": 5,
        "size": 5
      },
      "$results": [
        {
          "#nbobjects": 2
        },
        {
          "#nbobjects": 1
        },
        {
          "#nbobjects": 1
        },
        {
          "#nbobjects": 1
        },
        {
          "#nbobjects": 1
        }
      ],
      "$facetResults": [
        {
          "name": "ObjectTypeFacet",
          "buckets": [
            {
              "value": "text/plain",
              "count": 50108
            },
            {
              "value": "application/pdf",
              "count": 167
            },
            {
              "value": "image/jpeg",
              "count": 59
            },
            {
              "value": "application/vnd.oasis.opendocument.text",
              "count": 38
            },
            {
              "value": "image/png",
              "count": 5
            },
            {
              "value": "application/vnd.oasis.opendocument.spreadsheet",
              "count": 4
            },
            {
              "value": "",
              "count": 3
            },
            {
              "value": "application/mp4; video/mp4",
              "count": 3
            },
            {
              "value": "application/vnd.oasis.opendocument.presentation",
              "count": 2
            },
            {
              "value": "application/javascript",
              "count": 1
            },
            {
              "value": "application/json",
              "count": 1
            },
            {
              "value": "application/x-bzip2",
              "count": 1
            },
            {
              "value": "application/x-tar",
              "count": 1
            },
            {
              "value": "application/xml; text/xml",
              "count": 1
            },
            {
              "value": "application/zip",
              "count": 1
            },
            {
              "value": "audio/flac",
              "count": 1
            },
            {
              "value": "image/svg+xml",
              "count": 1
            },
            {
              "value": "text/css",
              "count": 1
            },
            {
              "value": "text/html",
              "count": 1
            },
            {
              "value": "text/x-vCalendar",
              "count": 1
            }
          ]
        }
      ],
      "$context": {
        "$roots": [],
        "$query": [
          {
            "$eq": {
              "#tenant": 0
            }
          }
        ],
        "$filter": {
          "$limit": 5
        },
        "$projection": {
          "$fields": {
            "#nbobjects": 1
          }
        },
        "$facets": [
          {
            "$name": "ObjectTypeFacet",
            "$terms": {
              "$field": "#qualifiers.versions.FormatIdentification.MimeType",
              "$subobject": "#qualifiers.versions",
              "$size": 20,
              "$order": "ASC"
            }
          }
        ]
      }
    }

## HTTP status code 400

Bad Request, syntax might be erroneous

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 403

Forbidden, requested action is forbidden

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

#### /objects/stream get

get

Requête qui déclenche la récupération de toutes les unités d'archives dans un Json Stream. Permissions requises:

- objects:stream

#### get /objects/stream

Requête qui déclenche la récupération de toutes les unités d'archives dans un Json Stream. Permissions requises:

- objects:stream

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

- Accept: required(one of application/json, application/zip, application/octet-stream)

  Allow to specify if a result must contain only Metadata ('application/json') or only the Objects with a binary content ('application/octet-stream').

### Body

Media type: application/json

Type: object

Properties

- $roots: required(array of string)

  Contient les racines de la recherche

- $query: required(array of object)

  Contient plusieurs requêtes

  Items:

- $projection: required(object)

  Contient la projection à appliquer

  - $fields: (object)

Example:

    {
      "$roots": [],
      "$query": [
        {
          "$gt": {
            "#approximate_creation_date": "2022-01-01"
          }
        }
      ],
      "$projection": {
        "$fields": {
        }
      },
      "$facets": [],
      "$threshold": 500000
    }

## HTTP status code 200

Renvoie la liste des résultats d'objets correspondant à la requête DSL

### Headers

- X-Objects-Count: required(number)

  nombre des objets retournés dans le flux

  Example:

      141202

- X-Content-Length: required(number)

  la taille du flux de données

  Example:

      13978998

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/octet-stream

Type: array of object

Items:

Example:

    Can not resolve examples/streamObjectResponse.jsonl

## HTTP status code 417

Expectation Failed, used in Validation when the required validation (X-Valid) is in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 500

Internal Server Error, the server encountered an unexpected condition which prevented it from fulfilling the request

### Restauration des métadonnées

API qui restaure les métadonnées essentielles

#### /revert/units post

post

Requête qui permet la restauration des métadonnées essentielles des unités archivistiques.

Permissions requises:

- units:update:revert

#### post /revert/units

Requête qui permet la restauration des métadonnées essentielles des unités archivistiques.

Permissions requises:

- units:update:revert

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- force: required(boolean)

  true si on force la restauration, false sinon

  Example:

      false

- dslRequest: required(object)

  requete DSL pour filtrer les units à restaurer

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $threshold: (integer - minimum: 1 - maximum: 100000000)

    Contient le seuil du traitement de masse (optionnel)

  - $filter: (object)
    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: (object)
    - $fields: (object)

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$threshold": 1000
      }

- operationId: required(string)

  identifiant de l'opération à restaurer

- $fields: required(array of )

  les champs à restaurer

Example:

    {
      "force": false,
      "dslRequest": {
        "$roots": [],
        "$query": []
      },
      "operationId": "aeeaaaaaachikhnoaant6alwd2ltg6iaaaaq",
      "$fields": ["Title"]
    }

## HTTP status code 202

Renvoie le statut de l'opération de la restauration des métadoonées

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $results: required(array of StandardTypes.AsyncResponse)

  Contient la list des résultats

  Items: Réponse DSL

  - itemId: required(string)

    Contient le code retrour http

  - message: required(string)

    Contient le nombre de hits

  - globalStatus: required(string)

    Contient le code retrour http

  - statusMeter: required(array of number)

    lala

  - data: required(object)

    Contient le code retrour http

  - itemsStatus: required(object)

    Contient le code retrour http

  - evDetailData: required(string)

    Contient le code retrour http

  - globalState: required(string)

    Contient le code retrour http

  - subTaskStatus: required(object)

    Contient le code retrour http

  - lifecycleEnable: required(boolean)

    Contient le code retrour http

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $facetResults: (array of object)

  Contient la resultat facet

  Items:

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

- $context: (object)

  toto

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "offset": 0,
        "limit": 0,
        "size": 1
      },
      "$results": [
        {
          "itemId": "operationId",
          "message": "",
          "globalStatus": "STARTED",
          "statusMeter": [
            0,
            1,
            0,
            0,
            0,
            0,
            0
          ],
          "data": {},
          "itemsStatus": {},
          "evDetailData": "{}",
          "globalState": "RUNNING",
          "subTaskStatus": {},
          "lifecycleEnable": true
        }
      ],
      "$facetResults": [],
      "$context": {}
    }

### DIP Export

API qui définit les requêtes pour générer un DIP (Dissemination Information Package : ZIP contenant les métadonnées et les objets) pour une sélection d'Unités d'archives. La requête utilise le langage de requête (DSL) de Vitam en entrée et va lancer un processus générant le DIP selon le DSL passé. Une autre requête pourra être exécutée par la suite pour télécharger le fichier Zip généré.

#### /dipexport post

post

response : JSON asynchronous state / HTTP CODE 202 or 500 for Internal Server Error La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée.

Permissions requises:

- dipexport:create

#### post /dipexport

response : JSON asynchronous state / HTTP CODE 202 or 500 for Internal Server Error La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée.

Permissions requises:

- dipexport:create

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- $roots: required(array of string)

  Contient les racines de la recherche

- $query: required(array of object)

  Contient plusieurs requêtes

  Items:

- $filter: (object)

  Contient les filtres à appliquer

  - $offset: (integer - minimum: 1 - maximum: 100000)
  - $limit: (integer - minimum: 1 - maximum: 100000)
  - $orderby: (object)
- $projection: required(object)

  Contient la projection à appliquer

  - $fields: (object)
- $facet: (array of DslTypes.Facet)

  Contains facet if requested

  Items: Facet

  - $name: required(string)
  - $terms: (object)
    - $field: required(string)

      Example:

          #qualifiers.versions.FormatIdentification.MimeType

    - $subobject: required(string)

      Example:

          #qualifiers.versions

    - $size: required(number)

      Example:

          20

    - $order: required(string)

      Example:

          ASC

  - $filters: (object)
    - $query_filters: required(array of object)

      Items: items

      - $name: required(string)
      - $query: required(object)
  - $date_range: (object)
    - $subobject: required(string)

      Example:

          #qualifiers.versions

    - $field: required(string)

      Example:

          #qualifiers.versions.FileInfo.LastModified

    - $format: required(string)

      Example:

          YYYY

    - $ranges: required(array of object - minItems: 1 - maxItems: 2)

      Items: items

      - $from: required(string)

        Example:

            2017

      - $to: required(string)

        Example:

            2020

  - $sum: (object)
    - $field: required(string)

      Example:

          #qualifiers.versions.Size

    - $subobject: required(string)

      Example:

          #qualifiers.versions

Example:

    {
      "$roots": [
        "id0"
      ],
      "$query": [
        {
          "$match": {
            "title": "titre"
          },
          "$depth": 4
        }
      ],
      "$filter": {
        "$limit": 1000,
        "$offset": 10
      },
      "$projection": {
        "$fields": {
          "#id": 1,
          "title": 1,
          "#type": 1,
          "#sector": 1,
          "#parents": 1,
          "#object": 1
        }
      }
    }

## HTTP status code 202

Renvoie le statut de l'opération de DIP

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $results: required(array of StandardTypes.AsyncResponse)

  Contient la list des résultats

  Items: Réponse DSL

  - itemId: required(string)

    Contient le code retrour http

  - message: required(string)

    Contient le nombre de hits

  - globalStatus: required(string)

    Contient le code retrour http

  - statusMeter: required(array of number)

    lala

  - data: required(object)

    Contient le code retrour http

  - itemsStatus: required(object)

    Contient le code retrour http

  - evDetailData: required(string)

    Contient le code retrour http

  - globalState: required(string)

    Contient le code retrour http

  - subTaskStatus: required(object)

    Contient le code retrour http

  - lifecycleEnable: required(boolean)

    Contient le code retrour http

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $facetResults: (array of object)

  Contient la resultat facet

  Items:

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

- $context: (object)

  toto

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "offset": 0,
        "limit": 0,
        "size": 1
      },
      "$results": [
        {
          "itemId": "operationId",
          "message": "",
          "globalStatus": "STARTED",
          "statusMeter": [
            0,
            1,
            0,
            0,
            0,
            0,
            0
          ],
          "data": {},
          "itemsStatus": {},
          "evDetailData": "{}",
          "globalState": "RUNNING",
          "subTaskStatus": {},
          "lifecycleEnable": true
        }
      ],
      "$facetResults": [],
      "$context": {}
    }

## HTTP status code 500

Renvoie ce statut en cas d'erreur interne

### Body

Media type: application/json

Type: any

#### /dipexport/{id}/dip/ get

Télécharger le DIP généré par l'opération passée en paramètre

get

Requête qui retourne les résultats composés des métadonnées et des objets binaires dans un fichier zip 'Accept' header est 'application/octet-stream'

Permissions requises:

- dipexport:id:dip:read

#### get /dipexport/{id}/dip/

Requête qui retourne les résultats composés des métadonnées et des objets binaires dans un fichier zip 'Accept' header est 'application/octet-stream'

Permissions requises:

- dipexport:id:dip:read

### URI Parameters

- id: required(string)

  Identifiant de l'opération d'export DIP.

### Headers

- Accept: required(application/octet-stream)

## HTTP status code 202

Returns the generated zip file

### Body

Media type: application/octet-stream

Type: any

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Body

Media type: application/json

Type: any

### DIP Export V2

API qui définit les requêtes pour générer un DIP (Dissemination Information Package : ZIP contenant les métadonnées et les objets) pour une sélection d'Unités d'archives. La requête est composée d'une dslRequest (DSL) et d'autres paramètres nécessaires pour le service. Un processus générant le DIP V2 selon le DSL passé sera lancé. Une autre requête pourra être exécutée par la suite pour télécharger le fichier Zip généré. S'il s'agit de générer un export en mode arborescence il faut rajouter le paramètre boolean "exportWithTree" et le passer à "true"

#### /v2/dipexport post

post

response : JSON asynchronous state / HTTP CODE 202 or 500 for internal error La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée.

#### post /v2/dipexport

response : JSON asynchronous state / HTTP CODE 202 or 500 for internal error La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée.

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- dipExportType: required(one of MINIMAL, FULL)

  Le type d'export DIP

- exportWithLogBookLFC: (boolean)

  True pour inclure les logbook de cycle de vie des unités archivistiques et groupes d'objets

- exportWithoutObjects: (boolean)

  True pour exclure tous les objets

- exportWithTree: (boolean)

  True pour générer un export en mode arborescence

- useOriginalFilenames: (boolean)

  True pour générer un export avec les noms de fichiers d'origine

- dslRequest: required(object)

  Contient la requête de recherche

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $filter: (object)

    Contient les filtres à appliquer

    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: required(object)

    Contient la projection à appliquer

    - $fields: (object)
  - $facet: (array of DslTypes.Facet)

    Contains facet if requested

    Items: Facet

    - $name: required(string)
    - $terms: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.FormatIdentification.MimeType

      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $size: required(number)

        Example:

            20

      - $order: required(string)

        Example:

            ASC

    - $filters: (object)
      - $query_filters: required(array of object)

        Items: items

        - $name: required(string)
        - $query: required(object)
    - $date_range: (object)
      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $field: required(string)

        Example:

            #qualifiers.versions.FileInfo.LastModified

      - $format: required(string)

        Example:

            YYYY

      - $ranges: required(array of object - minItems: 1 - maxItems: 2)

        Items: items

        - $from: required(string)

          Example:

              2017

        - $to: required(string)

          Example:

              2020

    - $sum: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.Size

      - $subobject: required(string)

        Example:

            #qualifiers.versions

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$filter": {
          "$limit": 100,
          "$offset": 50
        },
        "$projection": {
          "$fields": {
            "myField1": 1,
            "myField2.mySubField": 1
          }
        }
      }

- dataObjectVersionToExport: (object)

  Permet de filtrer les objets à retourner. Seule l'une des propriétés (dataObjectVersions ou dataObjectVersionsPatterns) peut être renseignée. Si aucune des deux n'est renseignée, tous les types d'objet sont exportés dans leur dernière version

  - dataObjectVersions: (array of string)

    Liste des types d'objet à inclure dans l'export (exporte uniquement la dernière version). Valeurs possibles : BinaryMaster, Dissemination, Thumbnail, TextContent, PhysicalMaster. Si la liste est vide, tous les types d'objet sont inclus.

  - dataObjectVersionsPatterns: (object)

    Types d'objet à inclure dans l'export avec choix des versions (parmi les première, dernière et toutes). Si l'objet est vide, aucun type d'objet n'est inclus.

    - BinaryMaster: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - Dissemination: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - Thumbnail: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - TextContent: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - PhysicalMaster: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

  Examples:

  Export des dernières versions des BinaryMaster et PhysicalMaster:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersions": [
            "BinaryMaster",
            "PhysicalMaster"
          ]
        }
      }

  Export des dernières versions de tous les types d'objets:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersions": []
        }
      }

  Export de toutes les versions de BinaryMaster et des première et dernière version des PhysicalMaster:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersionsPatterns": {
            "BinaryMaster": [
              "ALL"
            ],
            "PhysicalMaster": [
              "FIRST",
              "LAST"
            ]
          }
        }
      }

  Export de tous les objets:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersionsPatterns": {}
        }
      }

- dipRequestParameters: (object)

  Les paramètres nécessaires pour faire un export DIP, ce champs est obligatoire quand le dipExportType est FULL

  - archivalAgreement: (string)

    Contrat d'entrée

  - originatingAgencyIdentifier: (string)

    Identifiant du service producteur

  - comment: (string)

    Intitulé

  - submissionAgencyIdentifier: (string)

    Identifiant du service versant

  - archivalAgencyIdentifier: required(string)

    Identifiant du service d'archives. Si Vitam trouve un seul service d'archives pour la selection d'unités archivistiques, ce service sera utilisé par défaut.

  - messageRequestIdentifier: required(string)

    Identifiant de la demande

  - requesterIdentifier: required(string)

    Identifiant du demandeur

  - authorizationRequestReplyIdentifier: (string)

    Identifiant de la réponse à une demande d'autorisation

- maxSizeThreshold: (integer)

  Le seuil du poids binaire max autorisé pour un DIP ou un SIP de transfert

- sedaVersion: (string)

  La version SEDA d'export de DIP ou d'un SIP de transfert ( 2.2 par défaut )

Example:

    {
      "dipExportType": "FULL",
      "dataObjectVersionToExport": {
        "dataObjectVersions": [
          "BinaryMaster"
        ]
    },
      "exportWithLogBookLFC": true,
      "exportWithTree": false,
      "useOriginalFilenames": false,
      "dipRequestParameters": {
        "archivalAgreement": "ArchivalAgreement",
        "originatingAgencyIdentifier": "OriginatingAgencyIdentifier",
        "comment": "Comment",
        "submissionAgencyIdentifier": "SubmissionAgencyIdentifier",
        "messageRequestIdentifier": "MessageRequestIdentifier",
        "authorizationRequestReplyIdentifier": "AuthorizationRequestReplyIdentifier",
        "archivalAgencyIdentifier": "ArchivalAgencyIdentifier",
        "requesterIdentifier": "RequesterIdentifier"
    },
      "dslRequest": {
        "$roots": [
          "id0"
        ],
        "$query": [
    {
            "$match": {
              "title": "titre"
    },
            "$depth": 4
    }
    ],
        "$filter": {
          "$limit": 1000,
          "$offset": 10
        },
        "$projection": {
          "$fields": {
            "#id": 1,
            "title": 1,
            "#type": 1,
            "#sector": 1,
            "#parents": 1,
            "#object": 1
          }
    }
      },
      "maxSizeThreshold": 1024,
      "sedaVersion": "2.2"
    }

## HTTP status code 202

Renvoie le statut de l'opération de DIP V2

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $results: required(array of StandardTypes.AsyncResponse)

  Contient la list des résultats

  Items: Réponse DSL

  - itemId: required(string)

    Contient le code retrour http

  - message: required(string)

    Contient le nombre de hits

  - globalStatus: required(string)

    Contient le code retrour http

  - statusMeter: required(array of number)

    lala

  - data: required(object)

    Contient le code retrour http

  - itemsStatus: required(object)

    Contient le code retrour http

  - evDetailData: required(string)

    Contient le code retrour http

  - globalState: required(string)

    Contient le code retrour http

  - subTaskStatus: required(object)

    Contient le code retrour http

  - lifecycleEnable: required(boolean)

    Contient le code retrour http

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $facetResults: (array of object)

  Contient la resultat facet

  Items:

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

- $context: (object)

  toto

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "offset": 0,
        "limit": 0,
        "size": 1
      },
      "$results": [
        {
          "itemId": "operationId",
          "message": "",
          "globalStatus": "STARTED",
          "statusMeter": [
            0,
            1,
            0,
            0,
            0,
            0,
            0
          ],
          "data": {},
          "itemsStatus": {},
          "evDetailData": "{}",
          "globalState": "RUNNING",
          "subTaskStatus": {},
          "lifecycleEnable": true
        }
      ],
      "$facetResults": [],
      "$context": {}
    }

## HTTP status code 500

Renvoie ce statut en cas d'erreur interne

### Body

Media type: application/json

Type: any

### Transfert d'archives

API qui définit les requêtes pour générer un transfert d'une sélection d'unités d'archives. La requête est composée d'une dslRequest (DSL) et d'autres paramètres nécessaires pour le service. Un processus générant le SIP selon le DSL passé sera lancé. Une autre requête pourra être exécutée par la suite pour télécharger le fichier Zip généré.

#### /transfers post

post

response : JSON asynchronous state / HTTP CODE (202, 200) or (412, 500 else) La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée.

Permissions requises:

- transfers:create

#### post /transfers

response : JSON asynchronous state / HTTP CODE (202, 200) or (412, 500 else) La requête utilise le langage de requête DSL de type recherche multiple (SELECT MULTIPLE) de Vitam en entrée.

Permissions requises:

- transfers:create

### Headers

- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- transferWithLogBookLFC: (boolean)

  True pour inclure les logbook de cycle de vie des unités archivistiques et groupes d'objets pour le transfert

- transferWithoutObjects: (boolean)

  True pour exclure tous les objets des unités archivistiques pour le transfert

- dslRequest: required(object)

  Contient la requête de recherche

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $filter: (object)

    Contient les filtres à appliquer

    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: required(object)

    Contient la projection à appliquer

    - $fields: (object)
  - $facet: (array of DslTypes.Facet)

    Contains facet if requested

    Items: Facet

    - $name: required(string)
    - $terms: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.FormatIdentification.MimeType

      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $size: required(number)

        Example:

            20

      - $order: required(string)

        Example:

            ASC

    - $filters: (object)
      - $query_filters: required(array of object)

        Items: items

        - $name: required(string)
        - $query: required(object)
    - $date_range: (object)
      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $field: required(string)

        Example:

            #qualifiers.versions.FileInfo.LastModified

      - $format: required(string)

        Example:

            YYYY

      - $ranges: required(array of object - minItems: 1 - maxItems: 2)

        Items: items

        - $from: required(string)

          Example:

              2017

        - $to: required(string)

          Example:

              2020

    - $sum: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.Size

      - $subobject: required(string)

        Example:

            #qualifiers.versions

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$filter": {
          "$limit": 100,
          "$offset": 50
        },
        "$projection": {
          "$fields": {
            "myField1": 1,
            "myField2.mySubField": 1
          }
        }
      }

- maxSizeThreshold: (integer)

  Le seuil du poids binaire max autorisé pour un DIP ou un SIP de transfert

- dataObjectVersionToExport: (object)

  Permet de filtrer les objets à retourner. Seule l'une des propriétés (dataObjectVersions ou dataObjectVersionsPatterns) peut être renseignée. Si aucune des deux n'est renseignée, tous les types d'objet sont exportés dans leur dernière version

  - dataObjectVersions: (array of string)

    Liste des types d'objet à inclure dans l'export (exporte uniquement la dernière version). Valeurs possibles : BinaryMaster, Dissemination, Thumbnail, TextContent, PhysicalMaster. Si la liste est vide, tous les types d'objet sont inclus.

  - dataObjectVersionsPatterns: (object)

    Types d'objet à inclure dans l'export avec choix des versions (parmi les première, dernière et toutes). Si l'objet est vide, aucun type d'objet n'est inclus.

    - BinaryMaster: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - Dissemination: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - Thumbnail: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - TextContent: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - PhysicalMaster: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

  Examples:

  Export des dernières versions des BinaryMaster et PhysicalMaster:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersions": [
            "BinaryMaster",
            "PhysicalMaster"
          ]
        }
      }

  Export des dernières versions de tous les types d'objets:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersions": []
        }
      }

  Export de toutes les versions de BinaryMaster et des première et dernière version des PhysicalMaster:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersionsPatterns": {
            "BinaryMaster": [
              "ALL"
            ],
            "PhysicalMaster": [
              "FIRST",
              "LAST"
            ]
          }
        }
      }

  Export de tous les objets:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersionsPatterns": {}
        }
      }

- transferRequestParameters: required(object)

  Les paramètres nécessaires pour faire un transfert d'unités archivistiques

  - archivalAgreement: required(string)

    Contrat d'entrée

  - originatingAgencyIdentifier: required(string)

    Identifiant du service producteur

  - archivalAgencyIdentifier: required(string)

    Identifiant du service d'archives

  - comment: (string)

    Intitulé

  - submissionAgencyIdentifier: (string)

    Identifiant du service versant

  - transferringAgency: (string)

    Service versant

  - transferRequestReplyIdentifier: (string)

    Identifiant de la réponse à une demande de transfert

  - relatedTransferReference: (array of string)

    Référence à un transfert d'archives lié

- sedaVersion: (string)

  La version SEDA d'export de DIP ou d'un SIP de transfert ( 2.2 par défaut )

Example:

    {
      "dataObjectVersionToExport": {
        "dataObjectVersions": [
          "BinaryMaster"
        ]
      },
      "transferWithLogBookLFC": true,
      "transferRequestParameters": {
        "archivalAgreement": "ArchivalAgreement",
        "originatingAgencyIdentifier": "OriginatingAgencyIdentifier",
        "comment": "Comment",
        "submissionAgencyIdentifier": "SubmissionAgencyIdentifier",
        "relatedTransferReference": [
          "RelatedTransferReference"
        ],
        "transferRequestReplyIdentifier": "TransferRequestReplyIdentifier",
        "archivalAgencyIdentifier": "ArchivalAgencyIdentifier",
        "transferringAgency": "TransferringAgency"
      },
      "dslRequest": {
        "$roots": [
          "id0"
        ],
        "$query": [
          {
            "$match": {
              "title": "titre"
            },
            "$depth": 4
          }
        ],
        "$filter": {
          "$limit": 1000,
          "$offset": 10
        },
        "$projection": {
          "$fields": {
            "#id": 1,
            "title": 1,
            "#type": 1,
            "#sector": 1,
            "#parents": 1,
            "#object": 1
          }
        }
      },
      "maxSizeThreshold": 1024,
      "sedaVersion": "2.2"
    }

## HTTP status code 202

Renvoie le statut de l'opération de Transfer

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $results: required(array of StandardTypes.AsyncResponse)

  Contient la list des résultats

  Items: Réponse DSL

  - itemId: required(string)

    Contient le code retrour http

  - message: required(string)

    Contient le nombre de hits

  - globalStatus: required(string)

    Contient le code retrour http

  - statusMeter: required(array of number)

    lala

  - data: required(object)

    Contient le code retrour http

  - itemsStatus: required(object)

    Contient le code retrour http

  - evDetailData: required(string)

    Contient le code retrour http

  - globalState: required(string)

    Contient le code retrour http

  - subTaskStatus: required(object)

    Contient le code retrour http

  - lifecycleEnable: required(boolean)

    Contient le code retrour http

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $facetResults: (array of object)

  Contient la resultat facet

  Items:

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

- $context: (object)

  toto

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "offset": 0,
        "limit": 0,
        "size": 1
      },
      "$results": [
        {
          "itemId": "operationId",
          "message": "",
          "globalStatus": "STARTED",
          "statusMeter": [
            0,
            1,
            0,
            0,
            0,
            0,
            0
          ],
          "data": {},
          "itemsStatus": {},
          "evDetailData": "{}",
          "globalState": "RUNNING",
          "subTaskStatus": {},
          "lifecycleEnable": true
        }
      ],
      "$facetResults": [],
      "$context": {}
    }

## HTTP status code 500

Renvoie ce statut en cas d'erreur interne

### Body

Media type: application/json

Type: any

#### /transfers/{id}/sip/ get

Télécharger le SIP généré par l'opération passée en paramètre.

get

Requête qui retourne un SIP au format ZIP 'Accept' header est 'application/octet-stream'.

Permissions requises:

- transfers:id:sip:read

#### get /transfers/{id}/sip/

Requête qui retourne un SIP au format ZIP 'Accept' header est 'application/octet-stream'.

Permissions requises:

- transfers:id:sip:read

### URI Parameters

- id: required(string)

  Identifiant de l'opération du transfert d'archives.

### Headers

- Accept: required(application/octet-stream)

## HTTP status code 202

Returns the generated SIP file

### Body

Media type: application/octet-stream

Type: any

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Body

Media type: application/json

Type: any

### Elimination

API qui définit les requêtes pour l'élimination des unités archivistiques.

#### /elimination/analysis post

Opération d'analyse des unités archivistiques éliminables.

post

Exécute une opération d'analyse d'élimination des unités archivistiques.

Permissions requises :

- elimination:analysis

#### post /elimination/analysis

Exécute une opération d'analyse d'élimination des unités archivistiques.

Permissions requises :

- elimination:analysis

### Headers

- Accept: required(application/json)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- dslRequest: required(object)

  Contient la requête de recherche

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $threshold: (integer - minimum: 1 - maximum: 100000000)

    Contient le seuil du traitement de masse (optionnel)

  - $filter: (object)
    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: (object)
    - $fields: (object)

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$threshold": 1000
      }

- date: required(string)

  La date d'élimination

Example:

    {
      "dslRequest": {
        "$roots": [ "id0" ],
        "$query": [
          {
            "$match": { "title": "titre" },
            "$depth": 4
          }
        ],
        "$threshold": 10000
      },
      "date": "2018-01-23"
    }

## HTTP status code 200

Success

### Body

Media type: application/json

Type: any

## HTTP status code 202

Renvoie le statut de l'opération de l'élimination

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- httpCode: required(integer)

  Http status code la reponse

Example:

    {
      "httpCode" : 202
    }

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Body

Media type: application/json

Type: any

## HTTP status code 500

Renvoie le statut final de l'opération d'élimination en KO

### Body

Media type: application/json

Type: any

#### /elimination/action post

Opération d'élimination définitive des unités archivistiques éliminables.

post

Exécute une opération d'élimination définitive des unités archivistiques.

Permissions requises:

- elimination:action

#### post /elimination/action

Exécute une opération d'élimination définitive des unités archivistiques.

Permissions requises:

- elimination:action

### Headers

- Accept: required(application/json)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- dslRequest: required(object)

  Contient la requête de recherche

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $threshold: (integer - minimum: 1 - maximum: 100000000)

    Contient le seuil du traitement de masse (optionnel)

  - $filter: (object)
    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: (object)
    - $fields: (object)

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$threshold": 1000
      }

- date: required(string)

  La date d'élimination

Example:

    {
      "dslRequest": {
        "$roots": [ "id0" ],
        "$query": [
          {
            "$match": { "title": "titre" },
            "$depth": 4
          }
        ],
        "$threshold": 10000
      },
      "date": "2018-01-23"
    }

## HTTP status code 200

Success

### Body

Media type: application/json

Type: any

## HTTP status code 202

Renvoie le statut de l'opération de l'élimination

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- httpCode: required(integer)

  Http status code la reponse

Example:

    {
      "httpCode" : 202
    }

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Body

Media type: application/json

Type: any

## HTTP status code 500

Renvoie le statut final de l'opération d'élimination en KO

### Body

Media type: application/json

Type: any

### Journaux d'accès

API qui permet de lancer des actions relatives aux journaux d'accès aux objets binaires des unités archivistiques.

#### /storageaccesslog get

get

Lancer la récupération des journaux sous la forme d'un ZIP contenant des fichiers de log au format Json Lines. La requête prend en paramètre un objet Json pouvant contenir une date de début (StartDate) ou de fin (EndDate) pour filtrer les journaux.

Permissions requises:

- storageaccesslog:read:binary

#### get /storageaccesslog

Lancer la récupération des journaux sous la forme d'un ZIP contenant des fichiers de log au format Json Lines. La requête prend en paramètre un objet Json pouvant contenir une date de début (StartDate) ou de fin (EndDate) pour filtrer les journaux.

Permissions requises:

- storageaccesslog:read:binary

### Headers

- Accept: required(application/json)
- Content-Type: required(application/json)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

### Body

Media type: application/json

Type: object

Properties

- StartDate: (string)

  Date de début des fichiers de log (un fichier de log contenant des logs après et avant cette date est remonté au complet)

  Example:

      2018-11-14

- EndDate: (string)

  Date de fin des fichiers de log (un fichier de log contenant des logs après et avant cette date est remonté au complet)

  Example:

      2018-11-14

Example:

    {
      "StartDate": "2018-11-14"
    }

## HTTP status code 200

Success

### Body

Media type: application/octet-stream

Type: any

## HTTP status code 412

Precondition Failed, date in json input body is not parsable, therefore the operation is not possible

### Body

Media type: application/json

Type: any

### Préservation

Opération de préservation des unités archivistiques.

#### /preservation post

post

Exécute une opération de préservation sur (une ou) les unités archivistiques.

Permissions requises:

- preservation:update

#### post /preservation

Exécute une opération de préservation sur (une ou) les unités archivistiques.

Permissions requises:

- preservation:update

### Headers

- Accept: required(application/json)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- dslQuery: required(object)

  Contient la requête de recherche

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $threshold: (integer - minimum: 1 - maximum: 100000000)

    Contient le seuil du traitement de masse (optionnel)

  - $filter: (object)
    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: (object)
    - $fields: (object)

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$threshold": 1000
      }

- scenarioId: required(string)

  L'identifiant du scénario de préservation

- targetUsage: required(string)

  usage du binaire générer

- sourceUsage: required(string)

  usage du binaire cible

- version: required(string)

  La version du binaire sur lequel on veux opérer une action de préservation

Example:

    {
      "dslQuery" : {
        "$roots": [],
        "$query": [
          {
            "$eq": {
              "#id": "aeaqaaaaaaezyoa6abacealifcom6xyaaaaq"
            }
          }
        ],
        "$threshold": 40,
        "$filter": {},
        "$projection": {}
      },
      "scenarioId" : "PSC-000001",
      "targetUsage": "BinaryMaster",
      "sourceUsage": "Dissemination",
      "version": "FIRST"
    }

## HTTP status code 200

Success

### Body

Media type: application/json

Type: any

## HTTP status code 202

Renvoie le statut de l'opération de préservation

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- httpCode: required(integer)

  Http status code la reponse

Example:

    {
      "httpCode" : 202
    }

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Body

Media type: application/json

Type: any

## HTTP status code 500

Renvoie le statut final de l'opération de préservation en KO

### Body

Media type: application/json

Type: any

### Transfer Reply

Démarage du traitement de l'ATR adressé par le SAE cible dans le cas d'un transfert

#### /transfers/reply post

post

Démarage du traitement de l'ATR adressé par le SAE cible dans le cas d'un transfert.

Permissions requises:

- transfers:reply

#### post /transfers/reply

Démarage du traitement de l'ATR adressé par le SAE cible dans le cas d'un transfert.

Permissions requises:

- transfers:reply

### Headers

- Accept: required(application/xml)
- Content-Type: required(application/json)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- transferWithLogBookLFC: (boolean)

  True pour inclure les logbook de cycle de vie des unités archivistiques et groupes d'objets pour le transfert

- transferWithoutObjects: (boolean)

  True pour exclure tous les objets des unités archivistiques pour le transfert

- dslRequest: required(object)

  Contient la requête de recherche

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $filter: (object)

    Contient les filtres à appliquer

    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: required(object)

    Contient la projection à appliquer

    - $fields: (object)
  - $facet: (array of DslTypes.Facet)

    Contains facet if requested

    Items: Facet

    - $name: required(string)
    - $terms: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.FormatIdentification.MimeType

      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $size: required(number)

        Example:

            20

      - $order: required(string)

        Example:

            ASC

    - $filters: (object)
      - $query_filters: required(array of object)

        Items: items

        - $name: required(string)
        - $query: required(object)
    - $date_range: (object)
      - $subobject: required(string)

        Example:

            #qualifiers.versions

      - $field: required(string)

        Example:

            #qualifiers.versions.FileInfo.LastModified

      - $format: required(string)

        Example:

            YYYY

      - $ranges: required(array of object - minItems: 1 - maxItems: 2)

        Items: items

        - $from: required(string)

          Example:

              2017

        - $to: required(string)

          Example:

              2020

    - $sum: (object)
      - $field: required(string)

        Example:

            #qualifiers.versions.Size

      - $subobject: required(string)

        Example:

            #qualifiers.versions

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$filter": {
          "$limit": 100,
          "$offset": 50
        },
        "$projection": {
          "$fields": {
            "myField1": 1,
            "myField2.mySubField": 1
          }
        }
      }

- maxSizeThreshold: (integer)

  Le seuil du poids binaire max autorisé pour un DIP ou un SIP de transfert

- dataObjectVersionToExport: (object)

  Permet de filtrer les objets à retourner. Seule l'une des propriétés (dataObjectVersions ou dataObjectVersionsPatterns) peut être renseignée. Si aucune des deux n'est renseignée, tous les types d'objet sont exportés dans leur dernière version

  - dataObjectVersions: (array of string)

    Liste des types d'objet à inclure dans l'export (exporte uniquement la dernière version). Valeurs possibles : BinaryMaster, Dissemination, Thumbnail, TextContent, PhysicalMaster. Si la liste est vide, tous les types d'objet sont inclus.

  - dataObjectVersionsPatterns: (object)

    Types d'objet à inclure dans l'export avec choix des versions (parmi les première, dernière et toutes). Si l'objet est vide, aucun type d'objet n'est inclus.

    - BinaryMaster: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - Dissemination: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - Thumbnail: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - TextContent: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

    - PhysicalMaster: (array of string)

      Valeurs possibles : FIRST, LAST, ALL. Il est possible de combiner FIRST et LAST. La combinaison avec ALL est autorisée mais sans impact. Une liste vide n'inclus aucune version.

  Examples:

  Export des dernières versions des BinaryMaster et PhysicalMaster:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersions": [
            "BinaryMaster",
            "PhysicalMaster"
          ]
        }
      }

  Export des dernières versions de tous les types d'objets:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersions": []
        }
      }

  Export de toutes les versions de BinaryMaster et des première et dernière version des PhysicalMaster:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersionsPatterns": {
            "BinaryMaster": [
              "ALL"
            ],
            "PhysicalMaster": [
              "FIRST",
              "LAST"
            ]
          }
        }
      }

  Export de tous les objets:

      {
        "dataObjectVersionToExport": {
          "dataObjectVersionsPatterns": {}
        }
      }

- transferRequestParameters: required(object)

  Les paramètres nécessaires pour faire un transfert d'unités archivistiques

  - archivalAgreement: required(string)

    Contrat d'entrée

  - originatingAgencyIdentifier: required(string)

    Identifiant du service producteur

  - archivalAgencyIdentifier: required(string)

    Identifiant du service d'archives

  - comment: (string)

    Intitulé

  - submissionAgencyIdentifier: (string)

    Identifiant du service versant

  - transferringAgency: (string)

    Service versant

  - transferRequestReplyIdentifier: (string)

    Identifiant de la réponse à une demande de transfert

  - relatedTransferReference: (array of string)

    Référence à un transfert d'archives lié

- sedaVersion: (string)

  La version SEDA d'export de DIP ou d'un SIP de transfert ( 2.2 par défaut )

Example:

    {
      "dataObjectVersionToExport": {
        "dataObjectVersions": [
          "BinaryMaster"
        ]
      },
      "transferWithLogBookLFC": true,
      "transferRequestParameters": {
        "archivalAgreement": "ArchivalAgreement",
        "originatingAgencyIdentifier": "OriginatingAgencyIdentifier",
        "comment": "Comment",
        "submissionAgencyIdentifier": "SubmissionAgencyIdentifier",
        "relatedTransferReference": [
          "RelatedTransferReference"
        ],
        "transferRequestReplyIdentifier": "TransferRequestReplyIdentifier",
        "archivalAgencyIdentifier": "ArchivalAgencyIdentifier",
        "transferringAgency": "TransferringAgency"
      },
      "dslRequest": {
        "$roots": [
          "id0"
        ],
        "$query": [
          {
            "$match": {
              "title": "titre"
            },
            "$depth": 4
          }
        ],
        "$filter": {
          "$limit": 1000,
          "$offset": 10
        },
        "$projection": {
          "$fields": {
            "#id": 1,
            "title": 1,
            "#type": 1,
            "#sector": 1,
            "#parents": 1,
            "#object": 1
          }
        }
      },
      "maxSizeThreshold": 1024,
      "sedaVersion": "2.2"
    }

## HTTP status code 200

Lancement du traitement

### Body

Media type: application/json

Type: any

## HTTP status code 202

Renvoie le statut de l'opération de Transfer

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- $results: required(array of StandardTypes.AsyncResponse)

  Contient la list des résultats

  Items: Réponse DSL

  - itemId: required(string)

    Contient le code retrour http

  - message: required(string)

    Contient le nombre de hits

  - globalStatus: required(string)

    Contient le code retrour http

  - statusMeter: required(array of number)

    lala

  - data: required(object)

    Contient le code retrour http

  - itemsStatus: required(object)

    Contient le code retrour http

  - evDetailData: required(string)

    Contient le code retrour http

  - globalState: required(string)

    Contient le code retrour http

  - subTaskStatus: required(object)

    Contient le code retrour http

  - lifecycleEnable: required(boolean)

    Contient le code retrour http

- httpCode: required(integer)

  Contient le code retrour http

- $hits: required(object)

  Contient le nombre de hits

  - total: required(integer)

    Nombre total de résultats estimé

  - offset: required(integer)

    Décalage du début des résultats

  - limit: required(integer)

    Nombre maximum de résultats voulu à partir de la valeur "offset"

  - size: required(integer)

    Nombre de résultats renvoyés

- $facetResults: (array of object)

  Contient la resultat facet

  Items:

  Example:

      "$facetResults": [
          {
            "name":"qualifiers_qualifier_size",
            "singleValueFacet":
              {
                "value":15.0
              }
          },
          {
            "name": "qualifiers_qualifier_DataObjectVersion",
            "buckets": [
              {
                "value": "BinaryMaster_1",
                "count": 2
              },
              {
                "value": "Dissemination_1",
                "count": 2
              },
              {
                "value": "PhysicalMaster_1",
                "count": 2
              }
            ]
          }
        ]

- $context: (object)

  toto

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "offset": 0,
        "limit": 0,
        "size": 1
      },
      "$results": [
        {
          "itemId": "operationId",
          "message": "",
          "globalStatus": "STARTED",
          "statusMeter": [
            0,
            1,
            0,
            0,
            0,
            0,
            0
          ],
          "data": {},
          "itemsStatus": {},
          "evDetailData": "{}",
          "globalState": "RUNNING",
          "subTaskStatus": {},
          "lifecycleEnable": true
        }
      ],
      "$facetResults": [],
      "$context": {}
    }

## HTTP status code 500

Des erreurs interne

### Body

Media type: application/json

Type: any

### Mise à jour d'arborescence

API qui définit les requêtes liées à la mise à jour d'arborescence des unités archivistiques

#### /reclassification post

post

Lancement d'une ou plusieurs modifications d'arborescence d'unité archivistiques

#### post /reclassification

Lancement d'une ou plusieurs modifications d'arborescence d'unité archivistiques

### Headers

- Accept: required(application/json)
- Content-Type: required(application/json)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

### Body

Media type: application/json

Type: array of object

Example:

    [
      {
        "$roots": [],
        "$query": [{ "$match": { "Title": "XYZ" } }],
        "$action": [
          {
            "$pull": {
              "#unitups": [ "aeaqaaaaaafnrnfpabijualehokvjliaaaaq" ]
            },
            "$add": {
              "#unitups": [ "aeaqaaaaaafnrnfpabijualehok5n5iaaabq" ]
            }
          }
        ]
      },
      {
        "$roots": [],
        "$query": [{ "$eq": { "#id": "aeaqaaaaaafnrnfpabijualehok5n6yaaaaq" } }],
        "$action": [
          {
            "$add": {
              "#unitups": [ "aeaqaaaaaafnrnfpabijualehokvjliaaaaq" ]
            }
          }
        ]
      }
    ]

## HTTP status code 202

Succès

### Endpoints

API qui liste les endpoints de la ressource /access-external/{version}.

#### / options

options

Requête qui retourne la liste des endpoints

#### options /

Requête qui retourne la liste des endpoints

## HTTP status code 200

OK, operation in success

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 503

Service Unavailable, the requested service is unavailable

### Status

#### /status get

get

Vérification de l'état de l'api

#### get /status

Vérification de l'état de l'api

## HTTP status code 204

No Content, Used to test existence or for Status

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 401

Unauthorized (restricted operation), authentication in error

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 404

Not Found, requested resource does not exist

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 503

Service Unavailable, the requested service is unavailable

### Suppression des versions des groupes d'objets

Opération de suppression des versions des groupes d'objets.

#### /deleteGotVersions post

post

Exécute une opération de suppression des versions des groupes d'objets.

Permissions requises:

- objects:deleteGotVersions

#### post /deleteGotVersions

Exécute une opération de suppression des versions des groupes d'objets.

Permissions requises:

- objects:deleteGotVersions

### Headers

- Accept: required(application/json)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: object

Properties

- DslQuery: required(object)

  Contient la requête de recherche

  - $roots: required(array of string)

    Contient les racines de la recherche

  - $query: required(array of object)

    Contient plusieurs requêtes

    Items:

  - $threshold: (integer - minimum: 1 - maximum: 100000000)

    Contient le seuil du traitement de masse (optionnel)

  - $filter: (object)
    - $offset: (integer - minimum: 1 - maximum: 100000)
    - $limit: (integer - minimum: 1 - maximum: 100000)
    - $orderby: (object)
  - $projection: (object)
    - $fields: (object)

  Example:

      {
        "$roots": [
          "guid1",
          "guid2"
        ],
        "$query": [
          {
            "$eq": {
              "myField1": "myValue"
            },
            "$depth": 4
          }
        ],
        "$threshold": 1000
      }

- UsageName: required(string)

  Le nom d'usage pour le groupe d'objet

- SpecificVersions: required(array of integer)

  Liste des versions des groupes d'objets à supprimer

Example:

    {
      "UsageName" : "BinaryMaster",
      "SpecificVersions":  [2,3],
      "DslQuery": {
        "$query":[{"$in":{"#id":["aeaqaaaaaafzhvpkabpjaalwkjvgeyqaaaaq"]}}]
      }
    }

## HTTP status code 200

Success

### Body

Media type: application/json

Type: any

## HTTP status code 202

Renvoie le statut de l'opération de suppression des versions des groupes d'objets

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- httpCode: required(integer)

  Http status code la réponse

Example:

    {
      "httpCode" : 202
    }

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Body

Media type: application/json

Type: any

## HTTP status code 500

Renvoie le statut final de l'opération de suppression des groupes d'objets en KO

### Body

Media type: application/json

Type: any

### Gestion des demandes d'accès depuis offre froide.

APIs de gestion des demandes d'accès à des objets depuis une offre froide.

#### /accessRequests get delete

get

Vérification du statut d'un lot de demandes d'accès.

Pour chaque demande d'accès, un statut est renvoyé :

- READY : La demande d'accès est prête.
- NOT_READY : La demande d'accès est n'est pas encore prête.
- EXPIRED : La demande d'accès a expiré.
- NOT_FOUND : La demande d'accès n'est pas trouvée (supprimée, purgée au bout d'un délais après expiration, non existante ou non visible depuis le contexte du tenant d'appel...)

L'appelant doit monitorer périodiquement le statut des demandes d'accès (typiquement toutes les quelques minutes ou heures). Une fréquence d'appel trop rapide peut avoir un impact sur les performances de l'offres en particulier, et de Vitam en général.

Une demande d'accès est uniquement visible dans le contexte de son tenant, et sera donc perçue comme NOT_FOUND depuis tout autre tenant.

Permissions requises:

- accessrequests:check

delete

Suppression d'une demande d'accès.

Une fois une demandes d'accès supprimée, la disponibilité des données n'est alors plus garantie.

La suppression d'une demande d'accès inexistante est sans effet (idempotence). De même, une demande d'accès est uniquement visible dans le contexte de son tenant.

IMPORTANT: Les demandes d'accès créées doivent être supprimées au plus vite, dès que la donnée a été récupérée. Un trop grand nombre et/ou volume de demandes d'accès non supprimées risque d'impacter les capacité de stockage du cache de l'offre « froide », et la stabilité de l'offre.

Permissions requises:

- accessrequests:remove

#### get /accessRequests

Vérification du statut d'un lot de demandes d'accès.

Pour chaque demande d'accès, un statut est renvoyé :

- READY : La demande d'accès est prête.
- NOT_READY : La demande d'accès est n'est pas encore prête.
- EXPIRED : La demande d'accès a expiré.
- NOT_FOUND : La demande d'accès n'est pas trouvée (supprimée, purgée au bout d'un délais après expiration, non existante ou non visible depuis le contexte du tenant d'appel...)

L'appelant doit monitorer périodiquement le statut des demandes d'accès (typiquement toutes les quelques minutes ou heures). Une fréquence d'appel trop rapide peut avoir un impact sur les performances de l'offres en particulier, et de Vitam en général.

Une demande d'accès est uniquement visible dans le contexte de son tenant, et sera donc perçue comme NOT_FOUND depuis tout autre tenant.

Permissions requises:

- accessrequests:check

### Headers

- Accept: required(application/json)
- Content-Type: required(application/json)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: array of AccessTypes.AccessRequestReference

Items: Les références d'une demande d'accès d'une stratégie stockage « froide »

- accessRequestId: required(string)

  L'identifiant de la demande d'accès

- storageStrategyId: required(string)

  Stratégie de stockage associée à la demande d'accès

Example:

    {
      "accessRequestId": "aeaaaaaaaag5nq65ag2cgal54k3u7aqaaaaq",
      "storageStrategyId": "tape"
    }

Example:

    [
      {
        "accessRequestId": "aeaaaaaaaag5nq65ag2cgal54mxefmqaaaaq",
        "storageStrategyId": "tape"
      },
      {
        "accessRequestId": "aeaaaaaaaahjpju4ab4wgal54rrp2vaaaaaq",
        "storageStrategyId": "tape"
      }
    ]

## HTTP status code 200

Renvoie le statut pour chacune des demandes d'accès.

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

### Body

Media type: application/json

Type: object

Properties

- httpCode: required(integer)

  Http status code la réponse

- $results: required(array of AccessTypes.StatusByAccessRequestReference)

  Statuts pour chaque demandes d'accès

  Items: Le statut d'une demande d'accès sur stratégie stockage « froide »

  - accessRequestReference: required(object)

    La demande d'accès concernée

    - accessRequestId: required(string)

      L'identifiant de la demande d'accès

    - storageStrategyId: required(string)

      Stratégie de stockage associée à la demande d'accès

    Example:

        {
          "accessRequestId": "aeaaaaaaaag5nq65ag2cgal54k3u7aqaaaaq",
          "storageStrategyId": "tape"
        }

  - accessRequestStatus: required(one of READY, NOT_READY, EXPIRED, NOT_FOUND)

    Le statut de la demande d'accès

  Example:

      {
        "accessRequestReference": {
          "accessRequestId": "aeaaaaaaaag5nq65ag2cgal54mxefmqaaaaq",
          "storageStrategyId": "tape"
        },
        "accessRequestStatus": "NOT_FOUND"
      }

Example:

    {
      "httpCode": 200,
      "$hits": {
        "total": 1,
        "offset": 0,
        "limit": 0,
        "size": 1
      },
      "$results": [
        {
          "accessRequestReference": {
            "accessRequestId": "aeaaaaaaaag5nq65ag2cgal54mxefmqaaaaq",
            "storageStrategyId": "tape"
          },
          "accessRequestStatus": "EXPIRED"
        },
        {
          "accessRequestReference": {
            "accessRequestId": "aeaaaaaaaahjpju4ab4wgal54rrp2vaaaaaq",
            "storageStrategyId": "tape"
          },
          "accessRequestStatus": "READY"
        }
      ],
      "$facetResults": [],
      "$context": {}
    }

## HTTP status code 406

Not Acceptable, requested action is not allowed

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 500

Internal Server Error, the server encountered an unexpected condition which prevented it from fulfilling the request

#### delete /accessRequests

Suppression d'une demande d'accès.

Une fois une demandes d'accès supprimée, la disponibilité des données n'est alors plus garantie.

La suppression d'une demande d'accès inexistante est sans effet (idempotence). De même, une demande d'accès est uniquement visible dans le contexte de son tenant.

IMPORTANT: Les demandes d'accès créées doivent être supprimées au plus vite, dès que la donnée a été récupérée. Un trop grand nombre et/ou volume de demandes d'accès non supprimées risque d'impacter les capacité de stockage du cache de l'offre « froide », et la stabilité de l'offre.

Permissions requises:

- accessrequests:remove

### Headers

- Accept: required(application/json)
- Content-Type: required(application/json)
- X-Application-Id: (string)

  Session Identifier from client Front-Office Application

  Example:

      SESSION-ID-00001

- X-Personal-Certificate: (string)

  Personal certificate (in Base64-encoded DER format), required only if this resource needs personal authentification. If the resource requires personal authentication, and no personal certificate has been provided OR the provided personal certificate is unauthorized, the server will return a 401 http status.

  Example:

      MIIGfzCCBGegAwIBAgICAPcwDQYJK...

- X-Tenant-Id: required(number)

  Unique Tenant Identifier.

  Example:

      0

- X-Access-Contract-Id: required(string)

  Unique Access Contract Identifier. Allow read/write access on specific archive unit.

  Example:

      Access-Contract-00001

### Body

Media type: application/json

Type: AccessTraits.AccessTypes.accessRequestReference

Example:

    {
      "accessRequestId": "aeaaaaaaaag5nq65ag2cgal54mxefmqaaaaq",
      "storageStrategyId": "tape"
    }

## HTTP status code 200

Succès du traitement de la requête.

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 406

Not Acceptable, requested action is not allowed

### Headers

- X-Request-Id: required(string)

  Unique Request Identifier

  Example:

      aeeaaaaaachmj6ciaa5nwalv3rsu4laaaaaq

## HTTP status code 500

Internal Server Error, the server encountered an unexpected condition which prevented it from fulfilling the request

### Retourne la liste des unités d'archives correspondantes à l'identifiant pérenne fourni en entrée.

Requête qui retourne la liste des unités d'archives correspondantes à l'identifiant pérenne fourni en entrée. La requête utilise le langage de requête (DSL) de Vitam en entrée pour filter et retourner que les informations demandées en cas de succès.

#### /units/unitpid/{persistentIdentifier} get

get

#### get /units/unitpid/{persistentIdentifier}

### URI Parameters

- persistentIdentifier: required(string)

### Headers

- X_ACCESS_CONTRAT_ID: required(string)

  The contract name

  Example:

      ACC-0001

- X_TENANT_ID: required(string)

  The tenant id

  Example:

      1

## HTTP status code 200

Renvoie les unités d'archives correspondantes à l'identifiant pérenne fourni.

### Body

Media type: application/json

Type: any

Example:

    {
      "httpCode": 200,
      "$hits": { "total": 1, "offset": 0, "limit": 10000, "size": 1 },
      "$results": [
        {
          "DescriptionLevel": "RecordGrp",
          "Title": "monSIP",
          "Description": "Sed placerat sapien a arcu venenatis ultrices. Sed a eleifend odio, ac tincidunt sem. Fusce luctus in augue nec volutpat. Integer libero elit, aliquet nec dapibus at, dictum feugiat sapien. Quisque feugiat purus id sapien facilisis, nec sodales diam semper. Mauris pretium luctus malesuada",
          "Agent": [{ "Function": ["Ajout SEDA 2.2"], "Role": ["Ajout SEDA 2.2"] }],
          "Writer": [{ "Nationality": ["Sealand"] }],
          "Addressee": [
            {
              "FirstName": "Jules",
              "FullName": "Iulius Caesar Divus",
              "Nationality": ["Italien"]
            },
            {
              "GivenName": "Alexandre",
              "BirthPlace": { "City": "Pella", "Country": "Mac\u00E9doine" }
            }
          ],
          "Transmitter": [{ "Function": ["Service de transmission"] }],
          "Sender": [
            {
              "GivenName": "Alexander",
              "BirthDate": "1970-06-03",
              "Position": ["CEO"],
              "Mandate": ["Mandataire_1", "Mandataire_2"]
            }
          ],
          "RelatedObjectReference": {
            "Replaces": [{ "ExternalReference": "ID_Fictif" }]
          },
          "StartDate": "2016-06-03T15:28:00",
          "EndDate": "2016-06-03T15:28:00",
          "Event": [
            { "evDateTime": "2016-06-03T15:28:00" },
            {
              "evId": "EventIdentifier_content0",
              "evTypeProc": "EventTypeCode_content0",
              "evType": "EventType_content0",
              "evDateTime": "2016-06-03T15:28:00",
              "evTypeDetail": "EventDetail_content0",
              "outcome": "Outcome0",
              "outDetail": "OutcomeDetail_content0",
              "outMessg": "OutcomeDetailMessage_content0",
              "evDetData": "EventDetailData_content0",
              "linkingAgentIdentifier": [
                {
                  "LinkingAgentIdentifierType": "Preservation system",
                  "LinkingAgentIdentifierValue": "SAE",
                  "LinkingAgentRole": "Role"
                }
              ]
            }
          ],
          "Signature": [
            {
              "Signer": [
                { "BirthName": "Henry", "SigningTime": "2016-06-03T15:28:00" },
                { "Nationality": ["Monaco"], "SigningTime": "2016-06-03T15:28:00" }
              ],
              "Validator": {
                "FirstName": "ValidatorFirstName",
                "FullName": "ValidatorFullName",
                "ValidationTime": "2016-06-03T15:28:00"
              },
              "ReferencedObject": {
                "SignedObjectId": "aebqaaaaaceaaaabdwll2amjrpo2kmaaaaba",
                "SignedObjectDigest": {
                  "MessageDigest": "942bb63cc16bf5ca3ba7fabf40ce9be19c3185a36cd87ad17c63d6fad1aa29d4312d73f2d6a1ba1266c3a71fc4119dd476d2d776cf2ad2acd7a9a3dfa1f80dc7",
                  "Algorithm": "SHA-512"
                }
              }
            }
          ],
          "TextContent": ["Contenu du message"],
          "OriginatingSystemIdReplyTo": "Syst\u00E8me source",
          "DateLitteral": "XX\u00E8me si\u00E8cle",
          "PersistentIdentifier": [
            {
              "PersistentIdentifierType": "ark",
              "PersistentIdentifierOrigin": "OriginatingAgency",
              "PersistentIdentifierReference": "Agency-00001",
              "PersistentIdentifierContent": "ark:/22567/001a957db5eadaac"
            }
          ],
          "#id": "aeaqaaaaaaeaaaabdwll2amjrpo2kniaaabq",
          "#tenant": 0,
          "#object": "aebaaaaaaaeaaaabdwll2amjrpo2j7yaaaaq",
          "#unitups": [],
          "#min": 1,
          "#max": 1,
          "#allunitups": [],
          "#management": {
            "StorageRule": { "FinalAction": "Transfer" },
            "AppraisalRule": { "FinalAction": "Keep" },
            "ClassificationRule": {
              "ClassificationAudience": "ClassificationAudience0",
              "ClassificationLevel": "Secret D\u00E9fense",
              "ClassificationOwner": "ClassificationOwner0"
            },
            "HoldRule": {
              "Rules": [
                {
                  "Rule": "HOL-00002",
                  "StartDate": "2000-01-01",
                  "HoldEndDate": "2010-01-01",
                  "HoldOwner": "Owner",
                  "HoldReason": "Reason",
                  "HoldReassessingDate": "2005-01-01",
                  "PreventRearrangement": false,
                  "EndDate": "2010-01-01"
                }
              ]
            }
          },
          "#unitType": "INGEST",
          "#operations": ["aeeaaaaaaceaaaabdwll2amjrpozrhyaaaaq"],
          "#opi": "aeeaaaaaaceaaaabdwll2amjrpozrhyaaaaq",
          "#originating_agency": "FRAN_NP_009913",
          "#originating_agencies": ["FRAN_NP_009913"],
          "#storage": { "strategyId": "default" },
          "#version": 0,
          "#sedaVersion": "2.3",
          "#approximate_creation_date": "2023-07-25T07:05:07.817",
          "#approximate_update_date": "2023-07-25T07:05:07.817"
        }
      ],
      "$facetResults": [],
      "$context": {
        "$roots": [],
        "$query": [
          {
            "$and": [
              {
                "$eq": {
                  "PersistentIdentifier.PersistentIdentifierContent": "ark:/22567/001a957db5eadaac"
                }
              },
              { "$eq": { "PersistentIdentifier.PersistentIdentifierType": "ark" } }
            ]
          }
        ],
        "$filter": {},
        "$projection": {},
        "$facets": []
      }
    }

## HTTP status code 401

Unauthorized.

## HTTP status code 404

Not found.

## HTTP status code 500

Internal Server Error.

### Retourne la liste des objets correspondants à l'identifiant pérenne fourni en entrée.

Requête qui retourne la liste des objets correspondants à l'identifiant pérenne fourni en entrée. La requête utilise le langage de requête (DSL) de Vitam en entrée pour filter et retourner que les informations demandées en cas de succès.

#### /objects/objectpid/{persistentIdentifier} get

get

#### get /objects/objectpid/{persistentIdentifier}

### URI Parameters

- persistentIdentifier: required(string)

### Headers

- X_ACCESS_CONTRAT_ID: required(string)

  The contract name

  Example:

      ACC-0001

- X_TENANT_ID: required(string)

  The tenant id

  Example:

      1

## HTTP status code 200

Renvoie les objets correspondants à l'identifiant pérenne fourni.

### Body

Media type: application/json

Type: any

Example:

    {
      "httpCode": 200,
      "$hits": { "total": 1, "offset": 0, "limit": 10000, "size": 1 },
      "$results": [
        {
          "FileInfo": {
            "Filename": "IfTPz6AWS1VwRfNSlhsq83sMNPidvA.pdf",
            "LastModified": "2016-06-03T15:28:00"
          },
          "#id": "aebaaaaaaaeaaaabebepgamjrtiwxiyaaaaq",
          "#nbobjects": 1,
          "#qualifiers": [
            {
              "qualifier": "BinaryMaster",
              "#nbc": 1,
              "versions": [
                {
                  "DataObjectVersion": "BinaryMaster_1",
                  "DataObjectGroupId": "aebaaaaaaaeaaaabebepgamjrtiwxiyaaaaq",
                  "FormatIdentification": {
                    "FormatLitteral": "Plain Text File",
                    "MimeType": "text/plain",
                    "FormatId": "x-fmt/111"
                  },
                  "FileInfo": {
                    "Filename": "IfTPz6AWS1VwRfNSlhsq83sMNPidvA.pdf",
                    "LastModified": "2016-06-03T15:28:00"
                  },
                  "Size": 29403,
                  "Uri": "Content/IfTPz6AWS1VwRfNSlhsq83sMNPidvA.pdf",
                  "MessageDigest": "942bb63cc16bf5ca3ba7fabf40ce9be19c3185a36cd87ad17c63d6fad1aa29d4312d73f2d6a1ba1266c3a71fc4119dd476d2d776cf2ad2acd7a9a3dfa1f80dc7",
                  "Algorithm": "SHA-512",
                  "DataObjectProfile": "ID-Profile",
                  "DataObjectUse": "BinaryMaster",
                  "DataObjectNumber": 40,
                  "PersistentIdentifier": [
                    {
                      "PersistentIdentifierType": "ark",
                      "PersistentIdentifierOrigin": "OriginatingAgency",
                      "PersistentIdentifierReference": "Agency-00021",
                      "PersistentIdentifierContent": "ark:/22567/001a957db5eadxac"
                    },
                    {
                      "PersistentIdentifierType": "ark",
                      "PersistentIdentifierOrigin": "OriginatingAgency",
                      "PersistentIdentifierReference": "Agency-00052",
                      "PersistentIdentifierContent": "ark:/22561/001d957db5eadsac"
                    },
                    {
                      "PersistentIdentifierType": "ark",
                      "PersistentIdentifierOrigin": "OriginatingAgency",
                      "PersistentIdentifierReference": "Agency-00252",
                      "PersistentIdentifierContent": "ark:/22561/021d957db5eadsac"
                    }
                  ],
                  "#id": "aebqaaaaaceaaaabebepgamjrtiwxiyaaaba",
                  "#opi": "aeeaaaaaaceaaaabebepgamjrtiv4dqaaaaq",
                  "#storage": { "strategyId": "default" }
                }
              ]
            }
          ],
          "#type": "",
          "#tenant": 0,
          "#unitups": ["aeaqaaaaaaeaaaabebepgamjrtiwxwaaaaaq"],
          "#allunitups": [
            "aeaqaaaaaaeaaaabebepgamjrtiwxwaaaaaq",
            "aeaqaaaaaaeaaaabebepgamjrtiwxkiaaabq"
          ],
          "#operations": ["aeeaaaaaaceaaaabebepgamjrtiv4dqaaaaq"],
          "#opi": "aeeaaaaaaceaaaabebepgamjrtiv4dqaaaaq",
          "#originating_agency": "FRAN_NP_009913",
          "#originating_agencies": ["FRAN_NP_009913"],
          "#storage": { "strategyId": "default" },
          "#version": 1,
          "#approximate_creation_date": "2023-07-25T11:31:23.673",
          "#approximate_update_date": "2023-07-25T11:31:23.673"
        }
      ],
      "$facetResults": [],
      "$context": {
        "$query": {
          "$subobject": {
            "#qualifiers.versions": {
              "$and": [
                {
                  "$search": {
                    "#qualifiers.versions.PersistentIdentifier.PersistentIdentifierContent": "ark:/22567/001a957db5eadxac"
                  }
                },
                {
                  "$eq": {
                    "#qualifiers.versions.PersistentIdentifier.PersistentIdentifierType": "ark"
                  }
                }
              ]
            }
          }
        },
        "$filter": {},
        "$projection": {}
      }
    }

## HTTP status code 401

Unauthorized.

## HTTP status code 404

Not found.

## HTTP status code 500

Internal Server Error.

### Télécharger le premier objet correspondant à l'identifiant pérenne d'une unité selon les critères passés en paramètre.

Télécharger le premier objet correspondant à l'identifiant pérenne d'une unité selon les critères passés en paramètre.

#### /objects/objectpid/{persistentIdentifier} get

get

#### get /objects/objectpid/{persistentIdentifier}

### URI Parameters

- persistentIdentifier: required(string)

### Headers

- Accept: required(application/octet-stream)
- X_ACCESS_CONTRAT_ID: required(string)

  The contract name

  Example:

      ACC-0001

- X_TENANT_ID: required(string)

  The tenant id

  Example:

      1

## HTTP status code 202

Retourne le premier objet binaire qui correspond aux critères

### Body

Media type: application/octet-stream

Type: any

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Body

Media type: application/json

Type: any

### Télécharger le premier objet correspondant à l'identifiant pérenne d'une unité selon les critères passés en paramètre.

Télécharger le premier objet correspondant à l'identifiant pérenne d'une unité selon les critères passés en paramètre.

#### /objects/unitpid/{persistentIdentifier} get

get

#### get /objects/unitpid/{persistentIdentifier}

### URI Parameters

- persistentIdentifier: required(string)

### Headers

- Accept: required(application/octet-stream)
- X_ACCESS_CONTRAT_ID: required(string)

  The contract name

  Example:

      ACC-0001

- X_TENANT_ID: required(string)

  The tenant id

  Example:

      1

### Query Parameters

- version: (string)

  La version de l'objet binaire, par défaut la dernière version.

- qualifier: (string)

  Le qualifier de l'objet binaire, par défaut 'BINARY_MASTER''.

## HTTP status code 202

Retourne l'objet binaire qui correspond aux critères

### Body

Media type: application/octet-stream

Type: any

## HTTP status code 412

Precondition Failed, some predicates are incorrect, therefore the operation is not possible

### Body

Media type: application/json

Type: any