> ## 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.

# Courses

## Courses datasource specification

This page describes the file-based datasource specification for syncing
**Courses** into TechWolf when no standardized connector (such as Workday or SAP
SuccessFactors) is available. It defines the file TechWolf expects, the fields
within it, and which fields are required.

Use this specification when a customer exports Course data from any source
system to flat files. Courses are also referenced by Employee Learning History
(see the
[Employees](/integrations/datasource-integrations/non-standard-datasource-integrations/employees)
specification), so a Course referenced there must be synced through this file.
For the broader picture of how file-based integrations work and how they compare
to API-based connectors, see
[Key concepts](/integrations/datasource-integrations/datasources-key-concepts).

### Technical data flow

Files are delivered to TechWolf over **SFTP** and land in an **AWS S3** bucket,
from where the file-based integration ingests them.

1. The customer (or their source system) exports the Course file described below
   to a customer-hosted SFTP server.
2. TechWolf connects to that SFTP server, pulls the file, and writes it to the
   customer's S3 bucket under the file-based ingest prefix.
3. The file-based integration reads the file from S3 and syncs the data into the
   TechWolf SkillEngine API.

To configure the SFTP server and the folder mappings TechWolf pulls from, see
[Self-service SFTP setup](/integrations/reference/sftp/self-service-setup). For
the S3 layout and naming conventions, see
[File Organization](/integrations/reference/file-structure).

Each file has a fixed location and naming pattern on S3. The base path is:

```
s3://techwolf-<customer>/production/external/input/integrations/file_based/
```

<Note>
  During the testing phase, the `staging` environment path is used instead:
  `s3://techwolf-<customer>/staging/external/input/integrations/file_based/`.
</Note>

### Reading the field tables

Each field is annotated in the **Key** column to indicate its role:

* **Primary key** — the external ID of the file; uniquely identifies the entity.
* **Foreign key** — references the primary key of another entity, linking the
  two.

Fields without a Key annotation are TechWolf data fields used for skill
inference or context, not identifiers.

### Course Information

The Course file. **Required.** Contains the Courses that TechWolf infers skills
for and that Employee Learning History records reference.

File on S3:
`.../file_based/TechWolf_Course_Information/TechWolf_Course_Information_[yyyy][MM][dd]_[HH][mm][ss].csv`

| TechWolf field      | Required | Key         | Notes                                             |
| ------------------- | -------- | ----------- | ------------------------------------------------- |
| course\_id          | Required | Primary key | External ID of the file.                          |
| course\_title       | Required |             |                                                   |
| source              | Optional |             | Added as a suffix.                                |
| course\_description | Optional |             |                                                   |
| course\_active      | Optional |             | Course assumed to be active if no value is given. |
| course\_duration    | Optional |             |                                                   |
