General
Optional properties are marked with a question mark (?) at the end of the type. Instead of setting a property to null, the property can
also simply be omitted. IDs always need to be URL compatible and therefore must be urlencoded. We recommend to use only unicode letters,
numbers and underscores in all IDs. You can get more sample bodies by making a GET request
to
https://TODO_FLOW_HOST/import/getSample?entity=TODO_REPLACE_WITH_ENTITY&contentType=TODO_REPLACE_WITH_CONTENT_TYPE
Replace TODO_REPLACE_WITH_ENTITY with one of User, Student, Organization, Course, Group, Event or Survey. And TODO_REPLACE_WITH_CONTENT_TYPE needs to be either application/json(recommended) orapplication/xml`. You can also simply open this link in your
browser. Don't forget to replace TODO_FLOW_HOST with the hosted flow-instance hostname.
This endpoint is only accessible to the admin user.
Entity import order
Due to current system limitations, you should first import Courses then Groups and then the Events. Otherwise, some entries might no get imported. In that case you will get a warning with the ids of the entries that could not be imported. All other types can be imported in any order.
The following order is recommended when making sequential import calls from one system:
- Users
- Organizations
- Students
- Courses
- Groups
- Events
- Surveys
Global integrity check
By default, after each import, an integrity check over the whole database is executed. In this step, it is checked if all references of all
the imported data can be resolved (e.g. if each student object has its corresponding user object). If you import multiple entities concurrently, you might want to execute this validation only once at the end. Therefore, you can add to the import URL the query
parameter runGlobalIntegrityCheck=false. When set to false the check will be skipped for this request. This parameter is optional and
defaults to true.
e.g.
https://TODO_FLOW_HOST/import/users?importerId=TODO_REPLACE_WITH_IMPORTER_ID&runGlobalIntegrityCheck=false
Attendance record migration
The global integrity check also runs automatic attendance record migration when the system config option autoMigrateOrphanedAttendances is enabled.
An attendance record (or request) becomes orphaned in two situations:
- Event ID changed – the event no longer exists in the course under its old ID (e.g. the upstream CMS assigned a new identifier to the same time slot).
- Student changed group – the student is now registered in a different group than the one the attendance record refers to.
When either condition is met, Flow resolves the correct target event by matching the original start and end time. The record is then migrated to the event in the student's currently registered group.
Because migration runs as part of the global integrity check, you must not suppress the integrity check on the final import call in your sequence. If you use runGlobalIntegrityCheck=false to speed up intermediate import steps, make sure the last call (typically after importing Events) is sent without that parameter, so that the migration runs once at the end.
Records that cannot be resolved unambiguously — for example, because the student is no longer registered for the course, or no event exists at the original time slot in their new group — are left unchanged and counted in the attendanceMigration field of the response.
Date Time format (Date data type)
For date properties, the ISO 8601 format yyyy-MM-dd'T'HH:mm:ss.SSSX is used, e.g. 2023-03-10T12:30:00.000+01:00
or 2023-03-10T11:30:00.000Z (10 March 2023 at 11:30 o'clock UTC).