# manifest.csv

The manifest file provides meta information about the contents of the source data, which is given in subsequent csv files. The properties describe versioning information and also describe files stored interally on the archive. This file is read and parsed prior to all other files.

## Column Order and Optionality

There are only two columns in a manifest.csv file, and they must be in the following order:

| Column       | Required? | Can be blank? | Description                     |
| ------------ | --------- | ------------- | ------------------------------- |
| propertyName | yes       | no            | Name of a property              |
| value        | yes       | no            | The value of the named property |

Property Names and description are given below:

| Property Name         | Required? | Description                                                                    |
| --------------------- | --------- | ------------------------------------------------------------------------------ |
| manifest.version      | yes       | Must be "1.0"                                                                  |
| oneroster.version     | yes       | Must be "1.2"                                                                  |
| file.academicSessions | yes       | Must be one of "absent" \| "bulk" \| "delta"                                   |
| file.categories       | yes       | Must be one of "absent" \| "bulk" \| "delta"                                   |
| file.classes          | yes       | Must be one of "absent" \| "bulk" \| "delta"                                   |
| file.courses          | yes       | Must be one of "absent" \| "bulk" \| "delta"                                   |
| file.demographics     | yes       | Must be one of "absent" \| "bulk" \| "delta"                                   |
| file.enrollments      | yes       | Must be one of "absent" \| "bulk" \| "delta"                                   |
| file.orgs             | yes       | Must be one of "absent" \| "bulk" \| "delta"                                   |
| file.roles            | yes       | Must be one of "absent" \| "bulk" \| "delta"                                   |
| file.users            | yes       | Must be one of "absent" \| "bulk" \| "delta"                                   |
| source.systemName     | yes       | Optional. If this field is blank, the user will be prompted to input in the UI |
| source.systemCode     | yes       | Optional. If this field is blank, the user will be prompted to input in the UI |

### Meta Properties

The following properties names need to be included in a unique row in the manifest file and represent metadata about the contents:

| Property Name       | Value(s)  |
| ------------------- | --------- |
| `manifest.version`  | "1.0"     |
| `oneroster.version` | "1.2"     |
| `source.systemName` | \<string> |
| `source.systemCode` | \<string> |

The special `source.systemName` and `source.systemCode` are required and must be populated for successful import. These values must remain consistent across imports. On export, ManageBac itself uses "ManageBac" and "MB" for those properties, respectively.

The Rostering Manager will prompt the user to enter the values for these properties manually if not provided in the manifest.csv file.

### File Properties

The following properties in the manifest specify how to resolve files other than the manifest, as well as specify the methodology used to select records when extracted:

| Property Name           | Value(s)                      |
| ----------------------- | ----------------------------- |
| `file.academicSessions` | "bulk" \| "delta" \| "absent" |
| `file.orgs`             | "bulk" \| "delta" \| "absent" |
| `file.users`            | "bulk" \| "delta" \| "absent" |
| `file.roles`            | "bulk" \| "delta" \| "absent" |
| `file.classes`          | "bulk" \| "delta" \| "absent" |
| `file.courses`          | "bulk" \| "delta" \| "absent" |
| `file.demographics`     | "bulk" \| "delta" \| "absent" |
| `file.enrollments`      | "bulk" \| "delta" \| "absent" |

The above properties must all be present. However, note that a value of "absent" indicates the respective file is not present in the archive. For example, it is possible to only include users in the `users.csv` and exclude any changes to Academic Terms by specifying "absent" for `file.academicSessions` and excluding `academicSessions.csv` file from the archive.

On import, the behavioral differences between "bulk" and "delta" will be respected for each specified entity. For example, if "bulk" is specified for `file.users.csv` but as "delta" for `file.classes`, then the users will be imported in bulk mode and classes imported in delta mode.

The "bulk" and "delta" values change requirements that occur for each file. When a value of "bulk" is provided, ManageBac will validate that `status` and `dateLastModified` are not present in the respective file. When a value of "delta" is provided, ManageBac will validate that `status` and `dateLastModified` are present and non-blank.

## Additional notes

* The formal OneRoster specification for manifest.csv includes additional properties not listed above, such as `file.userProfiles`, but are not supported by ManageBac. The `manifest.csv` file may optionally contain such properties with a value of "absent."

## Example file

| propertyName                      | value     |
| --------------------------------- | --------- |
| manifest.version                  | 1.0       |
| oneroster.version                 | 1.2       |
| file.academicSessions             | bulk      |
| file.categories                   | absent    |
| file.classes                      | bulk      |
| file.classResources               | absent    |
| file.courses                      | bulk      |
| file.courseResources              | absent    |
| file.demographics                 | bulk      |
| file.enrollments                  | bulk      |
| file.lineItemLearningObjectiveIds | absent    |
| file.lineItems                    | absent    |
| file.lineItemScoreScales          | absent    |
| file.orgs                         | bulk      |
| file.resources                    | absent    |
| file.resultLearningObjectiveIds   | absent    |
| file.results                      | absent    |
| file.resultScoreScales            | absent    |
| file.roles                        | bulk      |
| file.scoreScales                  | absent    |
| file.userProfiles                 | absent    |
| file.userResources                | absent    |
| file.users                        | bulk      |
| source.systemName                 | ManageBac |
| source.systemCode                 | MB        |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guide.fariaedu.com/managebac-oneroster-custom-specification/csv_files/manifest.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
