{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"$metadata": {
"uris": {
"jsonLdContext": "https://your-domain.com/schemas/membership-points.json-ld",
"jsonSchema": "https://your-domain.com/schemas/membership-points.json"
}
},
"required": [
"@context",
"id",
"type",
"issuanceDate",
"credentialSubject",
"credentialSchema",
"credentialStatus",
"issuer"
],
"properties": {
"@context": {
"type": ["string", "array", "object"]
},
"id": {
"type": "string"
},
"type": {
"type": ["string", "array"],
"items": {
"type": "string"
}
},
"issuer": {
"type": ["string", "object"],
"format": "uri",
"required": ["id"],
"properties": {
"id": {
"type": "string",
"format": "uri"
}
}
},
"issuanceDate": {
"type": "string",
"format": "date-time"
},
"expirationDate": {
"type": "string",
"format": "date-time"
},
"credentialSchema": {
"type": "object",
"required": ["id", "type"],
"properties": {
"id": {
"type": "string",
"format": "uri"
},
"type": {
"type": "string"
}
}
},
"credentialSubject": {
"type": "object",
"required": ["id", "memberId", "totalPoints", "tier"],
"properties": {
"id": {
"title": "Credential Subject ID",
"type": "string",
"format": "uri"
},
"memberId": {
"title": "Member ID",
"type": "string",
"description": "Unique member identifier"
},
"totalPoints": {
"title": "Total Points",
"type": "integer",
"description": "Total accumulated membership points",
"minimum": 0
},
"tier": {
"title": "Membership Tier",
"type": "string",
"description": "Current membership tier based on points",
"enum": ["bronze", "silver", "gold", "platinum"]
},
"lastUpdated": {
"title": "Last Updated",
"type": "string",
"format": "date-time",
"description": "When points were last updated"
}
}
}
}
}