GET /v1/assignments/{id}/enrollments already returns. The query does not
pivot modules into columns.
Policy acknowledgements are not part of this report. Living Security has
no policy-acceptance API, so those legacy columns are out of scope, not a
pending mapping. See Divergences from the legacy export.
Fn_FetchAll query first; this report calls it by name.
Required key scopes
Source endpoints
This query does not call
GET /v1/entities. The enrollment row
already carries email and display_name, and the entity list has no
department or job title — so walking it would not populate directory
columns the enrollment row does not already have.
Grain
One row per enrollment (person × assignment). A person assigned the same course through two assignments produces two rows. A person with no enrollments does not appear —/v1 cannot emit a usable directory row
without email, and inventing person-only rows would mix grains.
Request budget: one paginated walk per assignment, sequentially, under the
shared per-key rate limit. Always set limit = "500".
Column mapping
Legacy column names are from your previous provider’s export./v1 fields
are the public API names; the query aliases some of them for the report.
Join keys kept for a star-schema model:
entity_id, assignment_id,
course_id, user_assignment_id.
The query also keeps course_slug, assignment_title, passed,
attempts, assignment_lifecycle_status, and assignment_created_at.
enrollment_status is the learner’s progress, not the assignment lifecycle
(active / paused / completed).
Divergences from the legacy export
- Policy acceptances are not available. This platform has no policy
domain — there is no
/policies,/policy_acceptances, or equivalent/v1resource. Do not treat those columns as a pending mapping. They are out of scope. - Directory extras are omitted, not nulled. Department, job title,
manager, and location are not on
/v1. The query does not invent empty columns for them. - Due date is included even if the legacy export did not have it,
because
Enrollment.due_atis on the API. - Course name prefers the catalog title.
Course.titleis the module name.Assignment.titleis used only when the catalog row is missing (deleted or unpublished). - Long-form, not pivoted. One row per enrollment, not one row per person with a column per module.
Next steps
Power BI and Excel setup
Credentials, pagination, and loading these queries in Power BI or Excel.
Email phishing log
Event-level phishing interactions for the trailing 12 months.
Most susceptible users
Per-person 12-month click, credential, and report rollup.
API keys
Grant
training:read and course:read on the key that refreshes this report.
