#%RAML 1.0 title: API-Vitam Version Alpha - Storage interne version: v1 baseUri: http://storage.internal.vitam.gouv.fr/{version} protocols: [ HTTP ] uses: StandardTypes: libraries/StandardTypes.raml StandardTraits: libraries/StandardTraits.raml AccessTypes: libraries/AccessTypes.raml AccessTraits: libraries/AccessTraits.raml DslTypes: libraries/DslTypes.raml CollectionTraits: libraries/CollectionTraits.raml StorageTypes: libraries/StorageTypes.raml StorageTraits: libraries/StorageTraits.raml StorageResourceTraits: libraries/StorageResourceTypes.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: Containers content: | Le principe proposé serait le suivant: - Accès principal au travers d'un Container = Tenant - 3 types sous-jacents: - Objects: pour les éléments binaires (non modifiable = WORM) - Logbooks: pour les journaux (tous) (non modifiable = WORM) - Metadatas: pour les Units et ObjectGroups (modifiable = WMRM => PUT) Questions ou remarques: - Le moteur de stockage est responsable de mettre le "Folder" sous-jacent nécessaire pour séparer les types. /containers: displayName: Tenants as Containers description: Administration des Containers (Dossiers pour un Tenant) get: is: [CollectionTraits.collection-get, StorageTraits.StrategyStorage] post: is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /{cid}: displayName: Single Container API description: API de gestion d'un Container (Tenant). get: description: Permet d'accéder aux informations d'un container is: [CollectionTraits.collection-get, StorageTraits.StrategyStorage] post: description: Permet de créer un nouveau container (nouveau tenant) is: [CollectionTraits.collection-post, StorageTraits.StrategyStorage] body: application/json: type: StorageTypes.ContainerInfo example: !include libraries/samples/containerInfo.sample responses: 201: body: application/json: type: StorageTypes.ContainerInfo example: !include libraries/samples/containerInfo.sample head: description: Permet de tester l'existence du Container is: [CollectionTraits.collection-head, StorageTraits.StrategyStorage] delete: description: Permet d'effacer un Container (si vide) is: [CollectionTraits.collection-delete, StorageTraits.StrategyStorage] /objects: # root endpoint request displayName: Objects operations description: Pour gérer la création de nouveaux Objects, sur la base d'une stratégie de stockage à appliquer get: description: Liste du contenu binaire pour ce tenant. is: [CollectionTraits.collection-get, StorageTraits.StrategyStorage] post: is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /{id_object}: displayName: Object operations type: StorageResourceTraits.StoreWormItem /reports: # root endpoint request displayName: Reports on operations description: | Pour gérer la création de nouveaux Rapports (exemple : ArchiveTransferReply), sur la base d'une stratégie de stockage à appliquer get: description: Liste du contenu binaire pour ce tenant. is: [CollectionTraits.collection-get, StorageTraits.StrategyStorage] post: is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /{id_logbook}: displayName: Reports on operations type: StorageResourceTraits.StoreWormItem /logbooks: # root endpoint request displayName: Logbooks operations description: Pour gérer la création de nouveaux Journaux, sur la base d'une stratégie de stockage à appliquer get: description: Liste du contenu binaire pour ce tenant. is: [CollectionTraits.collection-get, StorageTraits.StrategyStorage] post: is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /{id_logbook}: displayName: Logbooks operations type: StorageResourceTraits.StoreWormItem /lifecycleunits: # root endpoint request displayName: Logbooks operations description: Pour gérer la création de nouveaux Journaux, sur la base d'une stratégie de stockage à appliquer get: description: Liste du contenu binaire pour ce tenant. is: [CollectionTraits.collection-get, StorageTraits.StrategyStorage] post: is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /{id_logbook}: displayName: Logbooks operations type: StorageResourceTraits.StoreWmrmItem /lifecycleobjects: # root endpoint request displayName: Logbooks operations description: Pour gérer la création de nouveaux Journaux, sur la base d'une stratégie de stockage à appliquer get: description: Liste du contenu binaire pour ce tenant. is: [CollectionTraits.collection-get, StorageTraits.StrategyStorage] post: is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /{id_logbook}: displayName: Logbooks operations type: StorageResourceTraits.StoreWmrmItem /units: # root endpoint request displayName: Unit Metadatas operations description: Pour gérer la création de nouvelles Units, sur la base d'une stratégie de stockage à appliquer get: description: Liste du contenu binaire pour ce tenant. is: [CollectionTraits.collection-get, StorageTraits.StrategyStorage] post: is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /{id_md}: displayName: Unit Metadata operations type: StorageResourceTraits.StoreWmrmItem /objectgroups: # root endpoint request displayName: ObjectGroup Metadatas operations description: Pour gérer la création de nouveaux ObjectGroup, sur la base d'une stratégie de stockage à appliquer get: description: Liste du contenu binaire pour ce tenant. is: [CollectionTraits.collection-get, StorageTraits.StrategyStorage] post: is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /{id_md}: displayName: ObjectGroup Metadata operations type: StorageResourceTraits.StoreWmrmItem /manifests: # root endpoint request displayName: Manifests of Ingest operations description: Pour gérer la création de nouveaux fichiers manifest, sur la base d'une stratégie de stockage à appliquer get: description: Liste du contenu binaire pour ce tenant. is: [CollectionTraits.collection-get, StorageTraits.StrategyStorage] post: is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /{id_md}: displayName: Manifests of Ingest operations type: StorageResourceTraits.StoreWormItem /storage/backup: displayName: Sauvegarde des logs du storage par tenant description: Sert à sauvegarder les logs d'accès au moteur de stokage post: description: Sauvegarder les fichiers de logs par tenant. Les logs sont archivés puis stockés à travers le moteur de stockage is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /storage/traceability: displayName: Sécurisation (traçabilité) des logs du storage par tenant description: Sert à sécuriser les logs d'accès au moteur de stokage post: description: Sécuriser les fichiers de logs du storage archivés par tenant. is: [CollectionTraits.collection-get, StandardTraits.OverrideGet, StorageTraits.StrategyStorage] /{type}/logs: displayName: Offer logs description: Accès au logs de l'offre de stockage référente d'une stratégie get: description: Recherche des logs de l'offre de stockage reférente pour la stratégie is: [StorageTraits.StorageLog, CollectionTraits.collection-get, StorageTraits.StrategyStorage] /status: get: is: [ StandardTraits.Status, StandardTraits.StandardHeader200, StandardTraits.StandardHeader401, StandardTraits.StandardHeader404, StandardTraits.StandardHeader503 ]