openapi: 3.0.3 info: title: blek! File (fileD) File API description: |- This document describes the API of the File API of blek! File fileD. This API has optional api key authorization, which should be located in the env file. version: 0.0.1 servers: - url: http://localhost description: Local staging environment tags: - name: File API description: API for interacting with files paths: /api/files/get_all: get: summary: Get all files description: |- Get all files available. Returns an array of file objects with all data tags: - File API security: - apikey: [ key ] responses: 200: description: An array of file objects content: application/json: schema: type: array items: $ref: '#/components/schemas/File' example: - path: /opt/useruploads/417e1ec1a0e82aac809da7e5aa309e03bf47eaa96ab2e335f5bb739d062d835b04ccebb89214bd5a54879527789a81ae4e9deab813e4212c757b36d08fa8165a size: 10 name: null mime: text/plain delete_at: '1984-01-01T00:00:00.000Z' sha512: 417e1ec1a0e82aac809da7e5aa309e03bf47eaa96ab2e335f5bb739d062d835b04ccebb89214bd5a54879527789a81ae4e9deab813e4212c757b36d08fa8165a 401: description: |- This error code is returned if one of the two conditions are met: 1. The instance does not allow getting information about all files. 2. The instance requires API key for all API manipulations. 3. The provided API key is invalid. 4. API authorization is not enabled, but a key is provided /api/files/delete: post: summary: Delete a file description: |- Deletes a file thats been uploaded. It will work if one of the two conditions are met: 1. The requester's IP is the same as the uploader IP 2. The request is authorized with an API key tags: - File API security: - apikey: [ key ] responses: 200: description: |- The file has been deleted Returns an empty object for future extension content: application/json: schema: type: object example: {} 401: description: |- This error code is returned if one of the two conditions are met: 1. The instance does not allow deleting files via API. 2. The file has been uploaded from another IP, which is not this one, and the API was not authorized via an API key. 3. The instance requires API key for all API manipulations. 4. The provided API key is invalid. 5. API authorization is not enabled, but a key is provided requestBody: content: application/json: schema: type: object properties: fid: type: string example: ID or name of the file. It is the NAME in file.blek.codes/uploads/NAME /api/files/upload: post: summary: Upload a file description: |- A programmatic way to upload a file. The request must be encoded in `multipart/form-data` to ensure that the binary file is transferred properly. tags: - File API security: - apikey: [ key ] requestBody: content: multipart/form-data: schema: type: object properties: file: type: string example: binary file data description: binary file data instance_pass: type: string example: super_secret_pass description: Instance-specific password needed to upload files metadata: type: object description: file info properties: sha512: type: string description: SHA512 hash of the file to ensure integrity name: type: string description: Optional name of the file so it would be accessible like file.blek.codes/uploads/{name} responses: 200: description: File uploaded successfully 401: description: |- This error code is returned if one of the two conditions are met: 1. The instance does not allow API file uploads. 2. The instance requires API key for all API manipulations. 3. The provided API key is invalid. 4. API authorization is not enabled, but a key is provided components: schemas: File: type: object properties: path: type: string description: Path to the file in fileD's filesystem example: 1 size: type: integer description: Size of the file in bytes example: 10 name: type: string description: (optional) Name of the file example: null mime: type: string description: MIME type of the file example: text/plain delete_at: type: string description: TimeDate when the file will be deleted example: '1984-01-01T00:00:00.000Z' sha512: type: string example: 417e1ec1a0e82aac809da7e5aa309e03bf47eaa96ab2e335f5bb739d062d835b04ccebb89214bd5a54879527789a81ae4e9deab813e4212c757b36d08fa8165a securitySchemes: apikey: type: http scheme: bearer description: Optional authorization, as defined in the instance-specific config file