# Copyright 2025 Deutsche Telekom IT GmbH # # SPDX-License-Identifier: Apache-2.0 openapi: 3.0.3 info: title: File manager API description: A simple file manager for uploading and downloading files. version: 0.0.1 contact: name: TARDIS email: tardis@nop.telekom.de url: https://developer.telekom.de/ license: name: Apache 2.0 x-api-category: TARDIS servers: - url: https://locahost:8080 description: For local development security: - bearerAuth: [] tags: - name: files description: Everything regarding storing and accessing files - name: uploading description: An endpoint to upload new files - name: downloading description: An endpoint to download existing files paths: /v1/files/{fileId}: put: operationId: uploadFile summary: Upload a file description: >- Uploads a file to the server with the specified Id. The id should follow the convention. tags: - uploading parameters: - name: fileId in: path description: Id of the file, should follow the convention ------ required: true schema: type: string - name: X-File-Content-Type in: header description: Content type of the file (e.g., text/yaml, text/json) that will be stored as metadata required: false schema: type: string - name: X-File-Checksum in: header description: Checksum of the file that will be stored as metadata required: false schema: type: string security: - bearerAuth: [] requestBody: $ref: '#/components/requestBodies/FileUploadRequest' responses: '200': $ref: '#/components/responses/FileUploadResponse' '400': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' get: operationId: downloadFile summary: Download a file description: >- Retrieves a file from the server with the specified Id. The id should follow the convention. tags: - downloading parameters: - name: fileId in: path description: Id of the file, should follow the convention ------ required: true schema: type: string security: - bearerAuth: [] responses: '200': $ref: '#/components/responses/FileDownloadResponse' '400': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' delete: operationId: deleteFile summary: Delete a file description: >- Deletes a file from the server with the specified Id. The id should follow the convention. tags: - deleting parameters: - name: fileId in: path description: Id of the file, should follow the convention ------ required: true schema: type: string security: - bearerAuth: [] responses: '204': description: File deleted '400': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: JWT Bearer token authentication requestBodies: FileUploadRequest: content: application/octet-stream: schema: type: string format: binary responses: FileUploadResponse: description: Successful upload of a file. Contains the assigned id. headers: X-File-Content-Type: description: Content type of the file as stored in metadata schema: type: string X-File-Checksum: description: Checksum of the file as stored in metadata schema: type: string content: application/json: schema: type: object required: - id properties: id: type: string FileDownloadResponse: description: >- Successful download of a file with the specified id. Responds with the file contents. headers: X-File-Content-Type: description: Content type of the file as stored in metadata schema: type: string X-File-Checksum: description: Checksum of the file as stored in metadata schema: type: string content: application/octet-stream: schema: type: string format: binary ErrorResponse: description: In case of any error, this object is returned content: application/problem+json: schema: $ref: '#/components/schemas/ApiProblem' schemas: ApiProblem: description: Based on https://www.rfc-editor.org/rfc/rfc9457.html type: object required: - type - status - title - detail properties: type: type: string status: type: integer title: type: string detail: type: string instance: type: string