{
  "entities": {
    "UserProfile": {
      "title": "User Profile",
      "description": "Extended user information stored in Firestore.",
      "type": "object",
      "properties": {
        "uid": { "type": "string", "description": "Firebase Auth UID" },
        "fullName": { "type": "string", "description": "Legal name for certificates" },
        "email": { "type": "string", "format": "email", "description": "Immutable email address" },
        "phoneNumber": { "type": "string", "description": "Phone with country code" },
        "country": { "type": "string", "description": "Country of residence" },
        "role": { "type": "string", "enum": ["learner", "admin"], "description": "User role" },
        "xp": { "type": "integer", "description": "Total experience points" },
        "level": { "type": "integer", "description": "Current learner level" },
        "enrolledCourses": { "type": "array", "items": { "type": "string" }, "description": "List of course IDs" },
        "supportTier": { "type": "string", "enum": ["standard", "priority"], "description": "Support subscription level" },
        "createdAt": { "type": "string", "format": "date-time" }
      },
      "required": ["uid", "fullName", "email", "phoneNumber", "country"]
    },
    "Enrollment": {
      "title": "Course Enrollment",
      "description": "Tracks a user's progress in a specific course.",
      "type": "object",
      "properties": {
        "userId": { "type": "string" },
        "courseId": { "type": "string" },
        "progress": { "type": "number", "description": "Percentage completed" },
        "completed": { "type": "boolean" },
        "completionDate": { "type": "string", "format": "date-time" },
        "examScore": { "type": "number" },
        "certificateId": { "type": "string" },
        "isSupportPaid": { "type": "boolean" },
        "supportTier": { "type": "string", "enum": ["standard", "priority"] },
        "paymentDate": { "type": "string", "format": "date-time" },
        "totalAmountPaid": { "type": "number", "description": "Total USD amount paid for this enrollment" },
        "couponId": { "type": "string", "description": "Optional: reference to coupon used" }
      }
    },
    "Certificate": {
      "title": "Issued Certificate",
      "description": "Record of a completed course or passed exam.",
      "type": "object",
      "properties": {
        "certificateId": { "type": "string", "description": "Unique ID for verification" },
        "userId": { "type": "string" },
        "userName": { "type": "string" },
        "type": { "type": "string", "enum": ["course", "exam"] },
        "title": { "type": "string", "description": "Course or Exam title" },
        "score": { "type": "number" },
        "completionDate": { "type": "string", "format": "date-time" },
        "details": { "type": "object", "description": "Additional metadata for the certificate" }
      },
      "required": ["certificateId", "userId", "userName", "type", "title", "completionDate"]
    },
    "ExamResult": {
      "title": "Exam Result",
      "description": "Record of a user's attempt at an exam.",
      "type": "object",
      "properties": {
        "userId": { "type": "string" },
        "examId": { "type": "string" },
        "courseId": { "type": "string" },
        "score": { "type": "number" },
        "passed": { "type": "boolean" },
        "completedAt": { "type": "string", "format": "date-time" },
        "answers": { "type": "object" }
      },
      "required": ["userId", "examId", "score", "passed", "completedAt"]
    },
    "LeaderboardEntry": {
      "title": "Leaderboard Entry",
      "description": "Public user data for the leaderboard.",
      "type": "object",
      "properties": {
        "uid": { "type": "string" },
        "fullName": { "type": "string" },
        "xp": { "type": "integer" },
        "level": { "type": "integer" },
        "country": { "type": "string" },
        "role": { "type": "string", "enum": ["learner", "admin"] },
        "photoUrl": { "type": "string" }
      },
      "required": ["uid", "fullName", "xp", "level", "role"]
    },
    "Activity": {
      "title": "User Activity",
      "description": "Tracks study sessions and progress events for the heatmap.",
      "type": "object",
      "properties": {
        "userId": { "type": "string" },
        "type": { "type": "string", "enum": ["study_session", "course_progress", "quiz_completed", "exam_passed"] },
        "durationMinutes": { "type": "integer" },
        "courseId": { "type": "string" },
        "timestamp": { "type": "string", "format": "date-time" }
      },
      "required": ["userId", "type", "timestamp"]
    },
    "ForumTopic": {
      "title": "Forum Topic",
      "description": "A discussion thread in the community forum.",
      "type": "object",
      "properties": {
        "title": { "type": "string" },
        "content": { "type": "string" },
        "author": { "type": "string" },
        "authorId": { "type": "string" },
        "tag": { "type": "string" },
        "createdAt": { "type": "string", "format": "date-time" },
        "repliesCount": { "type": "integer" },
        "hot": { "type": "boolean" }
      },
      "required": ["title", "content", "author", "authorId", "tag", "createdAt"]
    },
    "ForumComment": {
      "title": "Forum Comment",
      "description": "A reply to a forum topic.",
      "type": "object",
      "properties": {
        "topicId": { "type": "string" },
        "content": { "type": "string" },
        "author": { "type": "string" },
        "authorId": { "type": "string" },
        "createdAt": { "type": "string", "format": "date-time" }
      },
      "required": ["topicId", "content", "author", "authorId", "createdAt"]
    },
    "Notification": {
      "title": "User Notification",
      "description": "Alerts for user events.",
      "type": "object",
      "properties": {
        "userId": { "type": "string" },
        "title": { "type": "string" },
        "message": { "type": "string" },
        "type": { "type": "string" },
        "read": { "type": "boolean" },
        "createdAt": { "type": "string", "format": "date-time" }
      },
      "required": ["userId", "title", "message", "type", "read", "createdAt"]
    },
    "Resource": {
      "title": "Learning Resource",
      "description": "Downloadable materials for students.",
      "type": "object",
      "properties": {
        "title": { "type": "string" },
        "type": { "type": "string" },
        "size": { "type": "string" },
        "url": { "type": "string" },
        "data": { "type": "string", "description": "Base64 encoded file content" },
        "category": { "type": "string" },
        "createdAt": { "type": "string", "format": "date-time" },
        "authorId": { "type": "string" }
      },
      "required": ["title", "type", "size", "category", "createdAt", "authorId"]
    },
    "Coupon": {
      "title": "Discount Coupon",
      "description": "One-time use or time-limited discount code.",
      "type": "object",
      "properties": {
        "code": { "type": "string", "description": "Unique coupon code" },
        "discountPercent": { "type": "integer", "description": "Percentage discount (1-100)" },
        "courseId": { "type": "string", "description": "Optional: target course ID" },
        "moduleIndex": { "type": "integer", "description": "Optional: target module index" },
        "createdAt": { "type": "string", "format": "date-time" },
        "expiresAt": { "type": "string", "format": "date-time" },
        "createdBy": { "type": "string", "description": "Admin UID" },
        "usedBy": { "type": "array", "items": { "type": "string" }, "description": "List of user UIDs who used this coupon" },
        "usageCount": { "type": "integer", "description": "Total number of times used" },
        "isOneTime": { "type": "boolean", "description": "If true, can only be used once total" },
        "targetTier": { "type": "string", "enum": ["basic", "professional", "premium", "any"], "description": "Restrict coupon to specific tier" },
        "targetType": { "type": "string", "enum": ["course", "exam", "both", "any"], "description": "Restrict coupon to specific purchase type" },
        "active": { "type": "boolean" }
      },
      "required": ["code", "discountPercent", "createdAt", "expiresAt", "createdBy"]
    },
    "CouponUsage": {
      "title": "Coupon Usage Record",
      "description": "Detailed log of every time a coupon is used.",
      "type": "object",
      "properties": {
        "couponId": { "type": "string" },
        "userId": { "type": "string" },
        "courseId": { "type": "string" },
        "discountPercent": { "type": "number" },
        "usedAt": { "type": "string", "format": "date-time" }
      },
      "required": ["couponId", "userId", "courseId", "usedAt"]
    }
  },
  "firestore": {
    "/users/{uid}": {
      "schema": "UserProfile",
      "description": "User profile data"
    },
    "/leaderboard/{uid}": {
      "schema": "LeaderboardEntry",
      "description": "Public leaderboard data"
    },
    "/activities/{activityId}": {
      "schema": "Activity",
      "description": "User activity logs"
    },
    "/enrollments/{enrollmentId}": {
      "schema": "Enrollment",
      "description": "Course tracking data"
    },
    "/certificates/{certificateId}": {
      "schema": "Certificate",
      "description": "Publicly verifiable certificates"
    },
    "/examResults/{resultId}": {
      "schema": "ExamResult",
      "description": "User exam performance records"
    },
    "/forum_topics/{topicId}": {
      "schema": "ForumTopic",
      "description": "Community forum threads"
    },
    "/forum_comments/{commentId}": {
      "schema": "ForumComment",
      "description": "Replies to forum threads"
    },
    "/notifications/{notifId}": {
      "schema": "Notification",
      "description": "User notifications"
    },
    "/resources/{resourceId}": {
      "schema": "Resource",
      "description": "Downloadable learning materials"
    },
    "/coupons/{couponId}": {
      "schema": "Coupon",
      "description": "Discount coupons"
    },
    "/coupon_usage/{usageId}": {
      "schema": "CouponUsage",
      "description": "Detailed coupon usage logs"
    }
  }
}
