Syncing Academic Structure
This page covers how to sync each academic entity from your system to DokStamp, in the correct dependency order.Always follow the order below. Creating a certificate before its dependencies exist will result in
422 validation errors.Sync order
| Step | Event in your system | DokStamp action |
|---|---|---|
| 1 | Institution configured | POST /institutions (or manual setup) |
| 2 | Course created / updated | POST /courses or PATCH /courses/{uuid} |
| 3 | Module/discipline created / updated | POST /modules or PATCH /modules/{uuid} |
| 4 | Module added to course | POST /courses/{uuid}/attach/modules |
| 5 | Modules organized into groups | POST /courses/{uuid}/modules/groups |
| 6 | Cohort (class intake) created | POST /cohorts |
| 7 | Student becomes eligible | lookup → POST /students (if new) |
| 8 | Student enrolled in course | POST /enrollments |
| 9 | Certificate issuance triggered | POST /files + POST /certificates |
Step 2 — Syncing a course
When a course is created or updated in your system, mirror the change to DokStamp.Step 3 — Syncing modules/disciplines
Step 4 — Attaching modules to a course
After creating/syncing both the course and its modules, attach them:Step 5 — Module groups (optional)
If your system organizes disciplines into semesters or periods, mirror that structure:Step 6 — Syncing cohorts
A cohort maps to a specific graduating intake (e.g., “Evening Class 2024/1”):Step 7 — Registering eligible students
When your system determines a student is eligible for a certificate, register them in DokStamp (or verify they already exist):Step 8 — Creating the enrollment
Step 9 — Issuing the certificate
finish: true triggers the full issuance pipeline in a single call: the certificate status is set to issued, all files are cryptographically signed, an academic transcript is generated, and the student is notified. Omitting finish (or passing false) creates the certificate as a draft for later review.Full async example
For queue-based integrations, wrap each step in a job:5xx and 429. Log and discard 4xx (they indicate a data problem, not a transient failure).