Skip to Content
Departments

Departments

Departments are the organizational boundary in Glow. They scope nearly every resource — profiles, documents, parameters, fields, scenarios, simulations, and cohorts — so that different groups within your institution can work independently.

What is a Department?

A department is a top-level organizational unit that controls visibility and access across Glow. Every resource is scoped to one or more departments, and profiles can only see and manage resources within their assigned departments.

University example: The “University” department might be described as an “Innovative base of knowledge in the emerging field of computing.” All CS-related resources — profiles for Professor Smith and TA Johnson, parameters like Temperament and Class, documents like the Academic Integrity Policy — are scoped to this department.

How It Connects: The 5-Step Workflow

Departments underpin every step of the Glow workflow by scoping resources:

  1. Create Personas — Personas are scoped to a department.
  2. Assign to Scenarios — Scenarios, documents, and their parameters/fields are all scoped to a department.
  3. Add to Simulations — Simulations are scoped to a department.
  4. Add to Cohorts — Cohorts are scoped to a department. Only profiles belonging to the same department can be added.
  5. Run Attempts — Learners only see simulations within cohorts from their department.

Departments connect to nearly everything. They are the first resource you should set up when configuring a new Glow instance.


Create a department

Via the CLI

Calls below use $GLOW_INSTANCE_URL + $GLOW_TOKEN — see Authentication to export them once.

glow departments create --body '{ "departments": [ { "name": "University", "description": "Innovative base of knowledge in the emerging field of computing" } ] }'

Via the API

All endpoints use POST and require an Authorization: Bearer header.

curl -X POST $GLOW_INSTANCE_URL/department/create \ -H "Authorization: Bearer $GLOW_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "departments": [ { "name": "University", "description": "Innovative base of knowledge in the emerging field of computing" } ] }'

Member assignment

Profiles belong to one or more departments and can only manage resources within those departments. Assignment happens by updating each profile’s department_ids, but the department detail surface is the natural place to audit who currently sits inside a scope.

What Departments Scope

ResourceHow departments apply
ProfilesA profile belongs to one or more departments and can only manage resources within those departments
DocumentsEach document is scoped to a department
ParametersEach parameter is scoped to a department
FieldsEach field is scoped to a department
ScenariosScenarios inherit department scope
SimulationsSimulations are scoped to a department
CohortsCohorts are scoped to a department; only same-department profiles can be members

Settings and flags

Departments have a settings section that controls department-level configuration. Settings are managed through the settings field on the department get response and the setting_ids field on the draft endpoint. Flags toggle department-level feature behavior.


The draft cycle

Departments support the draft workflow. Changes are saved as a draft before being published, with expected_version providing optimistic concurrency.

glow departments draft --body '{ "input_draft_id": "dept-draft-uuid", "expected_version": 2, "name": "University", "description": "Innovative base of knowledge in the emerging field of computing" }'

Via the API, use PATCH /department/draft with fields like input_draft_id, expected_version, name, description, flag_id, and setting_ids.


Search & filter

curl -X POST $GLOW_INSTANCE_URL/department/search \ -H "Authorization: Bearer $GLOW_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "search": "University", "page_size": 10 }'

Bulk operations

Bulk delete and update follow the canonical all-matching shape — explicit IDs, or all: true with flat filter fields plus optional excluded_ids and a patch body. The persona surface is the prove-out; departments follow the same shape.

Delete by explicit IDs:

glow departments delete --body '{"department_ids": ["dept-1", "dept-2"]}'

Delete all matching a filter (with exclusions):

glow departments delete --body '{ "all": true, "search": "deprecated", "excluded_ids": ["dept-keep-this-one"] }'

Bulk update via patch:

glow departments update --body '{ "all": true, "search": "archived-", "patch": { "archived": true } }'

Common Operations

TaskCLIAPI Endpoint
List all departmentsglow departments listPOST /department/search
Get a departmentglow departments get --body '{...}'POST /department/get
Create departmentsglow departments create --body '{...}'POST /department/create
Update departmentsglow departments update --body '{...}'POST /department/update
Duplicate a departmentPOST /department/duplicate
Delete departmentsglow departments delete --body '{...}'POST /department/delete
Bulk delete (filter)glow departments delete --body '{"all": true, "filter_…": "…"}'POST /department/delete
Export to CSVglow departments exportPOST /department/export
Save a draftglow departments draft --body '{...}'PATCH /department/draft
List draftsPOST /department/drafts
Last updated on