freezing-dress-69350
05/28/2025, 11:48 AM{
"$id": "<https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json>",
"$schema": "<http://json-schema.org/draft-07/schema#>",
"title": "Person",
"type": "object",
"properties": {
"traits": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"title": "E-Mail",
"minLength": 3,
"maxLength": 100,
"description": "Professional e-mail address",
"<http://ory.sh/kratos|ory.sh/kratos>": {
"credentials": {
"password": {
"identifier": true
}
},
"verification": {
"via": "email"
},
"recovery": {
"via": "email"
}
}
},
"contact": {
"type": "object",
"properties": {
"company": {
"type": "string",
"format": "no-validate",
"title": "Company",
"description": "Company associated with the person",
"minLength": 3
},
"phone": {
"type": "string",
"title": "Phone Number",
"format": "tel",
"description": "The phone number of the person"
}
},
"required": [
"company"
]
},
"name": {
"type": "object",
"properties": {
"first": {
"title": "First Name",
"type": "string"
},
"last": {
"title": "Last Name",
"type": "string"
}
},
"required": [
"first",
"last"
]
}
},
"required": [
"email"
]
}
}
}
I was expecting that the traits would contains the name and the company but:
"identity": {
"created_at": "2025-05-28T11:42:52.828748Z",
"id": "82c80f30-317b-4093-8ce0-d739974ec909",
"metadata_public": null,
"organization_id": null,
"recovery_addresses": [
{
"created_at": "2025-05-28T11:42:52.829458Z",
"id": "d275c7be-86cf-49f8-b69e-d1679b4f6b62",
"updated_at": "2025-05-28T11:42:52.829458Z",
"value": "<mailto:fcdscsd@flex.ai|fcdscsd@flex.ai>",
"via": "email"
}
],
"schema_id": "default",
"schema_url": "https://.../schemas/ZGVmYXVsdA",
"state": "active",
"state_changed_at": "2025-05-28T11:42:52.827931299Z",
"traits": {
"email": "<mailto:fcdscsd@flex.ai|fcdscsd@flex.ai>"
},
"updated_at": "2025-05-28T11:42:52.828748Z",
"verifiable_addresses": [
{
"created_at": "2025-05-28T11:42:52.829185Z",
"id": "a107b90f-cd99-4f4f-b50c-89b8b5222043",
"status": "sent",
"updated_at": "2025-05-28T11:42:52.829185Z",
"value": "<mailto:fcdscsd@flex.ai|fcdscsd@flex.ai>",
"verified": false,
"via": "email"
}
]
},
bland-eye-99092
05/28/2025, 12:16 PMfreezing-dress-69350
05/28/2025, 12:21 PMfreezing-dress-69350
05/28/2025, 12:37 PMfreezing-dress-69350
05/28/2025, 12:37 PMfreezing-dress-69350
05/28/2025, 1:01 PMbland-eye-99092
05/28/2025, 1:21 PMfreezing-dress-69350
05/28/2025, 1:23 PMfreezing-dress-69350
05/28/2025, 1:25 PMfreezing-dress-69350
05/28/2025, 1:25 PMbland-eye-99092
05/28/2025, 1:35 PMfreezing-dress-69350
05/28/2025, 1:36 PM{
"$id": "<https://schemas.ory.sh/presets/kratos/identity.email.schema.json>",
"title": "Person",
"type": "object",
"definitions": {
"phone": {
"type": "string",
"format": "tel",
"title": "Phone Number"
},
"optIn": {
"type": "boolean",
"title": "Get security related notifications"
}
},
"properties": {
"traits": {
"type": "object",
"properties": {
"username": {
"type": "string",
"title": "Username",
"minLength": 6,
"maxLength": 32,
"<http://ory.sh/kratos|ory.sh/kratos>": {
"credentials": {
"password": {
"identifier": true
},
"webauthn": {
"identifier": true
},
"totp": {
"account_name": true
},
"passkey": {
"display_name": true
}
}
}
},
"email": {
"type": "string",
"format": "email",
"title": "E-Mail",
"<http://ory.sh/kratos|ory.sh/kratos>": {
"credentials": {
"password": {
"identifier": true
},
"webauthn": {
"identifier": true
},
"totp": {
"account_name": true
},
"code": {
"identifier": true,
"via": "email"
},
"passkey": {
"display_name": true
}
},
"recovery": {
"via": "email"
},
"verification": {
"via": "email"
}
},
"maxLength": 320
},
"phone": {
"$ref": "#/definitions/phone"
},
"optIn": {
"$ref": "#/definitions/optIn"
}
},
"required": [
"email",
"username"
],
"additionalProperties": false,
"dependencies": {
"optIn": {
"properties": {
"phone": {
"$ref": "#/definitions/phone"
}
},
"required": [
"phone"
]
},
"phone": {
"properties": {
"optIn": {
"$ref": "#/definitions/optIn"
}
},
"required": [
"optIn"
]
}
}
}
}
}
freezing-dress-69350
05/28/2025, 1:39 PMfreezing-dress-69350
05/28/2025, 2:39 PMfreezing-dress-69350
05/28/2025, 2:43 PM"traits": {
"email": "<mailto:csdcse@flex.ai|csdcse@flex.ai>",
"optIn": true,
"phone": "+33660606060",
"username": "csdvfdvsdvsdc"
},
freezing-dress-69350
05/28/2025, 2:58 PMfreezing-dress-69350
05/28/2025, 2:59 PMfreezing-dress-69350
05/28/2025, 4:19 PM{
"identity": {
"traits": {
"another_value": "example"
}
}
}
instead of:
{
"identity": {
"traits": {
"email": "<mailto:joe@example.org|joe@example.org>",
"another_value": "example"
}
}
}
freezing-dress-69350
05/28/2025, 4:23 PM{
"identity": {
"traits": {
"email": "...@..."
}
}
}
Then the traits are all replaced with the return value instead of agregating the values togetherbland-eye-99092
05/28/2025, 4:33 PMWhen updating any of the identity fields, be aware that the whole field is replaced by the value returned by the webhook. For example, if the user signed up withNot sure I understand, but pretty sure you're running into this?
freezing-dress-69350
05/28/2025, 4:55 PM