82 lines
2.1 KiB
JSON
82 lines
2.1 KiB
JSON
{
|
|
"$id": "https://schemas.nexus.local/nexus-identity.json",
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "Nexus Profile",
|
|
"type": "object",
|
|
"properties": {
|
|
"traits": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string",
|
|
"format": "email",
|
|
"title": "E-Mail",
|
|
"minLength": 3,
|
|
"maxLength": 320,
|
|
"ory.sh/kratos": {
|
|
"credentials": {
|
|
"password": {
|
|
"identifier": true
|
|
},
|
|
"webauthn": {
|
|
"identifier": true
|
|
},
|
|
"totp": {
|
|
"account_name": true
|
|
}
|
|
},
|
|
"verification": {
|
|
"via": "email"
|
|
},
|
|
"recovery": {
|
|
"via": "email"
|
|
}
|
|
}
|
|
},
|
|
"name": {
|
|
"type": "object",
|
|
"properties": {
|
|
"first": {
|
|
"type": "string",
|
|
"title": "First Name",
|
|
"minLength": 1,
|
|
"maxLength": 100
|
|
},
|
|
"last": {
|
|
"type": "string",
|
|
"title": "Last Name",
|
|
"minLength": 1,
|
|
"maxLength": 100
|
|
}
|
|
},
|
|
"required": ["first", "last"]
|
|
},
|
|
"phone": {
|
|
"type": "string",
|
|
"title": "Phone Number",
|
|
"pattern": "^[0-9\\s+()-]*$",
|
|
"maxLength": 30
|
|
},
|
|
"profile_type": {
|
|
"type": "string",
|
|
"title": "Profile Type",
|
|
"enum": ["team", "customer"],
|
|
"description": "Determines whether this is a team member or customer profile"
|
|
}
|
|
},
|
|
"required": ["email", "name", "profile_type"],
|
|
"additionalProperties": false
|
|
},
|
|
"metadata_public": {
|
|
"type": "object",
|
|
"properties": {
|
|
"django_profile_id": {
|
|
"type": "string",
|
|
"title": "Nexus Profile ID",
|
|
"description": "UUID of the linked Django profile (TeamProfile or CustomerProfile)"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|