{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://tattvabodha.com/schemas/tattvabodha-practice-completion-v1.0.0.schema.json",
  "title": "Tattvabodha Practice Completion Payload",
  "description": "App-to-service payload submitted only after the user explicitly completes a practice session. The authenticated server context supplies uid.",
  "type": "object",
  "required": ["sessionId", "practiceId", "occurredAt", "durationSeconds", "objects", "skills", "completed"],
  "properties": {
    "sessionId": { "type": "string", "minLength": 1, "maxLength": 200, "pattern": "^[A-Za-z0-9_-]+$" },
    "practiceId": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$" },
    "occurredAt": { "type": "string", "format": "date-time" },
    "durationSeconds": { "type": "integer", "minimum": 0 },
    "objects": { "type": "array", "uniqueItems": true, "items": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$" } },
    "skills": { "type": "array", "uniqueItems": true, "items": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$" } },
    "completed": { "const": true }
  },
  "additionalProperties": false
}
