- Purpose
- Understand restart, container recreation, backup and restore for the JSON simulator store.
- Prerequisites
- Administrator access to both applications
- Server-side secret storage
- Architecture
- Integration Studio represents the external client or LMS. API Exams App represents the assessment provider. Exam Player is the candidate-facing browser application.
Configuration
| Runtime | .data/runtime-store.json |
| Configuration | .data/integration-clients.json |
| Key material | .data/lti-tool-private.pem |
| Safety | Serialized queue, temporary file, atomic replacement, and .corrupt-* recovery |
Implementation steps
- 01Keep API Exams’ persistent data directory mounted. Production Compose maps it to /var/lib/api-exams/.data in named volume integration_exams_data.
- 02runtime-store.json contains candidates, tests, authorizations, attempts, answers, results, lifecycle, webhook history and expiring launch/session state.
- 03integration-clients.json contains provider registrations. LTI private key files remain separate.
- 04Valid JSON loads before seeds. Seeds initialize only an empty store and never overwrite operator/runtime data.
- 05For backup, stop or quiesce API Exams, copy the mounted .data directory, and restore it before starting. Never commit .data.
- 06Retaining the volume preserves data across restart, recreation and compose down/up. Deleting it deletes the data.
Testing procedure
- Completed data survives restart
- A new flow works after restart
- Named-volume recreation retains files
Troubleshooting
Data disappeared
Check the .data mount, named volume, permissions, write errors and whether the volume was deleted.