Attribute Values
Each Attribute contains an instance of an Attribute Value within its value property.
There are different types of Attribute Values.
The types define the value’s structural definition, rendering information and validators.
For example, an email address with the value address@company.corp is stored with the Attribute Value type EMailAddress, which defines
- the data type of the actual value (a String)
- how it is validated (the pattern of an email address and a maximum length)
- information about how it can be rendered on the UI
enmeshed defines a standard set of possible Attribute Value types for Identities within the enmeshed ecosystem and its meaning for the Identities. And every Identity can understand/use/fill/query these Attribute Value types of other Identities.
Most Attribute Value types are atomic, which means that they have only one property called value (e.g. EMailAddress, DisplayName, PhoneNumber).
But there are also more complex Attribute Value types which consist of multiple properties with a strong correlation (e.g. StreetAddress, PersonName).
Valid Characters in Attributes
Characters in Attribute values are restricted to the normative characters of DIN 91379 which reduces validation efforts required from integrators. This bans, for example, foreign scripts like Greek or Chinese, but transliterations are possible in that case. Also banned are emojis, which deters joke entries. See a one-page overview of the characters (the allowed characters are highlighted) and the regex used for validation - search for datatypeC.
Identity Attributes
The Attribute Values in this chapter can only be used in an Identity Attribute.
Affiliation
A complex Attribute Value type which defines the affiliation of a person to an organization. Inside of the organization the person can have a role and it can be assigned to a specific unit inside of the organization.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"Affiliation" |
✓ | |
role |
string |
✗ | max. length: 100 |
organization |
string |
✓ | max. length: 100 |
unit |
string |
✗ | max. length: 100 |
BirthDate
The birth date of a natural person in the Gregorian calendar.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"BirthDate" |
✓ | |
day |
number |
✓ | min: 1 max: 31 must be an integer |
month |
number |
✓ | min: 1 max: 12 must be an integer |
year |
number |
✓ | min: 1 max: 9999 must be an integer |
BirthName
The BirthName is the surname of the person at birth. Some countries allow changing the surname, thus the BirthName is also used as the identification. The BirthName is innate depending on your surname at birth.
If this value is set, there has been a change of the surname throughout the life of the person.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"BirthName" |
✓ | |
value |
string |
✓ | max. length: 100 |
BirthPlace
The BirthPlace consists of the birth city and birth country and can optionally include a birth state (e.g. if the birth city is ambiguous within the birth country).
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"BirthPlace" |
✓ | |
city |
string |
✓ | max. length: 100 |
country |
string |
✓ | only ISO 3166-1 alpha-2 country codes |
state |
string |
✗ | max. length: 100 |
Citizenship
The Citizenship defines which country currently recognizes you as a citizen. Thus, the Citizenship usually refers to the country you have a passport from.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"Citizenship" |
✓ | |
value |
string |
✓ | only ISO 3166-1 alpha-2 country codes |
CommunicationLanguage
The CommunicationLanguage is an officially recognized language the person can communicate with.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"CommunicationLanguage" |
✓ | |
value |
string |
✓ | only ISO-639-1 language codes |
DeliveryBoxAddress
A complex Attribute Value defining the components of a delivery box address.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"DeliveryBoxAddress" |
✓ | |
recipient |
string |
✓ | max. length: 100 |
deliveryBoxId |
string |
✓ | max. length: 100 |
userId |
string |
✓ | max. length: 100 |
zipCode |
string |
✓ | max. length: 100 |
city |
string |
✓ | max. length: 100 |
country |
string |
✓ | only ISO 3166-1 alpha-2 country codes |
phoneNumber |
string |
✗ | see PhoneNumber |
state |
string |
✗ | max. length: 100 |
DisplayName
The Display Name is the textual representation of the natural or legal person. It is usually combined out of titles, names or legal statuses.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"DisplayName" |
✓ | |
value |
string |
✓ | max. length: 100 |
EMailAddress
The email address which can be used to reach the Identity over email systems.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"EMailAddress" |
✓ | |
value |
string |
✓ | min. length: 3 max. length: 254 must match ^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,}$ |
FaxNumber
The telephone number which can be used to reach the Identity via fax systems.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"FaxNumber" |
✓ | |
value |
string |
✓ | min. length: 3 max. length: 100 must match ^[\d+\-x#*()/[\] ]{3,100}$ |
IdentityFileReference
An IdentityFileReference is a link to an enmeshed File and can be used to add a File as an Attribute of an Identity. One example for a use case is some kind of certificate. How an IdentityFileReference can be used to exchange Files using Attributes is described in the corresponding scenario documentation.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"IdentityFileReference" |
✓ | |
value |
string |
✓ | min. length: 30 max. length: 150 |
GivenName
The Given Name, also called first name or forename, is the name given to a person at birth which differentiates it from other family, tribe or community members.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"GivenName" |
✓ | |
value |
string |
✓ | max. length: 100 |
HonorificPrefix
The honorific prefix of a person, e.g. ‘Sir’.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"HonorificPrefix" |
✓ | |
value |
string |
✓ | max. length: 100 |
HonorificSuffix
The honorific suffix of a person, e.g. ‘PhD’
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"HonorificSuffix" |
✓ | |
value |
string |
✓ | max. length: 100 |
JobTitle
A short phrase that describes the position an employee has within an organization, e.g. “Senior Developer” in case of a software company.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"JobTitle" |
✓ | |
value |
string |
✓ | max. length: 100 |
MiddleName
In various cultures, a middle name is a portion of a personal name that is written between the person’s first given name and their surname.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"MiddleName" |
✓ | |
value |
string |
✓ | max. length: 100 |
Nationality
The Nationality is the citizenship of a person at birth. One cannot change the Nationality because it’s innate. Thus, the Nationality refers usually to the country where you are born.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"Nationality" |
✓ | |
value |
string |
✓ | only ISO 3166-1 alpha-2 country codes |
PersonName
The PersonName is a complex Attribute Value type consisting of the GivenName, MiddleName, Surname, HonorificSuffix and HonorificPrefix of a person.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"PersonName" |
✓ | |
givenName |
string |
✓ | see GivenName |
middleName |
string |
✗ | see MiddleName |
surname |
string |
✓ | see Surname |
honorificSuffix |
string |
✗ | see HonorificSuffix |
honorificPrefix |
string |
✗ | see HonorificPrefix |
PhoneNumber
The telephone number which can be used to reach the Identity via telephone.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"PhoneNumber" |
✓ | |
value |
string |
✓ | max. length: 100 |
PostOfficeBoxAddress
A complex Attribute Value defining the components of a post office box address.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"PostOfficeBoxAddress" |
✓ | |
recipient |
string |
✓ | max. length: 100 |
boxId |
string |
✓ | max. length: 100 |
zipCode |
string |
✓ | max. length: 100 |
city |
string |
✓ | max. length: 100 |
country |
string |
✓ | only ISO 3166-1 alpha-2 country codes |
state |
string |
✗ | max. length: 100 |
Pseudonym
The officially registered pseudonym of a person.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"Pseudonym" |
✓ | |
value |
string |
✓ | max. length: 100 |
SchematizedXML
SchematizedXML can be used to exchange files in XML format.
The exchange of XML files is also possible via IdentityFileReference, but SchematizedXML has the advantage that it is possible to validate the XML and display the Attributes in the wallet.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"SchematizedXML" |
✓ | |
value |
string |
✓ | max. length: 50000 must be a valid XML encoded string |
schemaURL |
string |
✗ | min. length: 3 max. length: 1024 must be a valid URL |
Sex
The Sex is the biological, medical, or officially registered gender of a natural person.
Please be advised that the possible values are defined by the public laws and technical identification standards that may vary between countries.
We acknowledge and respect each person’s self-defined sexual and gender identity.
The “Gender” Attribute Value type is currently being evaluated to ensure inclusive and consistent representation.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"Sex" |
✓ | |
value |
string |
✓ | one of: "intersex", "female", "male" |
StreetAddress
A complex Attribute Value defining the components of a “normal” address.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"StreetAddress" |
✓ | |
recipient |
string |
✓ | max. length: 100 |
street |
string |
✓ | max. length: 100 |
houseNo |
string |
✓ | max. length: 100 |
zipCode |
string |
✓ | max. length: 100 |
city |
string |
✓ | max. length: 100 |
country |
string |
✓ | only ISO 3166-1 alpha-2 country codes |
state |
string | undefined |
✓ | max. length: 100 |
Surname
The Surname, also called family name or last name, is the portion of the personal name that indicates the family, tribe or community.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"Surname" |
✓ | |
value |
string |
✓ | max. length: 100 |
Website
The website of the person which can be used to get more information about the person.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"Website" |
✓ | |
value |
string |
✓ | min. length: 3 max. length: 1024 must be a valid URL |
Relationship Attributes
The Attribute Values in this chapter can only be used in a Relationship Attribute.
Most of them are generic.
You can recognize those by the prefix Proprietary (e.g. ProprietaryInteger, ProprietaryString, …).
In order to add some validation, you have the option to add valueHints.
Consent
Represents the consent of an Identity to a specific topic.
To obtain persistent consent from a peer, a CreateAttributeRequestItem can be sent, which contains a RelationshipAttribute, whose owner is the peer, with Consent as value.@type within its attribute property.
For more details, refer to the documentation of the Request persistent consent of peer scenario.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"Consent" |
✓ | |
consent |
string |
✓ | max. length: 10000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
link |
string |
✗ | min. length: 3 max. length: 1024 must be a valid URL |
linkDisplayText |
string |
✗ | min. length: 3 max. length: 30 can only be specified if a link is specified |
ProprietaryBoolean
An arbitrary boolean value.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryBoolean" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
boolean |
✓ |
ProprietaryCountry
A two-letter country code according to ISO 3166-1 alpha-2.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryCountry" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
string |
✓ | only ISO 3166-1 alpha-2 country codes |
ProprietaryEMailAddress
An email address.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryEMailAddress" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
string |
✓ | min. length: 3 max. length: 254 must match ^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,}$ |
ProprietaryFileReference
A ProprietaryFileReference is a link to an enmeshed File and can be used to add a File as an Attribute of a Relationship. Similar to an IdentityFileReference, a ProprietaryFileReference can be used to exchange Files using Attributes.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryFileReference" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
string |
✓ | min. length: 30 max. length: 150 |
ProprietaryFloat
An arbitrary floating-point number.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryFloat" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
number |
✓ |
ProprietaryHEXColor
A hexadecimal color code.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryHEXColor" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
string |
✓ | min.length: 4 max. length: 9 must match ^#([0-9A-F]{3}){1,2}$ |
ProprietaryInteger
An arbitrary integer number.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryInteger" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
number |
✓ | must be an integer |
ProprietaryJSON
An arbitrary JSON value.
The value property can contain any valid JSON structure (except null).
For validation purposes, the value property is stringified using JSON.stringify.
That string must not exceed the maximum length of 4096 characters.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryJSON" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
value |
unknown |
✓ | max. length: 4096 |
Examples
{
"@type": "ProprietaryJSON",
"title": "My JSON",
// length: 94
"value": {
"foo": "bar",
"baz": 123,
"qux": true,
"quux": {
"corge": "grault"
},
"garply": ["waldo", "fred", "plugh"]
}
}
{
"@type": "ProprietaryJSON",
"title": "My JSON",
// length: 8
"value": "a string"
}
{
"@type": "ProprietaryJSON",
"title": "My JSON",
// length: 28
"value": ["a string", 1, { "foo": "bar" }]
}
ProprietaryLanguage
A two-letter ISO-639-1 language code.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryLanguage" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
string |
✓ | only ISO-639-1 language codes |
ProprietaryPhoneNumber
A phone number.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryPhoneNumber" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
string |
✓ | min. length: 3 max. length: 100 must match ^[\d+\-x#*()/[\] ]{3,100}$ |
ProprietaryString
An arbitrary string.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryString" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
string |
✓ | max. length: 100 |
ProprietaryURL
A URL.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryURL" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
string |
✓ | min. length: 3 max. length: 1024 must be a valid URL |
ProprietaryXML
An XML.
Properties
| Name | Type | Required | Validation |
|---|---|---|---|
@type |
"ProprietaryXML" |
✓ | |
title |
string |
✓ | max. length: 100 |
description |
string |
✗ | max. length: 1000 |
valueHintsOverride |
ValueHintsOverride |
✗ | |
value |
string |
✓ | max. length: 50000 must be a valid XML encoded string |
schemaURL |
string |
✗ | min. length: 3 max. length: 1024 must be a valid URL |