What each result means
Explicit completion is self-reported by your application. It is not proof that a learner solved a flag or passed every question.
Verify a CTF flag
correct and verdict. Possible verdicts are CORRECT_FLAG, INCORRECT_FLAG, and NOT_CTF.
Record explicit completion
When your completion policy permits it, callmarkCompleted():
Read completion status
completed field describes the specified learner. It does not distinguish a correct flag from explicit completion.
Your platform can store the verification result separately. This retains the reason that your application recorded completion.
Update your own platform
Your application can use completion results to unlock lessons or show progress. It controls those decisions. If your platform awards points or badges, deduplicate those awards in your database. A unique learner-and-lab key is one possible policy. Use one transaction for an award and its score update. Concurrent requests or repeated submissions must not create duplicate awards. Cybr does not return point values or unique completion-event IDs.Errors and recovery
A completion persistence error returns HTTP500 with COMPLETION_RECORD_FAILED. The SDK reports server_error and retains that backendCode.
After a timeout, the request outcome can be unknown. Read the learner-specific completion status to help reconcile your records.
A successful response can arrive more than once. Your platform retains its deduplication rule during recovery.
