#%RAML 1.0

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

uses:
  StandardTypes: libraries/StandardTypes.raml
  StandardTraits: libraries/StandardTraits.raml
  IngestTypes: libraries/IngestTypes.raml
  IngestTraits: libraries/IngestTraits.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 Ingest Interne
    content: API Ingest Interne

/ingests:
  displayName: Ingests
  description: |
    API de versement (Ingest). Ce point d'entrée permet de chercher ou de créer une transaction de versement. Une transaction d'entrée est volatile, c'est à dire qu'elle disparaîtra dès qu'elle sera terminée. Sa terminaison est liée à la production du rapport et sa récupération par le service de transfert ayant effectué l'entrée.

    Crée une transaction d'entrée :
    - une requête unique, avec un 'body' contenant toutes les informations dans un ZIP ou un TAR :
      - Métadonnées dans un format SEDA XML ou Json de nom manifest.xml ou manifest.json
      - Tous les binaires dans le répertoire "/content"
    - d'autres formes suivront (multipart/form-data) avec de multiples requêtes utilisant les sous-collections futures *Units* et *Objects*
  post:
    description: |
      Only valid when there is a X-Http-Method-Override: GET header, the behavior is the same as GET /ingests with a body
      - request body : JSON of query in DSL Vitam
      - response : JSON of selected Ingest operations / HTTP CODE 200 or 206
    is: [IngestTraits.IngestListingResponse, StandardTraits.OverrideGet]
    headers:
     X-Action:
        required: true
     X-Context-Id:
        required: false
/operations:
  # root endpoint request
  displayName: Operations
  description: |
    Administration des Workflows Asynchrones (opérations).
  is: [ StandardTraits.StandardOptionalHeader,
  StandardTraits.StandardHeader401, StandardTraits.StandardHeader404,
  StandardTraits.StandardHeader409, StandardTraits.StandardHeader412 ]
  /{id}:
    displayName: Operation
    is: [ StandardTraits.StandardOptionalHeader,
    StandardTraits.StandardHeader401, StandardTraits.StandardHeader404,
    StandardTraits.StandardHeader409, StandardTraits.StandardHeader412 ]
    get:
      description: |
        Permet de récupérer le statut du workflow en cours
      responses:
        202:
          body:
            application/json:
              type: object
              example: !include libraries/samples/async_status.sample
        200:
          body:
            application/json:
              type: object
              example: !include libraries/samples/workflow.sample
    post:
     description: |
       Permet de soumettre un workflow à l'exécution
     body:
      application/json:
        type: object
        example: !include libraries/samples/genericSample.sample
     headers:
      X-Action:
       required: true
      X-Context-Id:
       required: false
     responses:
        202:
          body:
            application/json:
              type: object
              example: !include libraries/samples/async_status.sample
        200:
          body:
            application/json:
              type: object
              example: !include libraries/samples/workflow.sample
    put:
      description: |
        Permet d'interagir avec une opération (pause, reprise, repriorisation par exemple)
      headers:
       X-Action:
        required: true
       X-Context-Id:
        required: false
      body:
        application/json:
          type: object
          example: !include libraries/samples/genericSample.sample
      responses:
        200:
          body:
            application/json:
              type: object
              example: !include libraries/samples/async_status.sample
    delete:
     description: |
       pour annuler le workflow.
     responses:
       204:
         description: |
           Succesfully deleted resource
    head:
      description: |
        Obtenir le statut d'un workflow
      responses:
       200:
         description: |
           operation trouve et status retourne avec succes
       204:
         description: |
          operation non trouve
/status:
  get:
    is: [ StandardTraits.Status, StandardTraits.StandardHeader200,
      StandardTraits.StandardHeader404, StandardTraits.StandardHeader503 ]
