> ## Documentation Index
> Fetch the complete documentation index at: https://developers.techwolf.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# File guidelines

## Input file naming

When uploading files to the TechWolf platform, the following naming conventions
should be followed.

<Note>
  We recommend following this format as much as possible, as this allows for the
  most fluent integrations. However, even some of our standard integrations may
  diverge from this format due to limitations of the source system.
</Note>

### Dynamic files

Dynamic files are files containing entity information at a certain point in
time. Dynamic files of the same type, meaning that they represent the same
entity, are distinguished by their filename date or time.

The components are of the format `<prefix>_<datetime>.<extension>`, where:

* `prefix` is a descriptive name of the file. For all files representing the
  same entities but on different dates, the prefix should be equal.
* `datetime` is the date in the format:
  * `YYYYMMDD` (`20011231` for the 31st of December, 2001).
  * `YYYYMMDD_HHMMss` (`20011231_235959` for the 31st of December, 2001 at
    23:59:59).
* `extension` is the file extension. `.csv` is preferred.

A dynamic filename could look as follows:

```text theme={null}
TechWolf_Employee_Information_20220101.csv
TechWolf_Learning_Data_20250110_193000.csv
```

#### Incremental files

When providing incremental files for our datasource integrations, the prefix
should contain information on what is being provided. We use the following
setup, building on the setup above:

```text theme={null}
<prefix>_<datetime>_<full|delta>.<extension>
```

or

```text theme={null}
TechWolf_Learning_Data_20250110_193000_full.csv
TechWolf_Learning_Data_20250110_193000_delta.csv
```

If no `full|delta` is provided, we will treat files for integrations configured
as differential to be of the `delta` type.

## CSV

CSV (comma-separated values) files are encoded as per the specifications of
[RFC 4180](https://datatracker.ietf.org/doc/html/rfc4180). In particular:

* Records (i.e. rows) are separated by a line break (CRLF, '\r\n') (cfr. RFC
  4180 §2.1)
* Fields within records are separated by commas (',') (cfr. RFC 4180 §2.4)
* Each field is enclosed in double quotes (as allowed by RFC 4180 §2.5 - §2.6)
* Double quotes inside fields (which, as detailed above, are already enclosed in
  double quotes in their entirety) are escaped by being preceded with another
  double quote.

Additionally, fields that would normally start with a '=', '-', '+' or '@'
symbol (or a *Tab* (0x09, \t) or *Carriage return* (0x0D, \r) character) are
escaped with a '\`' character. This is since many CSV-based programs such as
Microsoft Excel or LibreOffice Calc automatically interpret any field that
starts with one of these symbols as a formula and try to evaluate it instead of
simply showing the field as is (cfr.
[OWASP - CSV Injection](https://owasp.org/www-community/attacks/CSV_Injection)).
