{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://api.example.com/schemas/user.json",
"title": "User",
"description": "A user in our system",
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier"
},
"username": {
"type": "string",
"minLength": 3,
"maxLength": 30,
"pattern": "^[a-zA-Z0-9_]+$"
},
"email": {
"type": "string",
"format": "email"
},
"profile": {
"type": "object",
"properties": {
"firstName": { "type": "string", "minLength": 1 },
"lastName": { "type": "string", "minLength": 1 },
"avatar": { "type": "string", "format": "uri" },
"birthDate": { "type": "string", "format": "date" }
},
"required": ["firstName", "lastName"]
},
"roles": {
"type": "array",
"items": {
"enum": ["admin", "user", "moderator", "guest"]
},
"uniqueItems": true,
"minItems": 1
},
"preferences": {
"type": "object",
"properties": {
"theme": { "enum": ["light", "dark", "auto"] },
"language": { "type": "string", "pattern": "^[a-z]{2}(-[A-Z]{2})?$" },
"notifications": {
"type": "object",
"properties": {
"email": { "type": "boolean" },
"push": { "type": "boolean" },
"sms": { "type": "boolean" }
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"createdAt": { "type": "string", "format": "date-time" },
"updatedAt": { "type": "string", "format": "date-time" },
"isActive": { "type": "boolean" }
},
"required": ["id", "username", "email", "profile", "roles", "createdAt", "isActive"],
"additionalProperties": false
}