#%RAML 1.0

title: API-Vitam Version Alpha - Administration Management interne
version: v1
baseUri: http://internal.vitam.gouv.fr/functional-administration/{version}
protocols: [ HTTP ]

uses:
  StandardTypes: libraries/StandardTypes.raml
  StandardTraits: libraries/StandardTraits.raml
  RegisterTraits: libraries/RegisterTraits.raml
  TechnicalAdministrationTraits: libraries/TechnicalAdministrationTraits.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 Administration
    content: !include docs-fr/admin-functional.md

/formats:
  displayName: FileFormats
  description: |
   API qui définit les requêtes pour accéder au référentiels des Formats.
   La requête utilise le langage de requête (DSL) de Vitam en entrée et retourne une liste de formats selon le DSL Vitam en cas de succès.
  get:
    description: |
      Request that will return results composed of Formats
    is: [RegisterTraits.RegisterListingResponse]
  post:
    description: |
      Request that will return results composed of Formats if the request is using POST with X-Http-Method-Override: GET.
      If there is no X-Http-Method-Override, this allow to push a new Referential from a PRONOM source file (see :term:`TNA`).
    is: [RegisterTraits.RegisterListingResponse, StandardTraits.OverrideGet,
       RegisterTraits.RegisterUpload, StandardTraits.UploadFileOptionalHeader]
    headers:
      X-Http-Method-Override:
        required: false
  put:
    description: |
      This allow to submit a new Referential from a PRONOM source file (see :term:`TNA`) to check if this could be imported.
    is: [RegisterTraits.RegisterUpload]
    headers:
      X-Http-Method-Override:
        required: false

  /{idu}:
    displayName: FileFormat
    description: |
     API qui définit les requêtes pour accéder à 1 format dans le référentiel des Formats.
    get:
      description: Request that will return result composed of 1 Format
      is: [RegisterTraits.RegisterItemResponse]
    post:
      description: |
        Request that will return result of 1 Format. The request is using POST with X-Http-Method-Override: GET
      is: [RegisterTraits.RegisterItemResponse, StandardTraits.OverrideGet]
      headers:
        X-Http-Method-Override:
          required: true

/rules:
  displayName: Rules
  description: |
   API qui définit les requêtes pour accéder au référentiels des Règles de gestion.
   La requête utilise le langage de requête (DSL) de Vitam en entrée et retourne une liste de règles selon le DSL Vitam en cas de succès.
  get:
    description: |
      Request that will return results composed of Rules
    is: [RegisterTraits.RegisterListingResponse]
  post:
    description: |
      Request that will return results composed of Rules if the request is using POST with X-Http-Method-Override: GET.
      If there is no X-Http-Method-Override, this allow to push a new Referential from a CSV source file containing Rules definitions.
    is: [RegisterTraits.RegisterListingResponse, StandardTraits.OverrideGet, RegisterTraits.RegisterUpload, StandardTraits.UploadFileOptionalHeader]
    headers:
      X-Http-Method-Override:
        required: false
  put:
    description: |
      This allow to submit a new Referential from a CSV source file containing Rules definitions to check if this could be imported.
    is: [RegisterTraits.RegisterUpload]
    headers:
      X-Http-Method-Override:
        required: false

  /{idu}:
    displayName: Rule
    description: |
     API qui définit les requêtes pour accéder à 1 Règle dans le référentiel des Règles de gestion.
    get:
      description: Request that will return result composed of 1 Rule
      is: [RegisterTraits.RegisterItemResponse]
    post:
      description: |
        Request that will return result of 1 Rule. The request is using POST with X-Http-Method-Override: GET
      is: [RegisterTraits.RegisterItemResponse, StandardTraits.OverrideGet]
      headers:
        X-Http-Method-Override:
          required: true

/accesscontracts:
  displayName: Accès contracts
  description: |
     API qui définit les requêtes pour accéder au contracts d'accès
     La requête utilise le langage de requête (DSL) de Vitam en entrée et retourne une liste de contrats d'accès selon le DSL Vitam en cas de succès.
  get:
    description: |
      API qui définit les requêtes pour accéder aux contrats d'accès
    is: [RegisterTraits.RegisterListingResponse]
  post:
    description: |
      Importe un ensemble des contrats d'accès qui sont sauvegardés et indexés en cas de succès
    is: [RegisterTraits.RegisterListingResponse, StandardTraits.OverrideGet, RegisterTraits.RegisterUpload]
    headers:
      X-Http-Method-Override:
        required: false

/ingestcontracts:
  displayName: Ingest contracts
  description: |
     API qui définit les requêtes pour accéder au contracts d'entrée
     La requête utilise le langage de requête (DSL) de Vitam en entrée et retourne une liste de contrats d'entrée selon le DSL Vitam en cas de succès.
  get:
    description: |
       API qui définit les requêtes pour accéder aux contrats d'entrée
    is: [RegisterTraits.RegisterListingResponse]
  post:
    description: |
      Importe un ensemble des contrats d'entrée qui sont sauvegardés et indexés en cas de succès
    is: [RegisterTraits.RegisterItemResponse]
    headers:
      X-Http-Method-Override:
        required: false

/accesscontract/{id}:
  displayName: Access contract
  description: |
   API qui permet de mettre à jour les contrats d'accès via une requête de mise à jour
  put:
    description: Update the given access contract
    is: [RegisterTraits.RegisterUpload]
    headers:
      X-Http-Method-Override:
        required: false

/contract/{id}:
  displayName: Ingest contract
  description: |
    API qui permet de mettre à jour les contrats d'entrées via une requête de mise à jour
  put:
     description: Update the given ingest contract
     is: [RegisterTraits.RegisterUpload]
     headers:
       X-Http-Method-Override:
         required: false


/securityprofiles:
  displayName: Security Profiles
  description: |
     API qui définit les requêtes pour accéder aux Profiles de Sécurité.
     La requête utilise le langage de requête (DSL) de Vitam en entrée et retourne une liste de profiles de sécurité selon le DSL Vitam en cas de succès.
  get:
    description: |
      Request that will return results composed of Security Profiles
    is: [RegisterTraits.RegisterListingResponse]
  post:
    description: |
      Request to import new Security Profiles.
    is: [RegisterTraits.RegisterListingResponse, RegisterTraits.RegisterUpload]

  /{identifier}:
    displayName: Security Profiles
    description: |
     API qui définit les requêtes pour accéder aux Profiles de Sécurité.
    get:
      description: Request that will return a Security Profile
      is: [RegisterTraits.RegisterItemResponse]
    put:
       description: |
         Update the given Security Profile
       is: [RegisterTraits.RegisterUpload]

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

  /accession-register/detail:
    displayName: Accession Register Detail access
    description:  |
     Accès au détail d'un registre de fond.

    get:
      description : |
        Get an Accession Register Detail
      is: [RegisterTraits.AccessionRegisterDetailRawGet]

    post:
      description : |
        Insert or replace Accession Register Detail
      is: [RegisterTraits.AccessionRegisterDetailRawCreate]

/reindex:
  displayName: Reindexation
  description: |
   API qui permet de lancer une réindexation de collection(s)
  post:
    description: |
      Lance la réindexation de collection(s) sur une liste de tenants donnée
    is: [TechnicalAdministrationTraits.AdminReindex]

/alias:
  displayName: Switch Indexes
  description: |
   API qui permet de faire pointer un alias sur un nouvel index
  post:
    description: |
      Lance le switch d'index pour un alias donné
    is: [TechnicalAdministrationTraits.AdminAlias]


/logbookoperations:
  displayName: Journalisation externe
  description: API permettant d'intégrer des journaux d'opération externes.
  is: [ StandardTraits.StandardOptionalHeader ]
  post:
    description: Requête qui insère une opération externe dans le journal des opérations
    body:
      application/json:
        description: |
          Requête qui insère une opération externe dans le journal des opérations
        type: object
        example: !include libraries/examples/Logbook.json
    responses:
      201:
        description: L'opération a bien été créée dans VITAM
      400:
        description: L'opération n'est pas au format exigé. Ou alors la valeur du champ eventTypeProcess est incorrecte (devrait être EXTERNAL)
      409:
        description: L'opération existe déjà
      500:
        description: Internal Server Error, le serveur a rencontré une erreur

/status:
  get:
    is: [ StandardTraits.StandardHeader204,
      StandardTraits.StandardHeader401, StandardTraits.StandardHeader404, StandardTraits.StandardHeader503 ]
