> For the complete documentation index, see [llms.txt](https://doc.twake.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.twake.app/internal-documentation/backend-services/files-service.md).

# Files

## description

**Files** is everything related to file upload in Twake after the migration to Node.js. Note that the Twake Drive isn't part of this migration because it will be replaced by Linshare.

Twake Files upload support chunk upload and file encryption.

## Wording

**File:** document to upload, no constraint on the type of document (image, text, pdf ..)

**Chunk:** Large file are split in multiple chunk for the upload process

## Encryption

Files and Storage services in Twake feature encryption at rest in **aes-256-cbc**.

Each file is encrypted with two layers:

* A file encryption key and iv stored in database and different for each file.
* A global encryption key and iv used in addition to the previous one and equal for each file.

## Models and APIs

{% content-ref url="/pages/-M\_uLppeYs73\_vtbywx-" %}
[Database models](/internal-documentation/backend-services/files-service/database-models.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M\_uLppf9JjeUo4WPLht" %}
[REST APIs](/internal-documentation/backend-services/files-service/rest-apis.md)
{% endcontent-ref %}

## Miscellaneous

{% content-ref url="/pages/-M\_uMzPEEZVa033pMptd" %}
[Resumable.js](/internal-documentation/backend-services/files-service/resumablejs.md)
{% endcontent-ref %}
