narrow-hospital-35452
11/03/2024, 12:59 PMbrief-egg-61061
11/03/2024, 12:59 PMbrief-egg-61061
11/03/2024, 1:00 PMrequired
array in the schema definition. Let's look at an example of how to make a phone number optional: json { "$id": "<https://example.com/registration.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", "<http://ory.sh/kratos|ory.sh/kratos>": { "credentials": { "password": { "identifier": true } }, "verification": { "via": "email" } } }, "phone": { "type": "string", "format": "tel", "title": "Phone number", "<http://ory.sh/kratos|ory.sh/kratos>": { "verification": { "via": "sms" } } } }, "required": ["email"], "additionalProperties": false } } }
In this example, the email
property is required because it's listed in the required
array. The phone
property is not listed in the required
array, which makes it optional [Identity schema extensions](https://www.ory.sh/docs/kratos/manage-identities/customize-identity-schema#identity-schema-extensions). By structuring your schema this way, users will be required to provide an email address, but the phone number will be optional. You can apply this principle to any property in your identity schema that you want to make optional. Remember, the identity schema is a powerful tool for defining the structure of your user data in Ory Kratos. It allows you to specify which fields are required, optional, and how they should be used for various authentication and verification processes [Identity schema](https://www.ory.sh/docs/kratos/manage-identities/identity-schema).narrow-hospital-35452
11/03/2024, 1:00 PMbrief-egg-61061
11/03/2024, 1:00 PMbrief-egg-61061
11/03/2024, 1:01 PMjson { "$schema": "<http://json-schema.org/draft-07/schema#>", "type": "object", "properties": { "traits": { "type": "object", "properties": { "birthdate": { "type": "string", "format": "date", "title": "Birthdate" } } } } }
This schema definition is based on the JSON Schema standard, which Ory uses for identity schemas [Identity schema](https://www.ory.sh/docs/kratos/manage-identities/identity-schema). Let's break down the key parts: 1. The birthdate
property is nested under traits
. In Ory, all custom fields should be placed within the traits
object. 2. The type
is set to "string" because dates are typically represented as strings in JSON. 3. The format
is set to "date", which indicates that this string should conform to the full-date format specified by RFC 3339, section 5.6. This format is "YYYY-MM-DD". 4. The title
is set to "Birthdate", which will be used as the label for this field in user interfaces. If you want to make the birthdate field optional, you would simply omit it from the required
array (if you have one) in your schema. If you want it to be required, you would include it in the required
array. Remember to integrate this new property into your existing schema structure. You might want to add additional validation or customize it further based on your specific needs [Customize identity schemas](https://www.ory.sh/docs/kratos/manage-identities/customize-identity-schema). Also, note that when working with dates, you should be aware of potential privacy implications and ensure you're complying with relevant data protection regulations.