Configuration des champs ObjectGroup devant être exclus de la recherche
#######################################################################

Cette partie décrit le process d'exclure des propriétes des groupes d'objets lors de leurs recherche dans Vitam en tenant compte des différentes API
qui remontent des données de groupes d'objets.


Configuration
=============

Il faudrait tout d'abord configurer la propriéte ``objectGroupBlackListedFieldsForVisualizationByTenant``, qui définit une Map
associant un tenant à une black liste de propriétes de groupe d'objets. Cette liste de propriétes serait exclue d'affichage lors
des recherchers faites sur la collection d'objet group pour le tenant concerné.

Ci-dessous un exemple de cette configuration, qui existe dans le fichier access-external.conf :

.. code-block:: text

    authentication: true
    jettyConfig: jetty-config.xml
    tenantFilter : true
    authorizeTrackTotalHits : false
    objectGroupBlackListedFieldsForVisualizationByTenant:
     0: ['Filename', '#operations', 'Size']
     1: ['Filename', '#opi']
     2: ['Filename']
     3: ['Filename']
     4: ['Filename']
     5: ['Filename']
     6: ['Filename']
     7: ['Filename']
     8: ['Filename']
     9: ['Filename']

Par défaut, tout les tenants du système (9 dans cet exemple ) déclarent le champ ``Filename`` dans leur black liste. Ensuite, libre à l'exploitant de gérer cette
liste en rajoutant, modifiant, voir même supprimant le champ par défaut.

Fonctionnement
==============

Une fois la configuration de la black liste est faite, et le(s) service(s) access-external démarré(s), les requêtes qui permettent de lancer
des recherches sur les objets groupes, et qui prennent en considération un tenant d'utilisation, ne remontent plus au niveau des réponses,
les propriétes déja mis dans la liste.

Ci-dessous les points d'API concernés :

.. code-block:: yaml

    /objects:
      displayName: Objects
      description: |
       API qui permet d'accéder aux objets groupes en se basant sur une requête qui utilisele 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:
        description: |
          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:
            - objects:read
        is: [AccessTraits.AccessUniqueObjectQualifierResponse, AccessTraits.AccessUniqueObjectResponse]
        headers:
          Accept:
            required: true
            enum: [ "application/octet-stream", "application/json" ]


.. code-block:: yaml

    /units/{{unit-id}}/objects:
      displayName: Objects of one ArchiveUnit
      description: |
       API qui définit les requêtes pour accéder à l'Objet d'archives associé à l'Unité d'archives s'il 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:
        description: |
          Requête qui retourne le résultat contenant un Object d'archives : ses métadonnées ou un de ses objets binaires, rattachés
          à l'identifiant de l'unité archivistique en paramétre.

          Permissions requises:
            - units:id:objects:read:json

            ou
            - units:id:objects:read:binary
        is: [AccessTraits.AccessUniqueObjectQualifierResponse, AccessTraits.AccessUniqueObjectResponse]
        headers:
          Accept:
            required: true
            enum: [ "application/octet-stream", "application/json" ]