Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/add identityattribute introduction #170

Merged
merged 38 commits into from
May 24, 2024
Merged
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
e13661e
feat: init
vinzlange Nov 6, 2023
5ee7354
feat: add links
vinzlange Nov 7, 2023
00801e3
feat: rewrite text
vinzlange Nov 27, 2023
0668976
Merge branch 'main' into Feature/add-identityattribute-introduction
vinzlange Apr 17, 2024
6934344
feat: update excel
vinzlange Apr 17, 2024
c5043cf
feat: delete deprecated files
vinzlange Apr 17, 2024
fd50c8f
fix: change old link
vinzlange Apr 17, 2024
36604d7
feat: rename page
vinzlange Apr 17, 2024
ecd0860
fix: remove duplicates
vinzlange Apr 17, 2024
33dfa8b
fix: adjusted capitalization
vinzlange Apr 17, 2024
66f467f
Merge branch 'main' into Feature/add-identityattribute-introduction
britsta Apr 26, 2024
90034df
feat: first draft of extensions for Attribute introduction
britsta Apr 26, 2024
b98b98e
feat: add diagram for Attribute introduction
britsta Apr 29, 2024
757086e
feat: add text for simple and complex IdentityAttributes
britsta Apr 29, 2024
70d3b8e
feat: improve section of complex IdentityAttributes
britsta Apr 30, 2024
234d766
feat: add diagram for LocalAttributes and IdentityAttributes
britsta Apr 30, 2024
27919ff
feat: add RelationshipAttributes and LocalAttributes diagram
britsta May 3, 2024
8fc9647
feat: add ThirdPartyRelationshipAttribute text
britsta May 3, 2024
dffb954
feat: add IdentityAttributes and LocalAttributes text
britsta May 7, 2024
7c880c0
feat: add RelationshipAttribute (value type) text
britsta May 7, 2024
26eab07
feat: add sentence for third party owned RelationshipAttributes
britsta May 7, 2024
983ad1f
feat: add own shared RelationshipAttribute text
britsta May 8, 2024
2fad2bc
feat: improve text for peer shared RelationshipAttributes
britsta May 8, 2024
071b7ae
Merge branch 'main' into Feature/add-identityattribute-introduction
britsta May 13, 2024
5ebb27e
feat: add third party owned RelationshipAttribute text
britsta May 13, 2024
631d7fd
feat: add LocalAttribute terminology in Data Model Overview
britsta May 13, 2024
b2bd55a
Merge branch 'main' into Feature/add-identityattribute-introduction
britsta May 16, 2024
e2de831
Merge branch 'main' into Feature/add-identityattribute-introduction
britsta May 17, 2024
104426a
feat: add some review comments
britsta May 17, 2024
82d61df
Merge branch 'Feature/add-identityattribute-introduction' of https://…
britsta May 17, 2024
b69d7ae
refactor: formatting for ID of LocalAttributes
britsta May 21, 2024
3f3d867
feat: incorporate review comments
britsta May 21, 2024
adf5808
Merge branch 'main' into Feature/add-identityattribute-introduction
britsta May 22, 2024
1b490f6
refactor: split diagrams
britsta May 22, 2024
3b4a2e3
fix: final proofreading
britsta May 22, 2024
c3469d9
Merge branch 'main' into Feature/add-identityattribute-introduction
britsta May 22, 2024
967a042
feat: incorporate review comments
britsta May 23, 2024
b093f3a
feat: incorporate review comments
britsta May 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions _data/navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ docs_integrate:
url: /integrate/requests-via-messages
- title: Manage Attributes
children:
- title: "Attribute introduction"
url: /integrate/attribute-introduction
- title: "Create Attributes for yourself"
url: /integrate/create-attributes-for-yourself
- title: "Share Attributes with peer"
Expand Down
2 changes: 1 addition & 1 deletion _docs_explore/23-privacy.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ Enmeshed additionally follows the once-only principle for such data, thus enabli

# Backbone Privacy

The Backbone is the most significant component in terms of privacy. As a centrally hosted component by a third-party, it is understandable that privacy-related questions usually focus this component."
The Backbone is the most significant component in terms of privacy. As a centrally hosted component by a third party, it is understandable that privacy-related questions usually focus this component."

The Backbone only stores technical information of identities or devices. It never has access to cleartext data such as content of messages, names, e-mail addresses, and so on, as all this information is end-to-end encrypted. Furthermore, even encrypted data of the Backbone is not publicly available - only the identities which have reason to access the data get access.

Expand Down
2 changes: 1 addition & 1 deletion _docs_integrate/01-integrate-scenarios.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Learn how to create and manage Requests. Check out the [Request and Response int

## Manage Attributes

Explore how to [create Attributes for yourself]({% link _docs_integrate/create-attributes-for-yourself.md %}) and how to [share Attributes]({% link _docs_integrate/share-attributes-with-peer.md %}) with a peer. Also, discover how to [read Attributes]({% link _docs_integrate/read-attributes-from-peer.md %}) from a peer and how to store Attributes in a peer's Wallet for them. The latter can be realised by [creating Attributes]({% link _docs_integrate/create-attributes-for-peer.md %}) for them or by [proposing Attributes]({% link _docs_integrate/propose-attributes-to-peer.md %}) to them. The peer must give you their permission for this. Furthermore, learn how to [update Attributes by succession]({% link _docs_integrate/update-attributes-by-succession.md %}) or how to [delete Attributes]({% link _docs_integrate/delete-attributes.md %}).
The [Attribute introduction]({% link _docs_integrate/attribute-introduction.md %}) provides an overview of the different kinds of Attributes and the Attribute management options. Next, explore how to [create Attributes for yourself]({% link _docs_integrate/create-attributes-for-yourself.md %}) and how to [share Attributes]({% link _docs_integrate/share-attributes-with-peer.md %}) with a peer. Also, discover how to [read Attributes]({% link _docs_integrate/read-attributes-from-peer.md %}) from a peer and how to store Attributes in a peer's Wallet for them. The latter can be realized by [creating Attributes]({% link _docs_integrate/create-attributes-for-peer.md %}) for them or by [proposing Attributes]({% link _docs_integrate/propose-attributes-to-peer.md %}) to them. The peer must give you their permission for this. Furthermore, learn how to [update Attributes by succession]({% link _docs_integrate/update-attributes-by-succession.md %}) or how to [delete Attributes]({% link _docs_integrate/delete-attributes.md %}).

## Request consent

Expand Down
140 changes: 139 additions & 1 deletion _docs_integrate/attribute-introduction.md

Large diffs are not rendered by default.

14 changes: 6 additions & 8 deletions _docs_integrate/create-attributes-for-yourself.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,9 @@ This guide explains the end-to-end flow of creating an [Attribute]({% link _docs

This section is about how to create an [IdentityAttribute]({% link _docs_integrate/data-model-overview.md %}#identityattribute) for your own Connector that is not initially shared with any other Identity. From a technical point of view, this corresponds to the creation of a [LocalAttribute]({% link _docs_integrate/data-model-overview.md %}#localattribute) whose `content` is given by the IdentityAttribute that is intended to be created and whose `shareInfo` is undefined. Such a LocalAttribute is referred to as a RepositoryAttribute.

Since knowledge about IdentityAttributes is required in the following, you should take a look at our IdentityAttribute introduction before you continue reading this guide. In particular, a description of the two kinds of IdentityAttributes, the simple IdentityAttributes and the complex IdentityAttributes, can be found there.
Since knowledge about IdentityAttributes is required in the following, you should take a look at our [IdentityAttribute introduction]({% link _docs_integrate/attribute-introduction.md %}#identityattributes) before you continue reading this guide. In particular, a description of the two kinds of IdentityAttributes, the [simple IdentityAttributes]({% link _docs_integrate/attribute-introduction.md %}#simple-identityattributes) and the [complex IdentityAttributes]({% link _docs_integrate/attribute-introduction.md %}#complex-identityattributes), can be found there.
{: .notice--info}

<!--- TODO: Insert link to "IdentityAttribute introduction" --->

### Input for creating a RepositoryAttribute

To create a RepositoryAttribute, proceed as described in the [Create a RepositoryAttribute]({% link _docs_use-cases/use-case-consumption-create-a-repositoryattribute.md %}) use case documentation. As input for the creation of a RepositoryAttribute, the following `content` must be used:
Expand All @@ -46,7 +44,7 @@ To create a RepositoryAttribute, proceed as described in the [Create a Repositor
"validFrom": "<start of IdentityAttribute's validity>",
"validTo": "<end of IdentityAttribute's validity>",
"value": {
// IdentityAttributeValue
// IdentityAttribute value
...
},
"tags": ["<additional information 1>", ..., "<additional information n>"]
Expand All @@ -58,13 +56,13 @@ You need to replace the placeholders marked with `<...>` appropriately. Also, it

### Process of creating a RepositoryAttribute

As you can see from the diagram below, after you have entered the [input for creating a RepositoryAttribute]({% link _docs_integrate/create-attributes-for-yourself.md %}#input-for-creating-a-repositoryattribute), a check is performed whether the input values for the properties of the specified [IdentityAttributeValue]({% link _docs_integrate/attribute-values.md %}#identity-attributes) meet the validation criteria documented on the [Attribute Values]({% link _docs_integrate/attribute-values.md %}) page. If the validation is not successful, an [error message]({% link _docs_integrate/error-codes.md %}) is sent in response. Otherwise, a RepositoryAttribute is created that contains the IdentityAttribute in its `content` property. If it is a simple IdentityAttribute, a success response is sent directly. In the case of a complex IdentityAttribute, on the other hand, another RepositoryAttribute is created beforehand for each of its appropriate properties. These RepositoryAttributes for the properties are also referred to as children of the RepositoryAttribute belonging to the complex IdentityAttribute. The `id` of their parent is contained within their `parentId` property. Note that the successful creation of a LocalAttribute, and therefore in particular the creation of a RepositoryAttribute, triggers the `consumption.attributeCreated` [Connector event]({% link _docs_integrate/connector-events.md %}).
As you can see from the diagram below, after you have entered the [input for creating a RepositoryAttribute]({% link _docs_integrate/create-attributes-for-yourself.md %}#input-for-creating-a-repositoryattribute), a check is performed whether the input values for the properties of the specified [IdentityAttributeValue]({% link _docs_integrate/attribute-values.md %}#identity-attributes) meet the validation criteria documented on the [Attribute Values]({% link _docs_integrate/attribute-values.md %}) page. If the validation is not successful, an [error message]({% link _docs_integrate/error-codes.md %}) is sent in response. Otherwise, a RepositoryAttribute is created that contains the IdentityAttribute in its `content` property. If it is a [simple IdentityAttribute]({% link _docs_integrate/attribute-introduction.md %}#simple-identityattributes), a success response is sent directly. In the case of a [complex IdentityAttribute]({% link _docs_integrate/attribute-introduction.md %}#complex-identityattributes), on the other hand, another RepositoryAttribute is created beforehand for each of its appropriate properties. These RepositoryAttributes for the properties are also referred to as children of the RepositoryAttribute belonging to the complex IdentityAttribute. The `id` of their parent is contained within their `parentId` property. Note that the successful creation of a LocalAttribute, and therefore in particular the creation of a RepositoryAttribute, triggers the `consumption.attributeCreated` [Connector event]({% link _docs_integrate/connector-events.md %}).

<div style="width: 640px; height: 480px; margin: 10px; position: relative;"><iframe allowfullscreen frameborder="0" style="width:640px; height:480px" src="https://lucid.app/documents/embedded/310cea0e-6f6f-4ee0-9efd-55e180ec5dda" id="WT4OFNWd3bcS"></iframe></div>

### Example of creating a simple IdentityAttribute

An example of a simple IdentityAttribute is one of type [DisplayName]({% link _docs_integrate/attribute-values.md %}#displayname). To create one for your own Connector without specifying optional parameters, the following `content` must be used:
An example of a [simple IdentityAttribute]({% link _docs_integrate/attribute-introduction.md %}#simple-identityattributes) is one of type [DisplayName]({% link _docs_integrate/attribute-values.md %}#displayname). To create one for your own Connector without specifying optional parameters, the following `content` must be used:

```jsonc
{
Expand All @@ -81,7 +79,7 @@ Assuming that the input value for the Connector's display name specified in the

### Example of creating a complex IdentityAttribute

An example of a complex IdentityAttribute is one of type [BirthDate]({% link _docs_integrate/attribute-values.md %}#birthdate). To create one for your own Connector without specifying optional parameters, the following `content` must be used:
An example of a [complex IdentityAttribute]({% link _docs_integrate/attribute-introduction.md %}#complex-identityattributes) is one of type [BirthDate]({% link _docs_integrate/attribute-values.md %}#birthdate). To create one for your own Connector without specifying optional parameters, the following `content` must be used:

```jsonc
{
Expand All @@ -102,7 +100,7 @@ Assuming that the input values ​​for the properties `value.day`, `value.mont

When you have successfully created an IdentityAttribute for your own Connector, you will receive a success response. From the result, you can get the `id` of the corresponding RepositoryAttribute belonging to the IdentityAttribute. You will need this `id`, for example, if you want to share the underlying IdentityAttribute with other Identities later, as in the [Share Attributes with peer]({% link _docs_integrate/share-attributes-with-peer.md %}) scenario.

## Create a RelationshipAttribute for yourself
## Create a RelationshipAttribute

If you want to create a [RelationshipAttribute]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute), you must proceed differently than when [creating an IdentityAttribute for yourself]({% link _docs_integrate/create-attributes-for-yourself.md %}#create-an-identityattribute-for-yourself). This is because a RelationshipAttribute can only exist in the context of a [Relationship]({% link _docs_integrate/data-model-overview.md %}#relationship) with a peer, which means that they must also agree to the creation of it. This is achieved by sending a [Request]({% link _docs_integrate/data-model-overview.md %}#request) whose `items` property contains an appropriate [RequestItem]({% link _docs_integrate/data-model-overview.md %}#requestitems), which must be accepted by the peer. Depending on whether you or your peer should set the [RelationshipAttributeValue]({% link _docs_integrate/attribute-values.md %}#relationship-attributes) and depending on other factors, a [CreateAttributeRequestItem]({% link _docs_integrate/data-model-overview.md %}#createattributerequestitem), [ReadAttributeRequestItem]({% link _docs_integrate/data-model-overview.md %}#readattributerequestitem), [ProposeAttributeRequestItem]({% link _docs_integrate/data-model-overview.md %}#proposeattributerequestitem) or [ShareAttributeRequestItem]({% link _docs_integrate/data-model-overview.md %}#shareattributerequestitem) should be used for this.

Expand Down
Loading
Loading