#%RAML 1.0

title: API-Vitam Version Alpha - Logbook Interne
version: v1
baseUri: http://logbook.internal.vitam.gouv.fr/{version}
protocols: [ HTTP ]

uses:
  StandardTypes: libraries/StandardTypes.raml
  StandardTraits: libraries/StandardTraits.raml
  LogbookTypes: libraries/LogbookTypes.raml
  LogbookTraits: libraries/LogbookTraits.raml
  DslTypes: libraries/DslTypes.raml

securitySchemes:
  VitamPlatform: !include securitySchemes/SecuritySchemeVitamInternal.raml

securedBy: [ VitamPlatform ]

mediaType: application/json

types:
  _reserved:
    type: string

documentation:
  - title: Avertissements
    content: !include docs-fr/avertissement.md

  - title: Licence
    content: !include docs-fr/license.md

  - title: API Logbook Interne
    content: API Logbook Interne

/operations:
  displayName: Operations Logbooks
  description: |
    API d'accès aux Journaux d'opérations (Logbooks Operations). Ce point d'entrée permet de chercher une opération (entrée, audit, élimination, préservation, ...).
    La recherche sur cette API retourne pour chaque opération, la première entrée (la création à la date de démarrage de l'opération) et la dernière entrée (dans l'état connu par le journal à la date de la dernière étape de cette opération).
  get:
    description: |
      Response model for the listing of Logbook operations.
    is: [LogbookTraits.OperationListingResponse ]
  post:
    description: |
      Response model for the listing of Logbook operations. The request is using POST with X-Http-Method-Override: GET
    is: [LogbookTraits.OperationListingResponse, StandardTraits.OverrideGet]

  /{idop}:
    displayName: Operation Logbook
    description: Accès à une opération.
    get:
      description: |
       Response model for one Logbook operation item.
      is: [LogbookTraits.OperationItemResponse]
    post:
      description: |
        Response model for one Logbook operation item. The request is using POST with X-Http-Method-Override: GET
      is: [LogbookTraits.LogbookSingleBulkQueryCreateAppend, StandardTraits.OverrideGet]
    put:
      description: |
       Add one item or item bundle to an existing operation
      is: [LogbookTraits.OperationBulkCreateAppend, LogbookTraits.OperationSingleCreateAppend]

    head:
      description: |
       Allow to know if an operation exists
      is: [StandardTraits.StandardOptionalHeader, StandardTraits.StandardHeader204, StandardTraits.StandardHeader404]


    /traceability:
        post:
          description: |
            Permet de lancer une opération de sécurisation des journaux d'opération sur un tenant donné.
          is: [StandardTraits.StandardOptionalHeader]
          responses:
           200:
             description: |
               L'opération a été réalisée avec succès. L'ID de l'opération est retournée.
           400:
             description: |
               Le tenant n'est pas indiqué, l'opération n'a pu être réalisée.
           500:
             description: |
               Un problème interne a empêché l'opération de se dérouler.

        /check:
           post:
             description: Permet de vérifier une opération de sécurisation des journaux
             is: [LogbookTraits.TraceabilityCheckResponse]

        /{idOperation}/content:
           get:
             description: Permet de télécharger le fichier sécurisé des journaux d'opération
             is: [LogbookTraits.TraceabilityDownloadResponse]
           post:
             description: |
              Permet de télécharger le fichier sécurisé des journaux d'opération (POST avec X-Http-Method-Override: GET)
             is: [LogbookTraits.TraceabilityDownloadResponse]
             headers:
                X-Http-Method-Override:
                  required: true

    /unitlifecycles:
      displayName: Unit Life Cycles Logbooks For Operation
      description: |
        API d'accès aux Journaux de cycle de vie des Units. Ce point d'entrée permet de chercher un cycle de vie
        ayant été impacté par cette opération (pour une entrée les archives ayant été intégrées, pour une élimination les archives ayant été éliminées, ...).

        La recherche sur cette API retourne uniquement la première ligne et la dernière connue pour chaque journal du cycle de vie en rapport avec l'opération concernée.
      get:
        description: |
         Response model for the listing of Logbook unit life cycles
        is: [LogbookTraits.UnitLifeCycleListingResponse ]
      post:
        description: |
          Response model for the listing of Logbook unit life cycles. The request is using POST with X-Http-Method-Override: GET
        is: [LogbookTraits.UnitLifeCycleListingResponse, StandardTraits.OverrideGet]

      delete:
         description: |
          rollback Unit LifeCycles By Operation

      /{id_lfc}:
        displayName: Unit Life Cycle Logbook For Operation
        description: |
          Accès à un cycle de vie lié à l'opération en référence (Unit).

          Le cycle de vie concerné est retourné complet ou tronqué aux seuls événements liés à l'opération en référence selon l'argument X-Full.
        get:
          description: |
           Response model for one Logbook unit life cycle item.
          is: [LogbookTraits.UnitLifeCycleItemResponse]
        post:
          description: |
            Response model for one Logbook unit life cycle item. The request is using POST with X-Http-Method-Override: GET
          is: [LogbookTraits.LogbookSingleBulkQueryCreateAppend, StandardTraits.OverrideGet]
        put:
          description: |
           Add one item or item bundle to an existing operation
          is: [LogbookTraits.OperationBulkCreateAppend, LogbookTraits.OperationSingleCreateAppend]
        delete:
          description:  |
           Purge one Lifecycle during one operation
          is: [StandardTraits.StandardOptionalHeader, StandardTraits.StandardHeader204, StandardTraits.StandardHeader404]
        head:
          description:  |
           Allow to know if a life cycle exists
          is: [StandardTraits.StandardOptionalHeader, StandardTraits.StandardHeader204, StandardTraits.StandardHeader404]

    /objectlifecycles:
      displayName: Object Life Cycles Logbooks For Operation
      description: |
        API d'accès aux Journaux de cycle de vie des Objects. Ce point d'entrée permet de chercher un cycle de
        vie ayant été impacté par cette opération (pour une entrée les archives ayant été intégrées, pour une élimination les archives ayant été éliminées, ...).

        La recherche sur cette API retourne uniquement la première ligne et la dernière connue pour chaque journal du cycle de vie en rapport avec l'opération concernée.
      get:
        description :  |
         Response model for the listing of Logbook object life cycles
        is: [LogbookTraits.ObjectLifeCycleListingResponse ]
      post:
        description : |
          Response model for the listing of Logbook object life cycles. The request is using POST with X-Http-Method-Override: GET
        is: [LogbookTraits.ObjectLifeCycleListingResponse, StandardTraits.OverrideGet]
      delete:
         description: |
          rollback object group LifeCycles By Operation

      /{id_lfc}:
        displayName: Object Life Cycle Logbook For Operation
        description: |
          Accès à un cycle de vie lié à l'opération en référence (Object).

          Le cycle de vie concerné est retourné complet ou tronqué aux seuls événements liés à l'opération en référence selon l'argument X-Full.
        get:
          description :  |
           Response model for one Logbook object life cycle item
          is: [LogbookTraits.ObjectLifeCycleItemResponse]
        post:
          description : |
            Response model for one Logbook object life cycle item. The request is using POST with X-Http-Method-Override: GET
          is: [LogbookTraits.LogbookSingleBulkQueryCreateAppend, StandardTraits.OverrideGet]
        put:
          description:  |
           Add one item or item bundle to an existing operation
          is: [LogbookTraits.OperationBulkCreateAppend, LogbookTraits.OperationSingleCreateAppend]
        delete:
          description:  |
           Purge one Lifecycle during one operation
          is: [StandardTraits.StandardOptionalHeader, StandardTraits.StandardHeader204, StandardTraits.StandardHeader404]

        head:
          description:  |
           Allow to know if a life cycle exists
          is: [StandardTraits.StandardOptionalHeader, StandardTraits.StandardHeader204, StandardTraits.StandardHeader404]

/unitlifecycles:
  displayName: Unit Life Cycle Logbook
  description: |
    API d'accès aux Journaux de cycle de vie des Units.

    La recherche sur cette API retourne uniquement la première ligne et la dernière connue pour chaque journal du cycle de vie.
  get:
    description :  |
     Response model for the listing of Logbook unit life cycles
    is: [LogbookTraits.UnitLifeCycleListingResponse ]
  post:
    description : |
      Response model for the listing of Logbook unit life cycles. The request is using POST with X-Http-Method-Override: GET
    is: [LogbookTraits.UnitLifeCycleListingResponse, StandardTraits.OverrideGet]

  /{id_lfc}:
    displayName: Unit Life Cycle
    description:  |
     Accès à un cycle de vie (Unit).

      Le cycle de vie concerné est retourné complet.
    get:
      description :  |
       Response model for one Logbook unit life cycle item
      is: [LogbookTraits.UnitLifeCycleItemResponse]
    post:
      description : |
        Response model for one Logbook unit life cycle item. The request is using POST with X-Http-Method-Override: GET
      is: [LogbookTraits.UnitLifeCycleItemResponse, StandardTraits.OverrideGet]
    head:
      description: |
         Allow to know the life cycle status
      is: [StandardTraits.StandardOptionalHeader, StandardTraits.StandardHeader204, StandardTraits.StandardHeader404]

/objectlifecycles:
  displayName: Object Life Cycle Logbook
  description: |
    API d'accès aux Journaux du Cycle de Vie des archives (Object).

    La recherche sur cette API retourne uniquement la première ligne et la dernière connue pour chaque journal du cycle de vie.
  get:
    description :  |
     Response model for the listing of Logbook object life cycles
    is: [LogbookTraits.ObjectLifeCycleListingResponse ]
  post:
    description : |
      Response model for the listing of Logbook object life cycles. The request is using POST with X-Http-Method-Override: GET
    is: [LogbookTraits.ObjectLifeCycleListingResponse, StandardTraits.OverrideGet]

  /{id_lfc}:
    displayName: Object Life Cycle
    description:  |
     Accès à un cycle de vie (Object).

      Le cycle de vie concerné est retourné complet.
    get:
      description :  |
       Response model for one Logbook object life cycle item
      is: [LogbookTraits.ObjectLifeCycleItemResponse]
    post:
      description : |
        Response model for one Logbook object life cycle item. The request is using POST with X-Http-Method-Override: GET
      is: [LogbookTraits.ObjectLifeCycleItemResponse, StandardTraits.OverrideGet]
    head:
      description: |
       Allow to know the life cycle status
      is: [StandardTraits.StandardOptionalHeader, StandardTraits.StandardHeader204, StandardTraits.StandardHeader404]

/raw:
  displayName: Raw
  description: |
    API d'accès aux Journaux en mode brut (pas de traduction Vitam).

  /unitlifecycles/bulk:
    displayName: Unit Life Cycle Bulk
    description:  |
     Insertion des cycles de vie des Unit en masse.

    post:
      description : |
        Insert or replace existing Lifecycle Units
      is: [LogbookTraits.LogbookBulkRawInsert]

  /objectgrouplifecycles/bulk:
    displayName: Object Group Life Cycle Bulk
    description:  |
     Insertion des cycles de vie des Objets en masse.

    post:
      description : |
        Insert or replace existing Lifecycle Objects
      is: [LogbookTraits.LogbookBulkRawInsert]

/status:
  get:
    is: [ StandardTraits.Status, StandardTraits.StandardHeader200,
      StandardTraits.StandardHeader404, StandardTraits.StandardHeader503 ]
