diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 393f5deb7..2f091fc71 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -5,4 +5,4 @@ contact_links: about: Open bug reports and feature requests. - name: Enmeshed Discussions url: https://github.com/nmshd/feedback/discussions - about: Share your feedback with the Enmeshed team. + about: Share your feedback with the enmeshed team. diff --git a/Gemfile b/Gemfile index 722ff1da3..6e38a5910 100644 --- a/Gemfile +++ b/Gemfile @@ -23,7 +23,6 @@ group :jekyll_plugins do gem "jemoji" gem "jekyll-include-cache" gem "jekyll-algolia" - gem "jekyll-redirect-from" gem "jekyll-remote-theme" gem 'jekyll-redirect-from' end diff --git a/README.md b/README.md index 33cfb9124..97283cd52 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # documentation -This is the source code of the Enmeshed Documentation hosted at [enmeshed.eu](https://enmeshed.eu). +This is the source code of the enmeshed documentation hosted at [enmeshed.eu](https://enmeshed.eu). ## Purpose of this documentation -This documentation is meant as an overarching documentation for the whole Enmeshed open source project. It describes overarching concepts whereas the individual repositories provide technical documentation for the respective source code or functionality. +This documentation is meant as an overarching documentation for the whole enmeshed open source project. It describes overarching concepts whereas the individual repositories provide technical documentation for the respective source code or functionality. ## Documentation guidelines diff --git a/_config.yml b/_config.yml index 4f91c5b4c..130f72398 100644 --- a/_config.yml +++ b/_config.yml @@ -13,7 +13,7 @@ # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. # You can create any custom variable you would like, and they will be accessible # in the templates via {{ site.myvariable }}. -title: Enmeshed +title: enmeshed email: info@enmeshed.eu description: >- # this means to ignore newlines until "baseurl:" Enmeshed is a home of various open source components, making the digital life @@ -77,6 +77,9 @@ collections: docs_integrate: output: true permalink: /:collection/:path + docs_operate: + output: true + permalink: /:collection/:path docs_scenarios: output: true permalink: /:collection/:path @@ -87,7 +90,7 @@ collections: author: name: "Enmeshed Team" avatar: "/assets/images/Logo.svg" - bio: "The official Enmeshed Team" + bio: "The official enmeshed Team" links: - label: "Website" icon: "fas fa-fw fa-link" @@ -129,16 +132,6 @@ defaults: comments: false share: true related: true - # use - - scope: - path: "" - type: docs_use - values: - layout: single - author_profile: false - sidebar: - - title: "Use Enmeshed" - nav: "docs_use" # explore - scope: path: "" @@ -147,7 +140,7 @@ defaults: layout: single author_profile: false sidebar: - - title: "Explore Enmeshed" + - title: "Explore enmeshed" nav: "docs_explore" # integrate - scope: @@ -157,8 +150,18 @@ defaults: layout: single author_profile: false sidebar: - - title: "Integrate Enmeshed" + - title: "Integrate enmeshed" nav: "docs_integrate" + # operate + - scope: + path: "" + type: docs_operate + values: + layout: single + author_profile: false + sidebar: + - title: "Operate enmeshed" + nav: "docs_operate" # _pages - scope: path: "_pages" @@ -167,16 +170,16 @@ defaults: layout: single author_profile: false - # scenarios + # use - scope: path: "" - type: docs_scenarios + type: docs_use values: layout: single author_profile: false sidebar: - - title: "Scenarios Enmeshed" - nav: "docs_scenarios" + - title: "Use enmeshed" + nav: "docs_use" # use-cases - scope: @@ -186,7 +189,7 @@ defaults: layout: single author_profile: false sidebar: - - title: "Use-Cases Enmeshed" + - title: "Use-Cases enmeshed" nav: "docs_use-cases" # see https://mmistakes.github.io/minimal-mistakes/docs/configuration/#archive-settings for category/tags configuration diff --git a/_data/navigation.yml b/_data/navigation.yml index d4eeed9d2..8de29768f 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -1,10 +1,12 @@ main: - title: "Use" - url: /use/basics + url: /use - title: "Explore" url: /explore - title: "Integrate" url: /integrate + - title: "Operate" + url: /operate - title: "Contribute" url: /contribute - title: "Blog" @@ -13,14 +15,10 @@ main: docs_explore: - title: First things first children: - - title: "Introduction" - url: /explore + - title: "How does enmeshed work?" + url: /explore/how_does_enmeshed_work - title: "Example Scenarios" url: /explore/example-scenarios - - title: "Features" - url: /explore/features - - title: "Use Cases" - url: /explore/use-cases # - title: "Screens" # url: /explore/screens - title: "Frequently Asked Questions" @@ -59,7 +57,7 @@ docs_explore: - title: Expert Corner children: - - title: "Enmeshed Addresses" + - title: "Addresses" url: /explore/addresses - title: "Runtime" url: /explore/runtime @@ -71,80 +69,87 @@ docs_explore: docs_use: - title: Getting Started children: - - title: "Basics" - url: /use/basics - - title: "Security Recommendations for Apps and End-Users" - url: /use/security-recommendations - - - title: Scenarios - children: - - title: "App-Scenarios" - url: /use/app-scenarios + - title: "Install the App" + url: /use/install-the-app + - title: "Secure device setup" + url: /use/secure-device-setup docs_integrate: - title: Getting Started children: - - title: "Basics" - url: /integrate/basics - - title: "Connector Tutorial" - url: /integrate/connector-tutorial - - title: "Connector Modules" - url: /integrate/connector-modules + - title: "Access the Connector" + url: /integrate/access-the-connector + - title: "Integration example" + url: /integrate/integration-example + #- title: "Event introduction" + # url: /integrate/event-introduction + - title: "Use Cases" + url: /integrate/use-cases - - title: Setting up the Connector + - title: Manage Requests children: - - title: "Installation" - url: /integrate/connector-installation - - title: "Configuration" - url: /integrate/connector-configuration - - title: "Troubleshooting" - url: /integrate/connector-setup-troubleshooting - - title: "Error Codes" - url: /integrate/error-codes - - title: "Helm Chart" - url: /integrate/helm-chart - - - title: REST API + - title: "Requests over Templates" + url: /integrate/requests-over-templates + - title: "Requests over Messages" + url: /integrate/requests-over-messages + - title: Manage attributes of others children: - - title: "API Documentation" - url: /integrate/connector-api - - - title: Scenarios + - title: "Request persistent consent of peer" + url: /integrate/request-persistent-consent-of-peer + - title: Basic communication children: - - title: "Connector-Scenarios" - url: /integrate/connector-scenarios - - - title: Programming + - title: "Sending Messages" + url: /integrate/sending-messages + - title: Requesting consent of users children: - - title: "Connector SDKs" - url: /integrate/connector-sdks - - title: "Custom Connector Modules" - url: /integrate/custom-connector-modules + - title: "Requesting one-time consents" + url: /integrate/requesting-one-time-consents + - title: Data Model + children: + - title: "Data Model Overview" + url: /integrate/data-model-overview - title: "Connector Events" url: /integrate/connector-events - - title: "Migrate to v2" - url: /integrate/connector-migration-v2 + - title: "Requests and RequestItems" + url: /integrate/requests-and-requestitems + - title: "Attribute Values" + url: /integrate/attribute-values + - title: Troubleshooting + children: + - title: "Error Codes" + url: /integrate/error-codes + #- title: "FAQ" + # url: /integrate/faq + #- title: "Support" + # url: /integrate/support + +docs_operate: + - title: Connector Setup + children: + - title: "Setup with Docker Compose" + url: /operate/setup-with-docker-compose + - title: "Setup with Helm Charts" + url: /operate/setup-with-helm-charts + - title: "Configuration" + url: /operate/configuration + - title: "Modules" + url: /operate/modules - - title: Operations + - title: Connector Operations children: - - title: "Connector Operations" - url: /integrate/connector-operations + - title: "Overview of Connector operations" + url: /operate/overview-of-connector-operations - title: "Security Considerations" - url: /integrate/connector-security + url: /operate/security-considerations - title: "Privacy Considerations" - url: /integrate/connector-privacy + url: /operate/privacy-considerations - title: "Performance Considerations" - url: /integrate/connector-performance - - - title: Data Model + url: /operate/performance-considerations + - title: Troubleshooting children: - - title: "Overview" - url: /integrate/data-model-overview - - title: "Request Items" - url: /integrate/data-model-request-items - - title: "Attribute Values" - url: /integrate/data-model-attribute-values - -docs_scenarios: - -docs_use-cases: + - title: "Troubleshooting Guide" + url: /operate/troubleshooting-guide + #- title: "FAQ" + # url: /operate/faq + - title: "Support" + url: /operate/support diff --git a/_docs_explore/01-how_does_enmeshed_work.md b/_docs_explore/01-how_does_enmeshed_work.md new file mode 100644 index 000000000..36ae0d2d2 --- /dev/null +++ b/_docs_explore/01-how_does_enmeshed_work.md @@ -0,0 +1,55 @@ +--- +title: "How does enmeshed work?" +permalink: /explore/how_does_enmeshed_work +toc: true +--- + +Enmeshed introduces an overarching solution, securely connecting users and organizations without the use of decentralized technologies like blockchains. However, it makes use of the decentralized mindset, like decentralized identities. + +Mature technologies and architectures are used as a base for enmeshed. In combination with state-of-the-art encryption technologies, a complete web stack is used for all features, making enmeshed a very powerful yet portable and modular stack for solving many challenges within various scenarios and industries. + +Enmeshed consists of three main components using different layers to communicate between: + +## Components + +- [App]({% link _docs_explore/50-app.md %}): Mobile and desktop software client for end users or small companies +- [Backbone]({% link _docs_explore/51-backbone.md %}): A central communication component routing messages between identities without having access to the payload +- [Connector]({% link _docs_explore/52-connector.md %}): Client for organizations which is hosted on-site with integration capabilities for business systems + +## Layers + +- [Backbone Layer]({% link _docs_explore/41-backbone-layer.md %}): Secured, zero-knowledge synchronization layer between App-to-Backbone or Connector-to-Backbone with cross-device capabilities and postal services +- [Transport Layer]({% link _docs_explore/42-transport-layer.md %}): Cross-identity secure communication tunnel App-to-App, App-to-Connector or Connector-to-Connector +- [Consumption Layer]({% link _docs_explore/43-consumption-layer.md %}): Cross-identity payload definitions and normalized data structures (schemas), as well as single-identity business logic implementation and data structures, either for persons or organizational identities. +- [Integration Layer]({% link _docs_explore/44-integration-layer.md %}): Single-identity integration logic to integrate existing business systems primarily for organizational identities. +- [User-Experience Layer]({% link _docs_explore/45-user-experience-layer.md %}): The user experience for enmeshed related features primarily for end users. + +The following high-level picture shows the whole ensemble of enmeshed components and layers: + +![High level architecture diagram of enmeshed components and layers]({{ '/assets/images/explore/layers.png' | relative_url }}){: .align-center} + +The "Zero Knowledge Border" marks the area where data is encrypted or pseudonymized to a point that the Backbone operator has no chance of accessing personal data. The secure communication between identities happens within the [Transport Layer]({% link _docs_explore/42-transport-layer.md %}) based on a normalized enmeshed schema. + +## Enmeshed App + +End-users are able to install the [enmeshed App]({% link _docs_explore/50-app.md %}) from their favorite app stores for free. It is also available to download for various desktop operating systems. + +The App provides the user experience for the user's digital identity. With it, the user can access the features of the transport, content and consumption layers. + +It is possible to use multiple identities with the same App. It is also possible to use multiple Apps with one identity. + +## Enmeshed Backbone + +The [enmeshed Backbone]({% link _docs_explore/51-backbone.md %}) provides the foundation to communicate between the components on the backbone layer. It hosts the central services which are required for a seamless experience across identities and the devices of one identity. + +It is an encrypted storage layer for all kind of information. Although the messages, files, tokens, etc. have a certain expiry date, the data is stored on the backbone until this expiry date. Thus, the backbone acts as a data-access, backup and synchronization helper for the identities. + +Due to the fact that devices of end-users are not always online, a "technical recipient" needs to be introduced which receives the (encrypted) messages from senders and stores them. The recipients are notified automatically by push channels. + +The Backbone is based on a microservice architecture and is highly virtualized with Docker containers. It is thus quite capable to scale vertically and horizontally. + +## Enmeshed Connector + +The client for organizations is the [enmeshed Connector]({% link _docs_explore/52-connector.md %}). It acts with a separate digital identity of the organization within the network of the organization. Thus, it is in the hands of the corresponding IT department and can be set up next to the organization's business systems using the majority of the features. + +The Connector is hosted by a single Docker container and provides a REST API for all features of the transport layer. It can thus be perfectly used for integration purposes. The Connector transparently encrypts or decrypts the respective payload, synchronizes with the Backbone and keeps track of the enmeshed data. diff --git a/_docs_explore/01-introduction.md b/_docs_explore/01-introduction.md deleted file mode 100644 index e04add094..000000000 --- a/_docs_explore/01-introduction.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: "Introduction" -permalink: /explore -toc: true ---- - -# What is Enmeshed? - -Enmeshed is an open source project combining various assets into an overarching digitalization approach for users and organizations. Its overall goal is to introduce a secure but easy-to-use way to share and request data and digital signatures between contacts. - -A focus is the digitalization of the end user: Enmeshed is bringing back control to the end user in an easy-to-use way and thus empowering its users to use the modern IT world which was usually an area only experts were able to cope with. With Enmeshed the user actively takes part of the business processes, allowing a whole new digital experience. - -On the other hand, many organizations are still having trouble to digitize their business processes. Enmeshed introduces a different mindset - as well as components and tools - on how to securely communicate with other organizations and users. All this is done while keeping an easy-to-integrate approach in mind. - -The adjective "enmeshed" (\in'meshd\ or \en'meshd\ or /ɪnˈmeʃt/ ) means "to be entangled in s.th." or "parts which are patched together". Though sometimes used with a negative touch, nowadays we are all enmeshed in digital processes somehow, with more or less user satisfactory and effectiveness. - -We think by not only connecting identities of users and organizations to those digital processes, but tightly interweaving them within the actual processes, the overall user experience and process efficiency will rise. Enmeshed identities have a secure, digital and modern link between each other, which is not only used for overall communication but for professional processes. - -For us, being enmeshed is a very good thing: you know what is going on and the data which is used. You can take part in completely digital processes, without the hazzle of repeating yourself again and again. Even automated actions are available for end users. - -Sounds promising? Learn more about why we are doing this in the next chapter. - -# Why Enmeshed? - -Digitalization is one of the big challenges in the 21st century. - -However, digitalization projects tend to be cumbersome, get out of time / budget, and get complicated very fast. The problem scope is so vast, that experts usually focus on specific topics and very few people have an overarching view on top of desirability, feasibility, and visibility. - -The common approach to tackle the digitalization is a siloed-one, many software vendors, consulting agencies and technologies try to focus on some of the technical problems, but usually not all of them. - -A digitalization of the "last mile" to the end user is usually not in scope of these approaches. This also includes the secure communication to the end user, which is often tackled by providing them with additional online accounts and multi factor authentication approaches to download specific information manually. - -So far there is no user-centric approach for digitalization: Each organization creates own solutions for digitizing their specific business processes which are usually not compatible to other digitalization solutions. In the end the user has to manually combine the various solutions to manage its own digital life. This is why a user nowadays has so many different accounts, contact details, old master data, and so on... - -You know what we mean? Have a look at the next chapter for a quick introduction on how Enmeshed works. - -# How does Enmeshed work? - -Enmeshed introduces an overarching solution, securely connecting users and organizations without the use of decentralized technologies like blockchains. However, it makes use of the decentralized mindset, like decentralized identities. - -Mature technologies and architectures are used as a base for Enmeshed. In combination with state-of-the-art encryption technologies, a complete web stack is used for all features, making Enmeshed a very powerful yet portable and modular stack for solving many challenges within various scenarios and industries. - -Enmeshed consists of three main components using different layers to communicate between: - -## Components - -- [App]({% link _docs_explore/50-app.md %}): Mobile and desktop software client for end users or small companies -- [Backbone]({% link _docs_explore/51-backbone.md %}): A central communication component routing messages between identities without having access to the payload -- [Connector]({% link _docs_explore/52-connector.md %}): Client for organizations which is hosted on-site with integration capabilities for business systems - -## Layers - -- [Backbone Layer]({% link _docs_explore/41-backbone-layer.md %}): Secured, zero-knowledge synchronization layer between App-to-Backbone or Connector-to-Backbone with cross-device capabilities and postal services -- [Transport Layer]({% link _docs_explore/42-transport-layer.md %}): Cross-identity secure communication tunnel App-to-App, App-to-Connector or Connector-to-Connector -- [Consumption Layer]({% link _docs_explore/43-consumption-layer.md %}): Cross-identity payload definitions and normalized data structures (schemas), as well as single-identity business logic implementation and data structures, either for persons or organizational identities. -- [Integration Layer]({% link _docs_explore/44-integration-layer.md %}): Single-identity integration logic to integrate existing business systems primarily for organizational identities. -- [User-Experience Layer]({% link _docs_explore/45-user-experience-layer.md %}): The user experience for Enmeshed related features primarily for end users. - -The following high-level picture shows the whole ensemble of Enmeshed components and layers: - -![High level architecture diagram of Enmeshed components and layers]({{ '/assets/images/explore/layers.png' | relative_url }}){: .align-center} - -The "Zero Knowledge Border" marks the area where data is encrypted or pseudonymized to a point that the Backbone operator has no chance of accessing personal data. The secure communication between identities happens within the [Transport Layer]({% link _docs_explore/42-transport-layer.md %}) based on a normalized Enmeshed schema. - -## Enmeshed App - -End-users are able to install the [Enmeshed App]({% link _docs_explore/50-app.md %}) from their favorite app stores for free. It is also available to download for various desktop operating systems. - -The App provides the user experience for the user's digital identity. With it, the user can access the features of the transport, content and consumption layers. - -It is possible to use multiple identities with the same App. It is also possible to use multiple Apps with one identity. - -## Enmeshed Backbone - -The [Enmeshed Backbone]({% link _docs_explore/51-backbone.md %}) provides the foundation to communicate between the components on the backbone layer. It hosts the central services which are required for a seamless experience across identities and the devices of one identity. - -It is an encrypted storage layer for all kind of information. Although the messages, files, tokens, etc. have a certain expiry date, the data is stored on the backbone until this expiry date. Thus, the backbone acts as a data-access, backup and synchronization helper for the identities. - -Due to the fact that devices of end-users are not always online, a "technical recipient" needs to be introduced which receives the (encrypted) messages from senders and stores them. The recipients are notified automatically by push channels. - -The Backbone is based on a microservice architecture and is highly virtualized with Docker containers. It is thus quite capable to scale vertically and horizontally. - -## Enmeshed Connector - -The client for organizations is the [Enmeshed Connector]({% link _docs_explore/52-connector.md %}). It acts with a separate digital identity of the organization within the network of the organization. Thus, it is in the hands of the corresponding IT department and can be set up next to the organization's business systems using the majority of the features. - -The Connector is hosted by a single Docker container and provides a REST API for all features of the transport layer. It can thus be perfectly used for integration purposes. The Connector transparently encrypts or decrypts the respective payload, synchronizes with the Backbone and keeps track of the Enmeshed data. - -# Who is behind Enmeshed? - -The idea of Enmeshed is based on the work of many others in the area of open source software, encryption, decentralized identities, decentralized ledgers, and so on. These approaches were combined by a group of people who envisioned a great digital experience for everybody. - -So far, the primary implementation work has been done by j&s-soft GmbH in Heidelberg, Germany. diff --git a/_docs_explore/02-explore.md b/_docs_explore/02-explore.md new file mode 100644 index 000000000..5b3d68155 --- /dev/null +++ b/_docs_explore/02-explore.md @@ -0,0 +1,26 @@ +--- +title: "Explore enmeshed" +permalink: /explore +--- + +Welcome to the "Explore enmeshed" section of our website, your gateway to understanding the intricate world of enmeshed. Here, we embark on a journey through the various facets of enmeshed, from its fundamental workings to advanced technical insights. + +## First things first + +In this section, we lay the foundation by addressing the fundamental aspects of enmeshed. We start by explaining how enmeshed works, explore example scenarios, highlight its features and provide answers to commonly asked questions. + +## How we think + +Discover our perspective on enmeshed as we delve into the mindset behind its development. We discuss integration considerations, security aspects and privacy considerations that shape our approach to creating a secure and privacy-conscious platform. + +## Our Layers + +Unveil the layers that make enmeshed a robust and versatile solution. We'll guide you through each layer of the enmeshed architecture, including the Backbone Layer, Transport Layer, Consumption Layer, Integration Layer and User-Experience Layer. + +## Components in-detail + +Get an in-depth look at the key components that power enmeshed. Learn about the App, Backbone, and Connector and gain insights into how these elements contribute to the enmeshed ecosystem. + +## Expert Corner + +For those seeking advanced knowledge, our Expert Corner is the place to be. Explore topics such as enmeshed Addresses, Runtime behavior, Cryptography and the rationale behind our decision not to use blockchain technology. diff --git a/_docs_explore/03-usecases.md b/_docs_explore/03-usecases.md deleted file mode 100644 index f455ea25e..000000000 --- a/_docs_explore/03-usecases.md +++ /dev/null @@ -1,203 +0,0 @@ ---- -title: "Use Cases" -permalink: /explore/use-cases -published: true ---- - - - - - - -{% assign use-cases = site.docs_use-cases | where: "type", "use-case" %} - - - - - - - - - - {% for use-case in use-cases%} - - - - - - - - - {% endfor %} - -
Title -
-
Layer ⌄
-
    -
    -
    -
    -
    Actor ⌄
    -
      -
    • -
    -
    -
    -
    -
    Category ⌄
    -
      -
      -
      -
      -
      Component ⌄
      -
        -
        -
        -
        -
        Status ⌄
        -
          -
          -
          - {{ use-case.title }} - {{ use-case.properties | map:"layer" }}{{ use-case.properties | map:"actor" }}{{ use-case.properties | map:"tech category" }}{{ use-case.properties | map:"component" }}{{ use-case.properties | map:"status" }}
          - - diff --git a/_docs_explore/05-scenarios.md b/_docs_explore/05-scenarios.md index 6d705c8af..72583eed0 100644 --- a/_docs_explore/05-scenarios.md +++ b/_docs_explore/05-scenarios.md @@ -3,9 +3,9 @@ title: "Example Scenarios" permalink: /explore/example-scenarios --- -Enmeshed supports many possible business scenarios within various lines of businesses or industries. But not only enterprises, companies or organizations benefit of these approaches. Also leisure activities with clubs or communities can make use of Enmeshed. +Enmeshed supports many possible business scenarios within various lines of businesses or industries. But not only enterprises, companies or organizations benefit of these approaches. Also leisure activities with clubs or communities can make use of enmeshed. -Though the digital life of persons is used as a prominent example throughout this documentation, organizations or businesses can communicate with Enmeshed as well, as we are creating actual digital identities of them. +Though the digital life of persons is used as a prominent example throughout this documentation, organizations or businesses can communicate with enmeshed as well, as we are creating actual digital identities of them. Additionally, a kind of "identity hierarchy" can be supported. Be it for employees working in different roles for an organization, or for parents and legal guardians to sign contracts in the name of their charges. diff --git a/_docs_explore/06-features.md b/_docs_explore/06-features.md index 20fcaf021..4cfe0ef35 100644 --- a/_docs_explore/06-features.md +++ b/_docs_explore/06-features.md @@ -3,7 +3,7 @@ title: "Features" permalink: /explore/features --- -Features included with Enmeshed: +Features included with enmeshed: - Self-sovereign identity - Datawallet capabilitites, i.e. repository of structured data like attributes and files @@ -18,7 +18,7 @@ Features included with Enmeshed: - Zero-knowledge secure central data archive - Central timestamp capabilities to proof submission date of messages -Features possible with Enmeshed: +Features possible with enmeshed: - Digital signatures on files - Digital certificates, e.g. X509 certificates, verifiable claims diff --git a/_docs_explore/07-usecases.md b/_docs_explore/07-usecases.md index 3359cc32e..5976ea049 100644 --- a/_docs_explore/07-usecases.md +++ b/_docs_explore/07-usecases.md @@ -4,7 +4,7 @@ permalink: /explore/use-cases published: false --- -The list below is a non-complete list of use cases within Enmeshed: +The list below is a non-complete list of use cases within enmeshed: - Runtime diff --git a/_docs_explore/08-faq.md b/_docs_explore/08-faq.md index fea79d0f3..9bff0d893 100644 --- a/_docs_explore/08-faq.md +++ b/_docs_explore/08-faq.md @@ -10,9 +10,9 @@ Short answer: No, we can't. Long answer: Depends who "you" is and what you mean by "data". -We've designed Enmeshed to use as less data as possible, while using as much data as required by business processes. That being said, all data which is send to the Backbone is identity-to-identity or device-to-device encrypted. Therefore, the Backbone cannot access any plaintext or personal data. +We've designed enmeshed to use as less data as possible, while using as much data as required by business processes. That being said, all data which is send to the Backbone is identity-to-identity or device-to-device encrypted. Therefore, the Backbone cannot access any plaintext or personal data. -The Enmeshed App and Connector however, of course have access to your personal and plaintext data, as they are the parts which handle and encrypt everything. We do not and will never transmit this data unencrypted over the wire. +The enmeshed App and Connector however, of course have access to your personal and plaintext data, as they are the parts which handle and encrypt everything. We do not and will never transmit this data unencrypted over the wire. What we need to access is metadata about your identity, e.g. which device of your identity is on which datawallet revision, or if a device fetched a message you received. This is required for the technical and business processes. diff --git a/_docs_explore/21-integration.md b/_docs_explore/21-integration.md index 9be5c1f0e..74630a26e 100644 --- a/_docs_explore/21-integration.md +++ b/_docs_explore/21-integration.md @@ -3,8 +3,8 @@ title: "Integration Considerations" permalink: /explore/integration --- -Enmeshed does not only enable users taking part of the digitalization process. Organizations also benefit of Enmeshed as well, as they usually need to invest heavily to stay up to date in today's technological race. +Enmeshed does not only enable users taking part of the digitalization process. Organizations also benefit of enmeshed as well, as they usually need to invest heavily to stay up to date in today's technological race. Enmeshed is a flexible communication platform, with a rich default feature set and possibilities to extend the features at will. The extensibility can be done within the Connector itself via Modules, on top of the Connector via custom implementation or by the use of integration platforms. Additionally, we tried to be as integrateable as possible, encapsulating the complexity within the underlying layers. -The Enmeshed Connector is the heart of an organization's Enmeshed identity: It provides a modern REST API within the organizations network. Thus, the decryption, verification and storage of the data happens within the trusted environment of the organization and not on a third party site. This is also relevant for data privacy related regulations like the GDPR. +The enmeshed Connector is the heart of an organization's enmeshed identity: It provides a modern REST API within the organizations network. Thus, the decryption, verification and storage of the data happens within the trusted environment of the organization and not on a third party site. This is also relevant for data privacy related regulations like the GDPR. diff --git a/_docs_explore/22-security.md b/_docs_explore/22-security.md index 2d25364ef..fe451b7a6 100644 --- a/_docs_explore/22-security.md +++ b/_docs_explore/22-security.md @@ -7,11 +7,11 @@ Security is one of the main pillars of digitalization approaches. It might be th News are full of hacking, spamming, skimming, phishing, or you-name-it attempts. Even lives are at stake if hospitals are out-of-order because of malware. Users are usually unaware of the security impacts of old devices or outdated software. The same applies for organizations just on a much higher scale. In addition, the modern cloud world enables misconfiguration and misunderstanding to be one of the topmost reason of data breaches. -Enmeshed itself handles very private and sensitive information. We are aware that security must be one of our topmost priorities. And by using Enmeshed, we think that the world would be a lot more secure. +Enmeshed itself handles very private and sensitive information. We are aware that security must be one of our topmost priorities. And by using enmeshed, we think that the world would be a lot more secure. # Backbone Security -Though having a central architecture, Enmeshed cannot access the keys or payload of data within the backbone. Even if there would be a data breach, nobody could really do something with this metadata and encrypted payload. +Though having a central architecture, enmeshed cannot access the keys or payload of data within the backbone. Even if there would be a data breach, nobody could really do something with this metadata and encrypted payload. For us, security is not only about securing access to data, but making the data itself secure. This applies to the whole communication, be it that the data is completely end-to-end encrypted and digitally signed (so that no one could change the data in between) or that the encrypted data is additionally persisted on the backbone for a specific set of time. This means, that the encrypted data on the backbone can be accessed by authorized parties (e.g. sender and recipients of messages) as long as it is persisted. The Backbone thus acts as a kind of personal archive. @@ -31,9 +31,9 @@ When talking about the Backbone, one has to have trust in it in order to fulfill We run on a complete web stack, meaning that all Runtime coding so far is developed for a sandboxed web environment. While this sounds scary at first - there are still people that believe browsers and website to be highly insecure - it introduces a very interesting security measure: It is sandboxed. -Even if malware would be executed within the Enmeshed Runtime, it would need to break out of the sandbox to perform malicious activities with the actual device. This applies primarily to the Enmeshed App. +Even if malware would be executed within the enmeshed Runtime, it would need to break out of the sandbox to perform malicious activities with the actual device. This applies primarily to the enmeshed App. -However a malware could still access the data within the Enmeshed Runtime, meaning Enmeshed keys and communication payloads which is highly sensitive data. +However a malware could still access the data within the enmeshed Runtime, meaning enmeshed keys and communication payloads which is highly sensitive data. # Connector Security @@ -44,13 +44,13 @@ In our opinion, this is a far better approach than to upgrade any business syste The App is only communicating with its corresponding Backbone. -For more information on the security of the device, please read the [Security Recommendations for Apps and End-Users]({% link _docs_use/02-security-recommendations.md %}). +For more information on the security of the device, please read the [Security Recommendations for Apps and End-Users]({% link _docs_use/secure-device-setup.md %}). # Communication Security Enmeshed uses the highest standards of encrypted communication. It is end-to-end encrypted by using public key cryptography between identities. Different keypairs for the identity, for each device and each contact are used to distinguish the different communication areas (technical, multi-factor or contractual). Where possible, random keys are used and shared securely. If a random key is not possible, derived keys from high-entropy master keys (not passwords) are used. The very first keys are exchanged over Key Exchange Protocols, so that as little key material as possible is shared. Please refer to the [Cryptography Section]({% link _docs_explore/62-cryptography.md %}) to get more information about the used algorithms, libraries and methodologies. -For technical communication with contacts, the contact-specific signature keypair is used. Thus, every message of Enmeshed contains multiple digital signatures of the same message, one signature per recipient (as the sender communicates with a different private key per contact). The digital signature enforces that only the sender can sign the payload and that nobody in between could tamper with the message itself, e.g. change the message payload. +For technical communication with contacts, the contact-specific signature keypair is used. Thus, every message of enmeshed contains multiple digital signatures of the same message, one signature per recipient (as the sender communicates with a different private key per contact). The digital signature enforces that only the sender can sign the payload and that nobody in between could tamper with the message itself, e.g. change the message payload. A timestamp from the sender's device is included within the signed content. This reduces the risk of replay attacks (an encrypted message is sent again to the recipient without knowing the content) on the client side and might be used for legal purposes (sender's signing date). In addition to that, a unique message id for every message is generated by the Backbone and thus replay attacks are not possible without the control of the Backbone. @@ -70,6 +70,6 @@ Once a device of a recipient receives the notification, it fetches the message f It is possible to temporarily or permanently block access or delete identities, if illegal activities are brought to the attention of the Backbone's operator. For this the Backbone operator requires the help of at least one of the parties which received illegal content from a sender. -In addition, Enmeshed supports law enforcement up to a certain degree. As like any other central provider, it is possible to block access or delete content if the Backbone operator gets the official task to comply (although the Backbone operator wouldn't know who the user is or which content it deletes). +In addition, enmeshed supports law enforcement up to a certain degree. As like any other central provider, it is possible to block access or delete content if the Backbone operator gets the official task to comply (although the Backbone operator wouldn't know who the user is or which content it deletes). Additionally, it is possible to point law enforcement organizations to other identities which have communicated with an unknown target identity in the past. If the actual real-world entity behind such an identity is known (e.g. a company) they might know who the target identity is and could further help law enforcement. diff --git a/_docs_explore/23-privacy.md b/_docs_explore/23-privacy.md index 97e929b64..3720cc766 100644 --- a/_docs_explore/23-privacy.md +++ b/_docs_explore/23-privacy.md @@ -25,11 +25,11 @@ The term zero-knowledge applies to parties which do not have access to personal Enmeshed is based on such a zero-knowledge principle: -- The Enmeshed App stores the data in a local database on the device it is running on. Data can only be sent to or received from the Backbone, no other Internet access is possible. -- The Enmeshed Connector stores the data in a local database within the organization network. Data can only be sent to or received from the Backbone, no other Internet access is possible. +- The enmeshed App stores the data in a local database on the device it is running on. Data can only be sent to or received from the Backbone, no other Internet access is possible. +- The enmeshed Connector stores the data in a local database within the organization network. Data can only be sent to or received from the Backbone, no other Internet access is possible. - Data received from or sent to the Backbone is either pseudonymous (e.g. addresses), non-personalized (e.g. ids, dates, states) or encrypted in a way, that the Backbone cannot process this data. - Keys to encrypted material on the Backbone are never transmitted in a way, that the Backbone could make use of it. For example, keys are shared on a side-channel (e.g. scan qr-code from website) or an end-to-end encrypted communication channel. -- The Enmeshed App can synchronize data of the same identity to other Enmeshed Apps of this identity. This is done over a device-to-device encrypted communication channel (via the Backbone). The keys for this communication channel are transferred via a side-channel when onboarding a device for an identity. +- The enmeshed App can synchronize data of the same identity to other enmeshed Apps of this identity. This is done over a device-to-device encrypted communication channel (via the Backbone). The keys for this communication channel are transferred via a side-channel when onboarding a device for an identity. Thus, the centrally hosted Backbone has no access to any personal data. In our diagrams, we've sometimes added a "zero-knowledge border" between the components to emphasize the lack of personal data. @@ -39,7 +39,7 @@ The threat of metadata analytics should not be underestimated and can also not b # Comparison to decentral technologies -When comparing the Enmeshed privacy with decentral approaches discussed in the world wide web, we do not see any disadvantages with a central architecture. The data stored or shared is effectively the same, resulting in the same possible metadata analysis. +When comparing the enmeshed privacy with decentral approaches discussed in the world wide web, we do not see any disadvantages with a central architecture. The data stored or shared is effectively the same, resulting in the same possible metadata analysis. However, there are some advantages to a central architecture: diff --git a/_docs_explore/42-transport-layer.md b/_docs_explore/42-transport-layer.md index c287083b2..4db791d4c 100644 --- a/_docs_explore/42-transport-layer.md +++ b/_docs_explore/42-transport-layer.md @@ -33,7 +33,7 @@ As the transport layer encapsulates all encryption-relevant topics, keys are gen The synchronization between the devices is completely encrypted and works a bit like the communication with other identities. When an identity is created, a random synchronization key is generated and used to encrypt and synchronize all local data to the backbone. This synchronization key is then shared when onboarding a new device, allowing the new device to have access to the complete (encrypted) history of the identity on the backbone which can then be downloaded and applied. -Changes on one device are directly synchronized with the backbone and thus communicated to and reflected on other devices. The synchronization service (we also call it datawallet service) only adds information to the identity's history. Therefore, Enmeshed would even be able to roll back local changes on user errors, as we have a kind of local data versioning across devices with this approach. +Changes on one device are directly synchronized with the backbone and thus communicated to and reflected on other devices. The synchronization service (we also call it datawallet service) only adds information to the identity's history. Therefore, enmeshed would even be able to roll back local changes on user errors, as we have a kind of local data versioning across devices with this approach. We have a blocking mechanism in place that allows only one device to update the identity's history on a single point in time. @@ -49,9 +49,9 @@ The identity semantically is the "digital twin" of the actual real-world person Technically, the identity primarily consists of one keypair. By signing with the identity's private key, one is able to prove the ownership of the identity and thus manage the identity completely. Based on the identity's public key, the primary identification property, the address is created. -One has to keep in mind that Enmeshed doesn't enforce the validation of the real-world entities. Thus one real-world entity could create fake identities. +One has to keep in mind that enmeshed doesn't enforce the validation of the real-world entities. Thus one real-world entity could create fake identities. -Additionally, Enmeshed cannot enforce a uniqueness of real-world entities, i.e. one real-world entity could create multiple Enmeshed identities for itself. +Additionally, enmeshed cannot enforce a uniqueness of real-world entities, i.e. one real-world entity could create multiple enmeshed identities for itself. ### Address @@ -63,7 +63,7 @@ A device is a technical part of the identity. One identity can use multiple devi Thus devices are usually handled within the identity, just like one person uses multiple devices for reading mails or browsing the web. -A very interesting part of Enmeshed is, that devices are usually kept in synchronization with each other over a synchronization service. This is a big difference from other communication providers where there is usually a "main" device which is remotely controlled by other devices. +A very interesting part of enmeshed is, that devices are usually kept in synchronization with each other over a synchronization service. This is a big difference from other communication providers where there is usually a "main" device which is remotely controlled by other devices. Thus, every device has the complete access on the identity and its data without relying on another device. This is a great backup and recovery mechanism, as having two devices for an identity means an automatic backup device if one device is broken or replaced. @@ -104,7 +104,7 @@ If a new device is onboarded, the device onboarding info is shared via a side ch Abbreviated: FIL -A file is an Enmeshed representation of any binary-large object (BLOB). Handling files is similar to handling tokens, the big difference is, that tokens provide a means to share structured content whereas files are uploaded to and downloaded from the backbone by the help of binary transfer methods. +A file is an enmeshed representation of any binary-large object (BLOB). Handling files is similar to handling tokens, the big difference is, that tokens provide a means to share structured content whereas files are uploaded to and downloaded from the backbone by the help of binary transfer methods. The actual file is then shared by a file reference to a recipient. Files can be short-lived or long-lived, depending on the business case - use the expiresAt property to define the expiry of a file. @@ -202,7 +202,7 @@ The relationship request - next to the required technical information - usually A relationship template is a structured representation of data which is required for a relationship to be established. Thus, it is usually also addressing the required information for a business process to start. -Templates solve the problem of linking Enmeshed identities to a currently existing real world context, e.g. an existing customer account or an anonymous web session. +Templates solve the problem of linking enmeshed identities to a currently existing real world context, e.g. an existing customer account or an anonymous web session. In addition to technical information like public keys, certificates or signatures, it usually contains: @@ -241,7 +241,7 @@ Personalized templates are short-lived relationship templates including sensitiv This is usually combined with an upfront digital authentication of the person, e.g. existing web sessions of the user. Only this specific user would then have access to the personalized template within the secured website (e.g. over an QR-code). -Personalized templates are primary used for a much better onboarding experience of net-new Enmeshed users: they won't need to enter their data again, even if the data is already stored somehow. +Personalized templates are primary used for a much better onboarding experience of net-new enmeshed users: they won't need to enter their data again, even if the data is already stored somehow. Personalized templates can only be used if the person is authenticated upfront or it is ensured that only the respective person can receive the template. diff --git a/_docs_explore/50-app.md b/_docs_explore/50-app.md index c13f75040..7a2336a7f 100644 --- a/_docs_explore/50-app.md +++ b/_docs_explore/50-app.md @@ -8,7 +8,7 @@ toc: true ## Platform-dependant App Binaries -For each of the various platforms, each version of the app is packaged into a platform-dependant binary. This binary is then executable / installable for the users. The binaries of the Enmeshed App are created, maintained and published by j&s-soft GmbH and are available free for use within the respective stores. +For each of the various platforms, each version of the app is packaged into a platform-dependant binary. This binary is then executable / installable for the users. The binaries of the enmeshed App are created, maintained and published by j&s-soft GmbH and are available free for use within the respective stores. Following binaries are currently created: @@ -27,8 +27,8 @@ Alongside the platform-independant code, platform-dependant source code is somet ## App User Interface -The user interface of the Enmeshed App is platform-independently built with [OpenUI5](https://openui5.org/), a JavaScript framework for user interfaces primarily used for business applications. +The user interface of the enmeshed App is platform-independently built with [OpenUI5](https://openui5.org/), a JavaScript framework for user interfaces primarily used for business applications. ## App Runtime -The Enmeshed business logic for the app is extending the [Enmeshed Runtime]({% link _docs_explore/61-runtime.md %}) with app-specific implementations, like multi-profile support, local data handling or automations. You can think of the App Runtime as a more user-interface-friendly way of the Enmeshed Runtime. +The enmeshed business logic for the app is extending the [enmeshed Runtime]({% link _docs_explore/61-runtime.md %}) with app-specific implementations, like multi-profile support, local data handling or automations. You can think of the App Runtime as a more user-interface-friendly way of the enmeshed Runtime. diff --git a/_docs_explore/51-backbone.md b/_docs_explore/51-backbone.md index a9038392e..656f1af37 100644 --- a/_docs_explore/51-backbone.md +++ b/_docs_explore/51-backbone.md @@ -6,16 +6,16 @@ toc: true # Backbone Building Blocks -The Enmeshed Backbone embraces all central services required by the Enmeshed platform to work. It consists of the underlying infrastructure, its hosted services, and the libraries used within the services. There could be many Enmeshed Backbones hosted along the same number of Enmeshed Apps. But keep in mind that so far it is not possible for users to communicate across different Backbones. +The enmeshed Backbone embraces all central services required by the enmeshed platform to work. It consists of the underlying infrastructure, its hosted services, and the libraries used within the services. There could be many enmeshed Backbones hosted along the same number of enmeshed Apps. But keep in mind that so far it is not possible for users to communicate across different Backbones. -One Enmeshed Backbone is currently hosted and maintained by j&s-soft GmbH. +One enmeshed Backbone is currently hosted and maintained by j&s-soft GmbH. ## Backbone Landscapes (Runtime) Usually there are three Backbone Landscapes hosted in parallel: dev, stage and prod. -- Dev Landscape: Is used for Backbone development purposes only and shouldn't be used for Enmeshed clients -- Stage Landscape: Is used for Enmeshed tests on the current Backbone version or might be used for tests on a future Backbone version +- Dev Landscape: Is used for Backbone development purposes only and shouldn't be used for enmeshed clients +- Stage Landscape: Is used for enmeshed tests on the current Backbone version or might be used for tests on a future Backbone version - Prod Landscape: All productive environments should access the prod landscape only. Only the prod landscape has a productive configuration like scalability, replication or operations in place. It is possible to bring up additional landscapes on a temporary basis. These could be used for security or performance tests. @@ -24,11 +24,11 @@ A landscape can be trimmed by different scalability options, depending on the wo ## Backbone Infrastructure (Runtime) -All required infrastructure and infrastructure services, like a database, a load balancer or a file storage are combined within the infrastructure building block. The infrastructure itself is not Enmeshed-specific, the composition of services and the overall configuration however is. +All required infrastructure and infrastructure services, like a database, a load balancer or a file storage are combined within the infrastructure building block. The infrastructure itself is not enmeshed-specific, the composition of services and the overall configuration however is. There are different possible cloud providers to host the backbone, the big hyperscalers or smaller ones. Even regional cloud providers would make sense for specific use-cases. -The current cloud provider for the centrally hosted Enmeshed Backbone is Microsoft Azure and as thus, the landscape details (and terminology) are primarily focused on the Azure setup. Although there are Azure-specific components and configurations, most of the components used are cloud-provider agnostic, i.e. they will exist in other cloud providers in an equivalent form. +The current cloud provider for the centrally hosted enmeshed Backbone is Microsoft Azure and as thus, the landscape details (and terminology) are primarily focused on the Azure setup. Although there are Azure-specific components and configurations, most of the components used are cloud-provider agnostic, i.e. they will exist in other cloud providers in an equivalent form. ### Gateway @@ -72,7 +72,7 @@ Each request is handled by a service, running on a Kubernetes node within a whol ## Backbone Services (Runtime) -(Micro-)Services of the Backbone are deployed on a Kubernetes cluster within the Backbone Infrastructure. These services implement the Enmeshed business logic on top of the infrastructure services provided by the Backbone Infrastructure. +(Micro-)Services of the Backbone are deployed on a Kubernetes cluster within the Backbone Infrastructure. These services implement the enmeshed business logic on top of the infrastructure services provided by the Backbone Infrastructure. The following services are available on the runtime: @@ -85,4 +85,4 @@ The following services are available on the runtime: ## Backbone Services and Libraries (Designtime) -The implementation of the Enmeshed logic is done via the respective services, libraries are used for common source code. The open sourcing of the Backbone is still in progress. +The implementation of the enmeshed logic is done via the respective services, libraries are used for common source code. The open sourcing of the Backbone is still in progress. diff --git a/_docs_explore/52-connector.md b/_docs_explore/52-connector.md index 55a71b53f..f17d1bc30 100644 --- a/_docs_explore/52-connector.md +++ b/_docs_explore/52-connector.md @@ -4,8 +4,6 @@ permalink: /explore/connector toc: true --- -You can find many Connector-specific information in the [integrate]({% link _pages/integrate.md %}) part of these docs. - # Connector Building Blocks ## Connector Docker Image @@ -19,16 +17,40 @@ The Docker images are created, maintained and published by j&s-soft GmbH. ## Connector Runtime -Just like the [App Runtime]({% link _docs_explore/50-app.md %}) extends the [Enmeshed Runtime]({% link _docs_explore/61-runtime.md %}) for user interfaces, the Connector Runtime is extending the [Enmeshed Runtime]({% link _docs_explore/61-runtime.md %}) for the use within services and programs. For example, it maps REST-API-calls to Enmeshed business-logic. +Just like the [App Runtime]({% link _docs_explore/50-app.md %}) extends the [enmeshed Runtime]({% link _docs_explore/61-runtime.md %}) for user interfaces, the Connector Runtime is extending the [enmeshed Runtime]({% link _docs_explore/61-runtime.md %}) for the use within services and programs. For example, it maps REST-API-calls to enmeshed business-logic. ## Connector Modules -The Connector is built modular and provides some built-in Modules. A list of the available Modules and how to configure them can be found in [the Connector Modules guide]({% link _docs_integrate/03-connector-modules.md %}). +The Connector is built modular and provides some built-in Modules. A list of the available Modules and how to configure them can be found in [the Connector Modules guide]({% link _docs_operate/modules.md %}). ## Connector Database -The Connector uses a MongoDB database to store its data. You can read more about its configuration in the [database section of the Connector configuration guide]({% link _docs_integrate/11-connector-configuration.md %}#database). +The Connector uses a MongoDB database to store its data. You can read more about its configuration in the [database section of the Connector configuration guide]({% link _docs_operate/configuration.md %}#database). ## Connector SDK -Read more about the [Connector SDKs]({% link _docs_integrate/30-connector-sdks.md %}). +Read more about the [Connector SDKs]({% link _docs_integrate/access-the-connector.md %}). + +## What is the Connector? + +It is a software component which runs in the network of any organization, hosting a set of APIs to easily consume enmeshed features. It is usually run with the provided Docker image. The Connector requires a document database to store its data. + +Going a bit more technical, the Connector uses NodeJS with Express to host an HTTP server. It spans up REST APIs used as the primary integration mechanism. However, it is also possible to write custom TypeScript/JavaScript Modules which are run on the Connector itself. The Connector makes use of the enmeshed Runtime to provide all features of the enmeshed Transport Layer as a consumable API. + +## Why does my organization need a Connector? + +Enmeshed consists of different layers, each of which provide a different set of functionality and abstractions. The very low levels introduce a common set of communication and encryption contracts, which are required for all the upper levels. Just like you do not want to implement your own network stack, you usually do not want to implement the contracts by yourself. + +The Connector stores required enmeshed metadata on a central point within the organization network, making it possible for existing system to access all the features of the Connector. With this approach, it is not necessary to implement the whole stack of enmeshed in each and every system, like user key management and encryption capabilities. + +Additionally, the Connector should be run within the organizations network, as it acts as the digital identity of the organization itself, as well as a secure gateway to enmeshed. Although it could be hosted by a third-party as a software-as-a-service, we discourage this approach for production environments. The hosting provider would be able to impersonate the actual organization within the enmeshed ecosystem and would be able to access the plaintext data of users, messages, files, an so on. + +If you ask yourself now "Why does enmeshed itself host Connectors then?" - good catch! We do host Connectors but only for development, test or demo reasons. + +## So how does my organization get started? + +Unfortunately, there is no button with which you can switch on the digitalization. Processes need to be set up, old processes need to be digitalized, data might need to be mapped, and so on. However, one needs to start somehow and we can help you on your journey. + +We propose to set up a first test Connector by your IT department or let us do the hosting. Then you can decide how far enmeshed and its supported features and processes work for you. + +If you like to try on your own: There is a Connector Tutorial in the next chapter which is a good starting point to set up the Connector on a try out basis. More details are available in the "Setting up the Connector" and integration sections. If you like to dig deeper, there are operation tutorials which might answer some questions with regards to overall security and privacy. diff --git a/_docs_explore/60-addresses.md b/_docs_explore/60-addresses.md index ef1dd1f44..fe042775d 100644 --- a/_docs_explore/60-addresses.md +++ b/_docs_explore/60-addresses.md @@ -3,7 +3,7 @@ title: "Enmeshed Addresses" permalink: /explore/addresses --- -The Address is the primary identifier for an Enmeshed Identity. It is public and created out of the Identity’s Signature Public Key. Thus, the Identity’s root signature key and its corresponding Address are interlinked with each other and cannot be changed. Nobody is able to change the public key for a corresponding Address and everybody has the possibility to check, if a given public key matches a given Address without having to trust someone. Both are important security features. +The Address is the primary identifier for an enmeshed Identity. It is public and created out of the Identity’s Signature Public Key. Thus, the Identity’s root signature key and its corresponding Address are interlinked with each other and cannot be changed. Nobody is able to change the public key for a corresponding Address and everybody has the possibility to check, if a given public key matches a given Address without having to trust someone. Both are important security features. - As Addresses do not contain special characters, copy and pasting via double-click is supported. - As they also do not contain any characters which might be visually mixed up by humans (I (uppercase i), l (lowercase L), 0 (zero) and O (uppercase o)) reading them is easier than with other encodings - but still quite cumbersome, because of their length. @@ -50,7 +50,7 @@ createAddress(PublicKey, RealmAsThreeCharUtf8) { ## Examples -Below there are a few examples for valid Enmeshed Addresses. +Below there are a few examples for valid enmeshed Addresses. ```text Realm: id1 diff --git a/_docs_explore/61-runtime.md b/_docs_explore/61-runtime.md index 2c9a2c670..2cbb8df52 100644 --- a/_docs_explore/61-runtime.md +++ b/_docs_explore/61-runtime.md @@ -6,10 +6,56 @@ toc: true [Enmeshed Runtime GitHub Repository](https://github.com/nmshd/cns-runtime) -The Runtime wraps all features of Enmeshed into a single programming interface. It is combining the various libraries to a powerful software stack, primarily based on TypeScript, which can be used on nearly every device on the world - and even in the browser. +The Runtime wraps all features of enmeshed into a single programming interface. It is combining the various libraries to a powerful software stack, primarily based on TypeScript, which can be used on nearly every device on the world - and even in the browser. Versions, local and remote data, synchronization, communication, and many more items are tracked by the Runtime in order to provide an easy-to-use interface. +## Runtime Flavors + +Although the Runtime could be used by its own, it comes with two flavors: + +- The AppRuntime with a focus of using it with a user interface as an application on a user's device, which is used within the enmeshed App +- The ConnectorRuntime with a focus on integration capabilities based on dedicated databases and virtualization, which is used for the enmeshed Connector + +## Runtime Building Blocks + +### Crypto Library {#crypto-library} + +To separate the cryptographic interfaces from the used cryptographic library (e.g. libsodium), the crypto library acts as a wrapper. Additionally, cryptographically-related source code is bundled within this library. + +This approach allows us to implement features for cryptographic classes, for example the serialization of keys. Additionally, security audits could focus on this library. + +### Transport Library {#transport-library} + +The implementation of the transport layer is the transport library. It combines the features of different third party libraries and the crypto library to support the following features: + +- Communication with the Backbone +- Synchronization with the Backbone +- Encrypting and decrypting communication with other identities +- Managing identities and devices +- Managing cryptographic artifacts +- Cross-device synchronization of the datawallet + +### Content Library {#content-library} + +To separate the actual payload of Messages from the Message structure and envelope, the content library was set up. It is a repository of interfaces and types which are used as the payload of communication between identities. + +Whereas the transport library implements the foundation of communication between identities and the actual secure tunnel between identities, the content library defines the payload on top of this tunnel. You can see it as the definition of a contract between all identities. + +- Attributes and AttributeValues +- Message formats like Mails, RequestMails, or technical messages +- Transactional formats like Requests + +### Consumption Library {#consumption-library} + +Due to the fact that the Backbone cannot implement business logic to process content sent over the wire just like any other central service, the business logic needs to reside on the respective clients. + +The consumption library implements this business logic and additionally introduces some local data structures for keeping track of the sent and received payload. + +- Processors implementing logic what should be done if a RequestItem is accepted +- Local metadata structures on top of the data of the content library +- Local data structures + ## Runtime Modules The Runtime is built with the focus to be as modular as possible. Therefore, it is possible to write own Modules for it. @@ -34,10 +80,10 @@ Find a description of the available Modules in the following sections. ### Request Module -**Note:** This Module is responsible for important logic in the Enmeshed ecosystem and is therefore enabled by default in every official Enmeshed Application. +**Note:** This Module is responsible for important logic in the enmeshed ecosystem and is therefore enabled by default in every official enmeshed Application. {: .notice--warning} -This Module makes heavy use of Requests, LocalRequests and Response. Head over to the description of our [data model]({% link _docs_integrate/61-data-model.md %}), where you can find a detailed description of them. +This Module makes heavy use of Requests, LocalRequests and Response. Head over to the description of our [data model]({% link _docs_integrate/data-model-overview.md %}), where you can find a detailed description of them. The Module is responsible for: @@ -52,57 +98,21 @@ The Module is responsible for: ### Decider Module -**Note:** This Module is responsible for important logic in the Enmeshed ecosystem and is therefore enabled by default in every official Enmeshed Application. +**Note:** This Module is responsible for important logic in the enmeshed ecosystem and is therefore enabled by default in every official enmeshed Application. {: .notice--warning} -Currently this Module is only responsible for moving a Request from the status `DecisionRequired` to the status `ManualDecisionRequired` in which e.g. the Enmeshed App can prompt the User to manually review the Request. +Currently this Module is only responsible for moving a Request from the status `DecisionRequired` to the status `ManualDecisionRequired` in which e.g. the enmeshed App can prompt the User to manually review the Request. In the future, it will be possible to configure the Decider Module so it automatically accepts certain Requests without any User interaction. ### Message Module -For an overview about the mentioned events in this section please refer to the [Events]({% link _docs_integrate/32-connector-events.md %}) docs. +For an overview about the mentioned events in this section please refer to the [Events]({% link _docs_integrate/connector-events.md %}) docs. The Message Module is responsible for processing `transport.MessageReceived` events and re-publish them as events that are able to handle and consume in different situations. In every case the MessageModule will publish a `consumption.relationshipEvent.` for e.g. reloading the Relationship including its newest Messages in an UI. -When the Message is a [Mail]({% link _docs_integrate/61-data-model.md %}#Mail) a `consumption.mailReceived` event will be published. This is useful if you only want to refresh your UI that is rendering structured Mails. +When the Message is a [Mail]({% link _docs_integrate/data-model-overview.md %}#Mail) a `consumption.mailReceived` event will be published. This is useful if you only want to refresh your UI that is rendering structured Mails. If you are interested in these events you need to enable this module, because it is not enabled by default. - -## Runtime Building Blocks - -### Crypto Library {#crypto-library} - -To separate the cryptographic interfaces from the used cryptographic library (e.g. libsodium), the crypto library acts as a wrapper. Additionally, cryptographically-related source code is bundled within this library. - -This approach allows us to implement features for cryptographic classes, for example the serialization of keys. Additionally, security audits could focus on this library. - -### Transport Library {#transport-library} - -The implementation of the transport layer is the transport library. It combines the features of different third party libraries and the crypto library to support the following features: - -- Communication with the Backbone -- Synchronization with the Backbone -- Encrypting and decrypting communication with other identities -- Managing identities and devices -- Managing cryptographic artifacts -- Cross-device synchronization of the datawallet - -### Content Library {#content-library} - -To separate the actual payload of Messages from the Message structure and envelope, the content library was set up. It is a repository of interfaces and types which are used as the payload of communication between identities. - -Whereas the transport library implements the foundation of communication between identities and the actual secure tunnel between identities, the content library defines the payload on top of this tunnel. You can see it as the definition of a contract between all identities. - -- Attributes -- Claims -- Message formats like Mails, RequestMails, technical Messages -- Transactional formats like Requests - -### Consumption Library {#consumption-library} - -Due to the fact that the Backbone cannot implement business logic to process content sent over the wire just like any other central service, the business logic needs to reside on the respective clients. - -The consumption library implements this business logic and additionally introduces some local data structures for keeping track of the sent and received payload. diff --git a/_docs_explore/63-blockchain.md b/_docs_explore/63-blockchain.md index 2caf3a359..12622ed5f 100644 --- a/_docs_explore/63-blockchain.md +++ b/_docs_explore/63-blockchain.md @@ -29,9 +29,9 @@ Speaking about decentralization, one term may not be left out: Blockchain. A blo # ... and why we think differently -Yes, within Enmeshed we think differently about decentralization. And we do not want to throw decades of computer science research away just because some technologies or solutions are hyped. On the other hand, there are many good aspects within all these solutions – and enough obstacles in the old world. In the end, what we do is bring both worlds together. +Yes, within enmeshed we think differently about decentralization. And we do not want to throw decades of computer science research away just because some technologies or solutions are hyped. On the other hand, there are many good aspects within all these solutions – and enough obstacles in the old world. In the end, what we do is bring both worlds together. -# The Enmeshed Approach +# The enmeshed Approach ## Be central! diff --git a/_docs_integrate/00-basics.md b/_docs_integrate/00-basics.md deleted file mode 100644 index 277cb3a95..000000000 --- a/_docs_integrate/00-basics.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "Basics" -permalink: /integrate/basics ---- - -You want to seamlessly use Enmeshed with your processes, solutions and software components? No worries, you are good to go! - -We've built the Enmeshed Connector exactly for this scenario: to integrate existing systems with the Enmeshed approach with as little effort as possible. - -## What is the Connector? - -It is a software component which runs in the network of any organization, hosting a set of APIs to easily consume Enmeshed features. It is usually run with the provided Docker image. The Connector requires a document database to store its data. - -Going a bit more technical, the Connector uses NodeJS with Express to host an HTTP server. It spans up REST APIs used as the primary integration mechanism. However, it is also possible to write custom TypeScript/JavaScript Modules which are run on the Connector itself. The Connector makes use of the Enmeshed Runtime to provide all features of the Enmeshed Transport Layer as a consumable API. - -## Why does my organization need a Connector? - -Enmeshed consists of different layers, each of which provide a different set of functionality and abstractions. The very low levels introduce a common set of communication and encryption contracts, which are required for all the upper levels. Just like you do not want to implement your own network stack, you usually do not want to implement the contracts by yourself. - -The Connector stores required Enmeshed metadata on a central point within the organization network, making it possible for existing system to access all the features of the Connector. With this approach, it is not necessary to implement the whole stack of Enmeshed in each and every system, like user key management and encryption capabilities. - -Additionally, the Connector should be run within the organizations network, as it acts as the digital identity of the organization itself, as well as a secure gateway to Enmeshed. Although it could be hosted by a third-party as a software-as-a-service, we discourage this approach for production environments. The hosting provider would be able to impersonate the actual organization within the Enmeshed ecosystem and would be able to access the plaintext data of users, messages, files, an so on. - -If you ask yourself now "Why does Enmeshed itself host Connectors then?" - good catch! We do host Connectors but only for development, test or demo reasons. - -## So how does my organization get started? - -Unfortunately, there is no button with which you can switch on the digitalization. Processes need to be set up, old processes need to be digitalized, data might need to be mapped, and so on. However, one needs to start somehow and we can help you on your journey. - -We propose to set up a first test Connector by your IT department or let us do the hosting. Then you can decide how far Enmeshed and its supported features and processes work for you. - -If you like to try on your own: There is a Connector Tutorial in the next chapter which is a good starting point to set up the Connector on a try out basis. More details are available in the "Setting up the Connector" and integration sections. If you like to dig deeper, there are operation tutorials which might answer some questions with regards to overall security and privacy. - -## Support - -For assisted support with the Connector or the Backbone provided by the j&s-soft GmbH contact us via `support[at]enmeshed.eu`. - -Community support is a great way to get help and even contribute to the projects. Open bug reports and feature requests in the [Enmeshed Issue Tracker](https://github.com/nmshd/feedback/issues) or share your feedback with the Enmeshed team via the [Enmeshed Discussions](https://github.com/nmshd/feedback/discussions). diff --git a/_docs_integrate/01-connector-tutorial.md b/_docs_integrate/01-connector-tutorial.md deleted file mode 100644 index ff2ddb37e..000000000 --- a/_docs_integrate/01-connector-tutorial.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -title: "Connector Tutorial" -permalink: /integrate/connector-tutorial -toc: true ---- - -In this tutorial we go through the basic steps necessary to establish a Relationship to another Identity and send Messages between two Identities with an existing Relationship. This will create a better understanding of these processes, which will help you on automating them for your organization. - -The following steps include small interactive pieces of the Connector's API documentation that, when executed, fire requests on a Connector we provided for testing purposes. Example: - -{% include rapidoc api_route_regex="^get /health$" title="" %} - -So if you don't have your own Connector installed, feel free to use the samples directly by unfolding them and clicking on "Try". Otherwise you can use your own Connector either with a REST client (e.g. Insomnia or Postman) or by using the RapiDoc documentation (/docs/rapidoc) hosted on your Connector. - -The payloads for the requests that are sent during this tutorial contain placeholders marked with `<...>`. You need to replace them with values before you send the request. - -## Prerequisites - -- If you want to use your own Connector for executing the examples: - - [Install the Connector](https://enmeshed.eu/integrate/connector-installation) - - Make sure the [Sync Module is disabled](https://enmeshed.eu/integrate/connector-configuration#sync) (because in this tutorial we will synchronize manually via the HTTP endpoint) - - Make sure the [docs are enabled](https://enmeshed.eu/integrate/connector-configuration#corehttpapi) for the documentation route to work - - Get the API key that was configured during installation of the Connector (it needs to be sent in the `X-API-KEY` header of every HTTP request) -- You need **version 2** of the [Enmeshed App]({% link _docs_use/01-basics.md %}) installed on your mobile device. - -## Establishing Relationships - -In order to communicate with another Identity, a Relationship to that Identity is required. In this first part of the tutorial you will learn how to establish a Relationship between your Connector and another Identity. In this case the other Identity will be the App, but it could be another Connector as well. - -### Connector: Create an Attribute - -In order to share an Attribute via a Relationship Template, we need to create one by executing `POST /api/v2/Attributes` with the following payload: - -```json -{ - "content": { - "@type": "IdentityAttribute", - "owner": "", - "value": { - "@type": "DisplayName", - "value": "Connector Tutorial" - } - } -} -``` - -You can query the Connector's Address under the route `/api/v2/Account/IdentityInfo`. If you are using the Demo Connector of this Tutorial, the Address is `id134nJmN7E4Carb6KyRJyePVnXxVHEYQgWD`. -{: .notice--info} - -{% include rapidoc api_route_regex="^post /api/v2/Attributes$" %} - -{% include copy-notice description="Save the `id` of the Attribute that you can find in the response. You will need it in the next step." %} - -### Connector: Test your Request's Validity - -In order to make sure the Request and its items are valid you can validate it by calling the `POST /api/v2/Requests/Outgoing/Validate` route. You can define your own payload for this Request, or you can just use the one below, which contains two [RequestItemGroups]({% link _docs_integrate/61-data-model.md %}#requestitemgroup): - -- one with a [ShareAttributeRequestItem]({% link _docs_integrate/61-data-model.md %}#shareattributerequestitem) that contains Attributes that will be shared with the peer -- one with [ReadAttributeRequestItem]({% link _docs_integrate/61-data-model.md %}#readattributerequestitem)s that query Attributes of the peer - -```json -{ - "content": { - "items": [ - { - "@type": "RequestItemGroup", - "mustBeAccepted": true, - "title": "Shared Attributes", - "items": [ - { - "@type": "ShareAttributeRequestItem", - "mustBeAccepted": true, - "attribute": { - "@type": "IdentityAttribute", - "owner": "", - "value": { - "@type": "DisplayName", - "value": "Connector Tutorial" - } - }, - "sourceAttributeId": "" - } - ] - }, - { - "@type": "RequestItemGroup", - "mustBeAccepted": true, - "title": "Requested Attributes", - "items": [ - { - "@type": "ReadAttributeRequestItem", - "mustBeAccepted": true, - "query": { - "@type": "IdentityAttributeQuery", - "valueType": "GivenName" - } - }, - { - "@type": "ReadAttributeRequestItem", - "mustBeAccepted": true, - "query": { - "@type": "IdentityAttributeQuery", - "valueType": "Surname" - } - }, - { - "@type": "ReadAttributeRequestItem", - "mustBeAccepted": false, - "query": { - "@type": "IdentityAttributeQuery", - "valueType": "EMailAddress" - } - } - ] - } - ] - } -} -``` - -{% include rapidoc api_route_regex="^post /api/v2/Requests/Outgoing/Validate$" %} - -Even though the Requests are validated during the RelationshipTemplate creation you should not skip this step as it gives you additional information in case of validation errors. -{: .notice--info} - -### Connector: Create a Relationship Template - -Start by creating a so called Relationship Template on the Connector. You can do so by calling the `POST /api/v2/RelationshipTemplates/Own` route. Use the following JSON in the request body: - -```jsonc -{ - "maxNumberOfAllocations": 1, - "expiresAt": "2023-06-01T00:00:00.000Z", - "content": { - "@type": "RelationshipTemplateContent", - "title": "Connector Demo Contact", - "onNewRelationship": { - // - } - } -} -``` - -{% include rapidoc api_route_regex="^post /api/v2/RelationshipTemplates/Own$" %} - -{% include copy-notice description="Save the `id` of the Relationship Template that you can find in the response. You will need it in the next step." %} - -### Connector: Create a QRCode for the Relationship Template - -Since we will use the Enmeshed App to send a Relationship Request to the Connector, we now have to create a QR Code one can scan with the App to retrieve the Relationship Template and send a Relationship Request to the Connector. - -For this, execute the `GET /api/v2/RelationshipTemplates/{id}` route (Accept Header: `image/png`) to create a QRCode. Use the ID of the Relationship Template from the previous step as the value for `id`. - -{% include rapidoc api_route_regex="^get /api/v2/RelationshipTemplates/{id}$" %} - -### App: Send a Relationship Request - -Open the created QR Code and start the Enmeshed App. Depending on what you already did with the App, choose one of the following paths: - -- If this is the first time you use the App: - - click on "Scan code" - - hold the camera in front of the QR code -- If you want to use a new profile: - - click on the "+ New profile" button - - click on "Scan code" - - hold the camera in front of the QR code -- If you want to use an existing profile: - - select the existing profile - - navigate to "Contacts" - - click on "Add contact" - - hold the camera in front of the QR code - -All three paths should result in a screen similar to the one below, where you can see the information that you added as content to the Relationship Template. - -!["Add contact" screen]( {{ '/assets/images/add-contact-screen.jpg' | relative_url }} ) - -Finally, fill out the required fields and click on "Add contact" to send the Relationship Request. This will create a new Relationship between the App and the Connector. This Relationship has the status `Pending` for now. - -### Connector: Accept the Relationship Request - -In order to move the Relationship into the `Active` state, you now need to accept the Relationship Request with the Connector. In order to do so, first execute the `POST /api/v2/Account/Sync` route, which will fetch all changes that occurred since the last time this endpoint was executed. - -{% include rapidoc api_route_regex="^post /api/v2/Account/Sync$" %} - -In the response you will receive the created Relationship, which contains corresponding Relationship Creation Change. - -Example: - -```json -{ - "result": { - "messages": [], - "relationships": [ - { - "id": "RELmJj25x2bZW0VXzAiQ", - ... - "status": "Pending", - "peer": "id19Sy75wjCWhQSxsbMiGLn6iSBfWvQmot5b", - "changes": [ - { - "id": "RCHUwBw7BWlROPlEjb51", - ... - "status": "Pending", - "type": "Creation" - } - ] - } - ] - } -} -``` - -{% include copy-notice description="Save the `id` of the Relationship (`REL_________________`) as well as the `id` of the first Relationship Change (`RCH_________________`) in the `changes` array and use them as input to the `PUT /api/v2/Relationships/{id}/Changes/{changeId}/Accept` route. You can leave that request body as it is." %} - -{% include rapidoc api_route_regex="^put /api/v2/Relationships/{id}/Changes/{changeId}/Accept$" %} - -Now the Relationship is in the `Active` state, so we can start to communicate with the opposite Identity, which we will do in the next part of this tutorial. In order to do so we will need the Address of that Identity. So in the response of the last request look for the `peer` property and write down its value. It should start with `id1`. - -## Sending and Receiving Messages - -After you have established a Relationship to an Identity, you can start to exchange Messages. Enmeshed defines [different types of Messages]({% link _docs_integrate/61-data-model.md %}#message). For this tutorial we will focus on Messages of type [Mail]({% link _docs_integrate/61-data-model.md %}#mail), which you can compare to a classic email: you can specify one or more recipients, a subject and a body, as well as add some attachments. - -### Sending a Message with a Connector - -To send a Message, all you need to do is call the `POST /api/v2/Messages` endpoint. You can use the content below, while replacing the placeholders in `recipients` and `to` with the Address you copied previously. You can further modify the `subject` and `body` properties to add some custom content. - -```json -{ - "recipients": ["id_________________________________"], - "content": { - "@type": "Mail", - "to": ["id_________________________________"], - "subject": "Welcome", - "body": "Hello. We are pleased to welcome you as our customer." - } -} -``` - -{% include rapidoc api_route_regex="^post /api/v2/Messages$" %} - -After you have sent this request, you should receive a push notification on your phone. Open the Enmeshed App, navigate to "Contacts" and select your Relationship. You should see the Message in the list. You can show details by tapping on it. - -### Receiving a Message with a Connector - -Next we are going to send a Message from the App to the Connector. Therefore, open the App, navigate to "Contacts" and select your Relationship. Next, tap on "New Message". Enter subject and body an tap on "Send". - -In order to fetch the Message, we need to call the `POST /api/v2/Account/Sync` endpoint again. - -{% include rapidoc api_route_regex="^post /api/v2/Account/Sync$" %} - -The response should contain a Message with the content you entered in the App. - -## What's next? - -Now that you have successfully established a Relationship and exchanged Messages, you can further explore the Enmeshed API. You can for example: - -- explore the [Enmeshed data model]({% link _docs_integrate/61-data-model.md %}) and learn more about the objects you used during this tutorial and the objects you will encounter in the future -- learn how to send [Requests over Messages]({% link _docs_scenarios/scenario-sc58.md %}) with your established Relationship -- dive deeper into creating and sending [Requests over RelationshipTemplates]({% link _docs_scenarios/scenario-sc59.md %}) diff --git a/_docs_integrate/01-integrate-scenarios.md b/_docs_integrate/01-integrate-scenarios.md new file mode 100644 index 000000000..4c6ca655f --- /dev/null +++ b/_docs_integrate/01-integrate-scenarios.md @@ -0,0 +1,226 @@ +--- +title: "Integrate enmeshed" +permalink: /integrate +published: true +sidebar: + - title: "Integrate enmeshed" + nav: "docs_integrate" +--- + +You want to seamlessly use enmeshed with your processes, solutions and software components? No worries, you are good to go! + +We've built the enmeshed Connector exactly for this scenario: to integrate existing systems with the enmeshed approach with as little effort as possible. + +Here you'll find everything you need to seamlessly dive into the world of enmeshed and integrate it into your applications and systems. Whether you're just starting out or already familiar with enmeshed, our comprehensive guide and resources are at your disposal. + +## Getting Started + +Begin your integration journey by familiarizing yourself with the Connector REST API and exploring the fundamental steps for integration. + +## Data Model + +Understand enmeshed's data model and how it fits into your integration, including error codes and attribute values. + +## Handling Events + +Discover how events work and how you can leverage them in your application. + +## Manage Requests + +Learn how to create and manage requests. + +## Manage Attributes of Others + +Explore how to store and query attributes in the Wallet for other users. + +## Messages + +Explore how to send messages through enmeshed for simple and secure communication. + +## Programming + +Gain insights into effectively utilizing the Connector SDKs to streamline and optimize your integration. + +## Requesting Consent of Users + +Discover how to request one-time consents from users. + + + diff --git a/_docs_integrate/03-connector-modules.md b/_docs_integrate/03-connector-modules.md deleted file mode 100644 index 02767d6f5..000000000 --- a/_docs_integrate/03-connector-modules.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "Connector Modules" -permalink: /integrate/connector-modules -toc: true ---- - -Since the Connector is based on the Runtime, [all Modules of the Runtime]({% link _docs_explore/61-runtime.md %}#runtime-modules) are also available in the Connector. - -Additionally, the Connector defines its own Modules that only make sense in the context of a Connector and are therefore not defined in the Runtime. - -Read more about the Module configuration on the icon in each title. - -### AMQP Publisher {#amqppublisher} - -This Module proxies all events in the internal event bus of the Connector to an exchange in a configurable AMQP server. - -Compared to [webhooks](#webhooksv2), this gives you the full feature set of a message broker. There are multiple scenarios where this Module outweighs the Webhooks Module. For example: - -- You need persistence for the triggered events. -- You want to integrate Enmeshed into an already existing message broker. - -### Auto Accept Relationship Creation Changes {#autoacceptrelationshipcreationchanges} - -It is not recommended to use this Module for production scenarios. -{: .notice--danger} - -The `autoAcceptRelationshipCreationChanges` Module listens to the events about incoming Relationship Change Requests. It immediately accepts the Requests, using the configured `responseContent`. - -Keep in mind that you need to synchronize the state of the Connector with the Backbone in order to receive incoming Relationship Requests. The `sync` Module automates this, but you can also do this manually by calling the `/api/v2/Account/Sync` route. - -### Core HTTP API {#corehttpapi} - -This Module contains the HTTP API with all Enmeshed base functionalities. - -### Sync {#sync} - -The `sync` Module regularly fetches changes from the Backbone (e.g. new Messages / new incoming Relationship Requests). This process automatically triggers the events used by other Modules like the `webhooks` Module. - -### WebhooksV2 {#webhooksv2} - -With the REST API, pull mechanisms are supported. However, as there are many bidirectional scenarios within Enmeshed, a push mechanism is favorable: the Connector is synchronizing its state with the Backbone and notifies the organization's backend services about changes. - -For this, the Connector supports the configuration of webhooks which are called every time a specific [Connector Event]({% link _docs_integrate/32-connector-events.md %}) is triggered (e.g. a new Message has been received => `transport.messageReceived`). - -Keep in mind that you need to synchronize the state of the Connector with the Backbone in order to receive events. The `sync` Module automates this, but you can also do this manually by calling the `/api/v2/Account/Sync` route. diff --git a/_docs_integrate/10-connector-installation.md b/_docs_integrate/10-connector-installation.md deleted file mode 100644 index 3c8f4a2bd..000000000 --- a/_docs_integrate/10-connector-installation.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: "Connector Installation" -permalink: /integrate/connector-installation -toc: true ---- - -## Prerequisites - -### MongoDB - -The Connector requires a MongoDB compatible database as its data storage. MongoDB is a document-oriented database. For compatibility and security reasons, the most up-to-date version of MongoDB should be used. -For more information, please see . - -If you want to use an open-source database you can use [FerretDB](https://www.ferretdb.io) instead. - -### Container Runtime - -The Connector requires a Container Runtime like Docker or Kubernetes: Docker is a virtualization technology which introduces highly portable software containers. The Connector is shipped and updated as such a Docker container - the Docker Runtime is the runtime environment which can execute the Docker containers. For compatibility and security reasons, the most up-to-date version of the Docker Runtime should be used. -For more information, please see . - -Visit [the official docker docs](https://docs.docker.com/get-docker/) for installation guides. - -### Hardware Requirements - -No special hardware requirements have been identified so far and as always, hardware requirements strongly correlate with the envisoned usage scenario. - -A good starting point for hosting the Docker image of the Connector would be the following: - -- 1 CPU -- 512MB RAM -- 1GB HDD - -Depending on the usage scenario, higher hardware requirements might be necessary. - -### Internet Connectivity - -A reliable and fast internet connection is mandatory for running the Connector. However, the Connector is only communicating with the Backbone so the corresponding domain (e.g. `https://prod.enmeshed.eu`) can be whitelisted and the associated certificate can be additionally pinned. - -### List docker image tags - -Read more about listing available docker image tags [here]({% link _docs_explore/52-connector.md %}#connector-docker-image). - -### Familiarize with our policies - -Before setting up Enmeshed, you should familiarize yourself with our [Security Considerations]({% link _docs_integrate/42-connector-security.md %}) and [Privacy Considerations]({% link _docs_integrate/43-connector-privacy.md %}). - -## Installation with Docker - -Make sure that you have installed docker compose. Visit [the official installation guide](https://docs.docker.com/compose/install/) for more information. - -**ATTENTION:** The Docker compose files we provide in this tutorial are not recommended to use in production scenarios. Please read [Use Compose in production](https://docs.docker.com/compose/production/) for more information on how to write a production-grade compose file and our [Security Considerations]({% link _docs_integrate/42-connector-security.md %}#docker-compose-file-security-considerations). -{: .notice--warning} - -### Option 1: docker compose including MongoDB - -Go through the following steps to start the Connector: - -1. place the file [examples/docker-compose-with-mongodb.yml](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/docker-compose-with-mongodb.yml) as `docker-compose.yml` in a folder of your choice -2. create a config file that can be mounted inside the Connector. Fill the config file using the [configuration docs]({% link _docs_integrate/11-connector-configuration.md %}) and the [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json). If you used the yml-file from the first step, the connection string looks as follows: - ```text - mongodb://:@mongodb:27017 - ``` -3. replace all `` in the compose file with the corresponding values -4. (optional) follow the steps under [log file mounting](#log-file-mounting) if you want to persist and access the log files on the host system -5. execute `docker compose up -d` in the shell - -### Option 2: docker compose with existing MongoDB - -Visit the official [MongoDB website](https://www.mongodb.com/) for installation without docker or cloud usage or the [docker hub page](https://hub.docker.com/_/mongo) for information about the installation with docker. - -Go through the following steps to start the Connector: - -1. make your existing MongoDB available for the connector -2. place the file [examples/docker-compose-with-existing-mongodb.yml](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/docker-compose-with-existing-mongodb.yml) as `docker-compose.yml` in a folder of your choice -3. create a config file that can be mounted inside the Connector. Fill the config file using the [configuration docs]({% link _docs_integrate/11-connector-configuration.md %}) and the [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json) -4. replace all `` in the compose file with the corresponding values -5. (optional) follow the steps under [log file mounting](#log-file-mounting) if you want to persist and access the log files on the host system -6. execute `docker compose up -d` in the shell - -### Option 3: docker compose with FerretDB - -Go through the following steps to start the Connector: - -1. place the file [examples/docker-compose-with-ferretdb.yml](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/docker-compose-with-ferretdb.yml) as `docker-compose.yml` in a folder of your choice -2. create a config file that can be mounted inside the Connector. Fill the config file using the [configuration docs]({% link _docs_integrate/11-connector-configuration.md %}) and the [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json). If you used the yml-file from the first step, the connection string looks as follows: `mongodb://ferretdb:27017` -3. replace all `` in the compose file with the corresponding values -4. (optional) follow the steps under [log file mounting](#log-file-mounting) if you want to persist and access the log files on the host system -5. execute `docker compose up -d` in the shell - -## Installation with Kubernetes and Helm - -Make sure that you have a running Kubernetes cluster and that you have installed [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) and [Helm](https://helm.sh/docs/intro/install/). - -You have to provide your own MongoDB instance. Visit the [MongoDB website](https://www.mongodb.com/) for installation without docker or cloud usage or the [docker hub page](https://hub.docker.com/_/mongo) for information about the installation with docker or install it [in kubernetes via Helm](https://artifacthub.io/packages/helm/bitnami/mongodb). - -For the installation and configuration head over to the dedicated [Connector Helm chart site]({% link _docs_integrate/14-connector-helm-chart.md %}). - -## Validate the Connector installation - -You can validate the Connector installation by checking its health route. Simply access `/health` in your browser or using curl. - -If the swagger documentation is enabled you can also access it under `/docs` - -## Log file mounting - -1. Uncomment the volume mapping in the created `docker-compose.yml` file -2. Create a folder where the log files shall be placed. Make sure that the process in the container has write access to the folder e.g. by executing `chmod 777 ` on your created folder. -3. replace `` with the path to your created folder - -## Troubleshooting - -If you encounter any problems while setting up the Connector, head over to the [Troubleshooting]({% link _docs_integrate/12-connector-setup-troubleshooting.md %}) site. diff --git a/_docs_integrate/11-connector-configuration.md b/_docs_integrate/11-connector-configuration.md deleted file mode 100644 index b1cec344d..000000000 --- a/_docs_integrate/11-connector-configuration.md +++ /dev/null @@ -1,417 +0,0 @@ ---- -title: "Connector Configuration" -permalink: /integrate/connector-configuration -toc: true ---- - -## Mounting a config file - -1. Create a config file in JSON format in a folder of your choice. -2. Fill the config file with your desired configuration (it's sufficient to add values you want to change; the Connector will merge your config file with the default configuration) Example: - - ```jsonc - { - "infrastructure": { - "httpServer": { - "enabled": true, - "apiKey": "an-api-key" - } - } - } - ``` - -3. Mount the created config file into the Docker container (e.g. to `/config.json`). See the official [documentation](https://docs.docker.com/storage/bind-mounts/) for more information on how to mount files into a Docker container. This is also possible using [docker compose](https://docs.docker.com/compose/compose-file/compose-file-v3/#volumes). -4. Set the environment variable `CUSTOM_CONFIG_LOCATION` to the path you mounted your config file to (e.g. `CUSTOM_CONFIG_LOCATION="/config.json"`). - -There is also an [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json) available. It sets some default values, please only use the fields you require - -## Environment variables - -The configuration can also be done using environment variables. This feature is included in the Connector since version `2.2.1`. - -### Parsing rules - -1. Nested fields can be represented using a colon (`:`) as a separator. - - The `:` separator doesn't work with environment variable hierarchical keys on all platforms. The double underscore (`__`) is supported on all platforms (e.g. bash does not support the `:` separator but it supports `__` ). The Connector will therefore convert `__` to `:` so you can use it on that systems. - {: .notice--warning} - -2. The parameter casing must be the same as the config file casing. -3. The strings "true" and "false" are converted to the respective boolean values. -4. Number strings (`"1"` / `"1.1"`) will be converted to the respective number types. -5. Complex structures (arrays, objects) are not supported. (=> `modules:aModule:aKey='{"a": "x", "b": "y"}'` or `modules:aModule:aKey='["a", "b"]'` is not valid) - -### Example - -You want to configure the following values: - -```jsonc -{ - "infrastructure": { - "httpServer": { - "enabled": true, - "port": 8080, - "apiKey": "an-api-key" - } - } -} -``` - -- The first value can be configured using the variable `infrastructure:httpServer:enabled="true"`. Note that the value is represented as a string in the environment variable and the Connector will rewrite it to its boolean representation. -- The second value can be configured using the variable `infrastructure:httpServer:port="8080"`. Note that the value is represented as a string in the environment variable and the Connector will rewrite it to its number representation. -- The third value can be configured using the variable `infrastructure:httpServer:apiKey="an-api-key"`. - -## Configuration options - -The Connector provides the following configuration parameters: - -```jsonc -{ - "debug": false, - "transportLibrary": { - "baseUrl": "https://prod.enmeshed.eu", - "platformClientId": "CLIENT_ID", - "platformClientSecret": "CLIENT_SECRET" - }, - "database": { - "connectionString": "mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]", - "dbName": "a-db-name" - }, - "infrastructure": { ... }, - "modules": { ... } -} -``` - -You can validate the config using our [schema file](https://raw.githubusercontent.com/nmshd/cns-connector/main/config.schema.json). This is possible for example with [VSCode](https://code.visualstudio.com/docs/languages/json#_json-schemas-and-settings) or online tools like [jsonschemavalidator.net](https://www.jsonschemavalidator.net). - -### debug `availbable since version 3.3.0` {#debug} - -⚠️ Do not turn on debug mode in production environments. -{: .notice--danger} - -The debug flag configures if the Connector is set to **production** or **debug** mode. Defaults to `false`. Can also be configured using the environment variable `DEBUG`. - -### transportLibrary - -- **baseUrl** `default: "https://prod.enmeshed.eu"` - - The base url is used to communicate with the Enmeshed platform. It can be changed to use a custom Enmeshed Backbone. - -- **platformClientId** `required` - - The client id is required to communicate with the Enmeshed platform. It can be acquired from the [Enmeshed Support]({% link _docs_integrate/00-basics.md %}#support). - -- **platformClientSecret** `required` - - The client secret is required to communicate with the Enmeshed platform. It can be acquired from the [Enmeshed Support]({% link _docs_integrate/00-basics.md %}#support). - -### database - -- **connectionString** `required` - - At this point the connection to the database can be configured. The connection string must follow the MongoDB [Connection String URI Format](https://docs.mongodb.com/manual/reference/connection-string/). - -- **dbName** `default: "default"` - - The `dbName` string is used as the name of the MongoDB database, prefixed with `acc-`. You can use any name you like, but keep in mind that changing it later will NOT rename the database. Instead a new database will be created, together with a new Enmeshed identity. Even though the old database will still exist, the Connector will not be able to access the data until you change the `dbName` back to its original value. - - If you would like to use multiple Connectors with distinct identities (one identity per Connector) running on the same database, you have to specify a unique `dbName` for each of them. - - **Note:** If you are using the Connector in combintation with a FerretDB, you have to pay attention to the database name restrictions specified in the [FerretDB documentation](https://docs.ferretdb.io/diff/). - {: .notice--warning} - -### infrastructure - -Each infrastructure can be enabled or disabled by passing true / false to `enabled`. - -#### httpServer - -The HTTP server is the base for the `coreHttpApi` Module. It opens an express HTTP server where Modules can register endpoints. - -**Sample Configuration:** - -```jsonc -{ - // ... - - "infrastructure": { - "httpServer": { - "enabled": true, - "cors": { - "origin": false - }, - "apiKey": "an-api-key" - } - } -} -``` - -- **enabled** `default: true` - - Enable or disable the HTTP server. - -- **cors** `default: { "origin": false }` - - configure the CORS middleware. Valid options can be found [here](https://github.com/expressjs/cors#configuration-options). - -- **apiKey** `required` - - Define the API-Key the Connector should use to authenticate requests. - - The API-Key can be chosen arbitrarily and has to be sent with every request in the `X-API-KEY` HTTP-Header. - - There are no limitations regarding the allowed characters. We recommend using an API-Key that is at least 20 characters long. - - The API-Key protects your Connector from unauthorized access and should therefore be kept secret. - -- **helmetOptions** `default: depending on the connector mode` - - Configure the [helmet](https://helmetjs.github.io/) middleware. - - Defaults to `{}` in `production` mode. In `debug` mode the following options are used: - - ```json - { - "contentSecurityPolicy": { - "directives": { - "defaultSrc": [], - "scriptSrc": ["'self'"], - "styleSrc": ["'self'", "'unsafe-inline'", "https://fonts.googleapis.com"], - "imgSrc": ["'self'", "https://enmeshed.eu", "data:"], - "connectSrc": ["'self'"], - "upgradeInsecureRequests": null - } - } - } - ``` - -### modules - -Every Module can be enabled or disabled by passing true / false to `enabled`. Read more about the Module by clicking on the icon in each title. - -#### amqpPublisher {#amqppublisher} - -**Sample Configuration:** - -```jsonc -{ - // ... - - "modules": { - "amqpPublisher": { - "enabled": false, - "url": "amqp://example.com:5672", - "exchange": "myExchange" - } - } -} -``` - -- **enabled** `default: false` - - Enable or disable the AMQP Publisher Module. - -- **url** `required` - - The URL of the AMQP server. - -- **exchange** `default: ""` - - The name of the AMQP exchange to publish to. - -#### autoAcceptRelationshipCreationChanges {#autoacceptrelationshipcreationchanges} - -It is not recommended to use this Module for production scenarios. -{: .notice--danger} - -**Sample Configuration:** - -```jsonc -{ - // ... - - "modules": { - "autoAcceptRelationshipCreationChanges": { - "enabled": false, - "responseContent": {} - } - } -} -``` - -- **enabled** `default: false` - - Enable or disable the autoAcceptRelationshipCreationChanges Module. - -- **responseContent** `default: {}` - - The content that is used to accept the incoming Relationship Request. - -#### coreHttpApi {#corehttpapi} - -**Sample Configuration:** - -```jsonc -{ - // ... - - "modules": { - "coreHttpApi": { - "enabled": true, - "docs": { - "enabled": false, - "rapidoc": { - "persistAuth": false - } - } - } - } -} -``` - -- **enabled** `default: true` - - Enable or disable the coreHttpApi Module. - -- **docs:enabled** `default: false` - - It is not possible to enable the docs in [production mode](#debug). - {: .notice--info} - - Enable / disable the `/docs/json` and `/docs/yaml` routes and the rendered swagger / rapidoc documentations. - -- **docs:rapidoc:persistAuth** `default: false` - - Authentication persistence can be a security risk. Use it with caution. - {: .notice--danger} - - If set to `true` rapidoc persists the API Key in the local storage of the browser. - -#### sync {#sync} - -**Sample Configuration:** - -```jsonc -{ - // ... - - "modules": { - "sync": { - "enabled": false, - "interval": 60 - } - } -} -``` - -- **enabled** `default: false` - - Enable or disable the sync Module. - -- **interval** `default: 60` - - The interval in seconds at which the sync Module will fetch changes from the Backbone. - -#### webhooksV2 {#webhooksv2} - -**Sample Configuration:** - -```jsonc -{ - // ... - - "modules": { - "webhooksV2": { - "enabled": false, - "targets": {}, - "webhooks": [] - } - } -} -``` - -- **enabled** `default: false` - - Enable or disable the webhooksV2 Module. - -- **targets** `default: {}` - - Here you can predefine targets so you can reuse them for multiple webhooks. - - A target consists of a URL as well as optional arbitrary headers, which the Connector should send as part of the request. Optionally, your URL can contain the placeholder {% raw %}`{{trigger}}`{% endraw %}, which at runtime will be replaced with the event name that triggered the webhook (e.g. transport.messageReceived). This way, you can reuse the same target for multiple webhooks and still have different URLs for different events. See the code below for an example. - - The server under the URL must respond to the request with a status code between 200 and 299. Otherwise the Connector will log a warning. - -
          - - **Example** - - ```jsonc - { - // a target with headers - "target1": { - "url": "https://example.com/enmeshed/webhook2", - - // the following headers will be sent as part of the webhook - "headers": { - "a-header": "a-value", - "another-header": "another-value" - } - }, - - // a target without headers - "target2": { - "url": "https://example.com/enmeshed/webhook" - }, - - // a target with the {% raw %}{{trigger}}{% endraw %} placeholder as part of the URL - "target3": { - "url": "https://example.com/enmeshed/webhook/{% raw %}{{trigger}}{% endraw %}" - } - } - ``` - -- **webhooks** `default: []` - - The webhooks that will be called. A webhook consists of one or more [Connector Events]({% link _docs_integrate/32-connector-events.md %}) on which the webhook should be triggered, as well as a target to which the request should be sent. The target either is an inline definition of target as described above, or a name of a target defined in the `targets` object. - -
          - - **Example** - - ```jsonc - [ - { - "triggers": ["transport.messageReceived"], - - // inline declaration of a target - "target": { - // see the targets section for a description of how to configure a target - } - }, - { - "triggers": ["transport.messageReceived"], - - // a reference to a target defined in the 'targets' object - "target": "target1" - } - ] - ``` - -##### Payload - -```jsonc -{ - // the event name (e.g. transport.messageReceived) that triggered the webhook - "trigger": "transport.messageReceived", - - // the data of the event - "data": {} -} -``` - -You can find type definitions of the event data in the [Connector Events]({% link _docs_integrate/32-connector-events.md %}) section. - -## Troubleshooting - -If you encounter any problems while configuring the Connector, head over to the [Troubleshooting]({% link _docs_integrate/12-connector-setup-troubleshooting.md %}) site. diff --git a/_docs_integrate/12-connector-setup-troubleshooting.md b/_docs_integrate/12-connector-setup-troubleshooting.md deleted file mode 100644 index ae8b630bf..000000000 --- a/_docs_integrate/12-connector-setup-troubleshooting.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Troubleshooting" -permalink: /integrate/connector-setup-troubleshooting -toc: true ---- - -## Troubleshooting Guide - -For any issues with the Connector make sure you checked the logs and the `/Monitoring/*` routes. The `/Monitoring/Support` route provides a lot of information about the current state of the Connector and you can for example detect misconfigurations. - -{% include rapidoc api_route_regex="/Monitoring/Support$" title="" %} - -## Common Errors - -### Config file mounting (`EISDIR` | `invalid mode: RO`) - -**Symptoms** - -One of the following errors are logged during the startup of the Connector: - -- `Error parsing your configuration file: [/config.json]: EISDIR: illegal operation on a directory, read` -- `ERROR: for connector Cannot create container for service connector: invalid mode: RO` - -**How to fix?** - -Given the following filesystem structure: - -```text -home/ -└── connector/ - ├── config.json - └── docker-compose.yml -``` - -If you mount `/home/connector:/config.json:ro`, the created `/config.json` in the container will be a directory. To fix this the mount has to be `/home/connector/config.json:/config.json:ro` or `./config.json:/config.json:ro` (docker compose translates relative links to absolute links). - -### Database Authorization Error - -**Symptoms** - -During the startup of the Connector, the following error is logged: - -```text -[ERROR] ConnectorRuntime - Could not connect to the configured database. Try to check the connection string and the database status. Root error: MongoServerError: Authentication failed. -``` - -**How to fix?** - -This error can show up when you misuse the environment variables `MONGO_INITDB_ROOT_USERNAME` and/or `MONGO_INITDB_ROOT_PASSWORD` of the MongoDB Docker image. Even though their name is self-explanatory, you can easily read over the "INITDB" part in them. This means that the username and password you specify here are only used to **initially** create a database user. When you change them and then restart the container, **the root username is not changed**. If you want to change the root user's name or password, look into the MongoDB documentation. diff --git a/_docs_integrate/13-connector-error-codes.md b/_docs_integrate/13-connector-error-codes.md deleted file mode 100644 index 1f858c0cb..000000000 --- a/_docs_integrate/13-connector-error-codes.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: ErrorCodes -permalink: /integrate/error-codes ---- - -Please find a list of Enmeshed error codes below. Most often the errors occur on invalid input or actions. If you happen to find unexpected errors while using Enmeshed or cannot deduce the reason for your error, please report it in the [Enmeshed Issue Tracker](https://github.com/nmshd/feedback/issues). - -| ErrorCode | Description | -| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| {% include anchor a="error.connector.http.methodNotAllowed" %} | This method is not supported for the requested resource. | -| {% include anchor a="error.connector.http.notAcceptable" %} | The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request. | -| {% include anchor a="error.connector.http.routeDoesNotExist" %} | The requested route does not exist. | -| {% include anchor a="error.connector.unauthorized" %} | Unauthorized. | -| {% include anchor a="error.connector.validation.invalidJsonInPayload" %} | The given payload is not a valid json object. | -| {% include anchor a="error.consumption.attributes.cannotSucceedAttributesWithAParent" %} | The Attribute you want to succeed has a parent. You cannot succeed Attributes with a parent. Instead, succeed the parent, which will implicitly succeed all its children. For example, if you want to change a HouseNumber, you should succeed the Address it is part of. | -| {% include anchor a="error.consumption.requests.decide.validation.invalidNumberOfItems" %} | The Request and the Response item count is different. | -| {% include anchor a="error.consumption.requests.decide.validation.itemAcceptedButParentNotAccepted" %} | You accepted an item of a Request or RequestItemGroup, but you rejected the parent. If you accept a RequestItem, you need to accept all parents up to the root. | -| {% include anchor a="error.consumption.requests.decide.validation.mustBeAcceptedItemNotAccepted" %} | The Request was accepted but an item that was flagged as 'mustBeAccepted' was not accepted. | -| {% include anchor a="error.consumption.requests.decide.validation.requestItemAnsweredAsRequestItemGroup" %} | You answered a RequestItem as a RequestItemGroup. | -| {% include anchor a="error.consumption.requests.decide.validation.requestItemGroupAnsweredAsRequestItem" %} | You answered a RequestItemGroup as a RequestItem. | -| {% include anchor a="error.consumption.requests.invalidRequestItem" %} | The given RequestItem is invalid. | -| {% include anchor a="error.consumption.requests.servalErrorDuringRequestItemProcessing" %} | A serialization / validation error occurred during the RequestItem processing. Check the type definitions of your used types. | -| {% include anchor a="error.consumption.requests.unexpectedErrorDuringRequestItemProcessing" %} | An unknown error occurred during the RequestItem processing. | -| {% include anchor a="error.runtime.alreadyInitialized" %} | The runtime is already initialized. The init method can only be executed once. | -| {% include anchor a="error.runtime.alreadyStarted" %} | The runtime is already started. You should stop it first for a restart. | -| {% include anchor a="error.runtime.cacheEmpty" %} | The cache of the requested entity is empty. | -| {% include anchor a="error.runtime.challenges.invalidChallenge" %} | The challengeString is invalid. | -| {% include anchor a="error.runtime.challenges.invalidSignature" %} | The signature is invalid. | -| {% include anchor a="error.runtime.files.invalidReference" %} | The given reference is not valid. The reference for a file must start with 'VE9L' or 'RklM'. | -| {% include anchor a="error.runtime.invalidTokenContent" %} | The given token has an invalid content for this route. | -| {% include anchor a="error.runtime.messages.fileNotFoundInMessage" %} | The requested file was not found in the given message. | -| {% include anchor a="error.runtime.notInitialized" %} | The runtime is not initialized. You must run init before you can start or stop the runtime. | -| {% include anchor a="error.runtime.notStarted" %} | The runtime is not started. You can only stop the runtime if you executed start before. | -| {% include anchor a="error.runtime.notSupported" %} | The requested feature is not supported. | -| {% include anchor a="error.runtime.recordNotFound" %} | The requested Record was not found. Make sure the ID exists and the record is not expired. | -| {% include anchor a="error.runtime.relationshipTemplates.cannotCreateQRCodeForPeerTemplate" %} | You cannot create a QRCode for a peer template. | -| {% include anchor a="error.runtime.relationshipTemplates.cannotCreateTokenForPeerTemplate" %} | You cannot create a token for a peer template. | -| {% include anchor a="error.runtime.relationshipTemplates.invalidReference" %} | The given reference is not valid. The reference for a relationship template must start with 'VE9L' or 'VE9L'. | -| {% include anchor a="error.runtime.requestDeserialization" %} | There was an error during the request deserialization. | -| {% include anchor a="error.runtime.servalError" %} | A serialization / validation error occurred. | -| {% include anchor a="error.runtime.startup.noActiveAccount" %} | No AccountController could be found. You might have to login first. | -| {% include anchor a="error.runtime.startup.noActiveConsumptionController" %} | No ConsumptionController could be found. You might have to login first. | -| {% include anchor a="error.runtime.startup.noActiveExpander" %} | No DataViewExpander could be found. You might have to login first. | -| {% include anchor a="error.runtime.unknown" %} | An unknown error occurred. Check the error message or the stack trace to learn more. | -| {% include anchor a="error.runtime.unknownType" %} | The given '@type' could not be found during the deserialization. | -| {% include anchor a="error.runtime.validation.invalidPayload" %} | The given combination of properties in the payload is not supported. | -| {% include anchor a="error.runtime.validation.invalidPropertyValue" %} | A property of the given payload is invalid. | -| {% include anchor a="error.transport.challenges.challengeTypeRequiresRelationship" %} | The challenge type 'Relationship' requires a relationship for the challenge creation. | -| {% include anchor a="error.transport.datawallet.currentBiggerThanTarget" %} | The current datawallet version is bigger than the target version. | -| {% include anchor a="error.transport.datawallet.encryptedPayloadIsNoCipher" %} | The given encrypted payload is no cipher. | -| {% include anchor a="error.transport.datawallet.insufficientSupportedDatawalletVersion" %} | The current SupportedDatawalletVersion is too low to perform the requested operation. | -| {% include anchor a="error.transport.datawallet.unsupportedModification" %} | A collection was recieved in a CacheChanged datawallet modification but is not supported in the current version of the library. | -| {% include anchor a="error.transport.devices.alreadyOnboarded" %} | The device that you try to create an onboarding code for has already been onboarded. | -| {% include anchor a="error.transport.files.cipherMismatch" %} | The actual hash of the cipher does not match the given cipherHash. Something went wrong while storing/transmitting the file. | -| {% include anchor a="error.transport.files.fileContentUndefined" %} | The given files content is undefined. | -| {% include anchor a="error.transport.files.invalidMetadata" %} | The metadata of the file is invalid. | -| {% include anchor a="error.transport.files.invalidTruncatedReference" %} | The given truncated reference is invalid. | -| {% include anchor a="error.transport.files.maxFileSizeExceeded" %} | The given file content size exceeds the max file size the backbone accepts. | -| {% include anchor a="error.transport.files.plaintextHashMismatch" %} | The actual hash of the plaintext does not match the given plaintextHash. Something went wrong while encrypting/decrypting the file. | -| {% include anchor a="error.transport.general.baseUrlNotSet" %} | The baseUrl was not set. | -| {% include anchor a="error.transport.general.platformClientIdNotSet" %} | The platform clientId was not set. | -| {% include anchor a="error.transport.general.platformClientInvalid" %} | The combination of platform clientId and clientSecret is invalid. | -| {% include anchor a="error.transport.general.platformClientSecretNotSet" %} | The platform clientSecret was not set. | -| {% include anchor a="error.transport.identity.realmLength" %} | The given realm is not 3 characters long. | -| {% include anchor a="error.transport.messages.noMatchingRelationship" %} | A Relationship with the given address does not exist. | -| {% include anchor a="error.transport.messages.ownAddressNotInList" %} | The recipients list of a message didn't contain an entry for the own address. This message should not have been received. | -| {% include anchor a="error.transport.messages.plaintextMismatch" %} | The own address was not named as a recipient within the signed MessagePlaintext. For example this can be caused by a replay attack. | -| {% include anchor a="error.transport.messages.signatureListMismatch" %} | The signature list didn't contain an entry for a given address. | -| {% include anchor a="error.transport.messages.signatureNotValid" %} | The digital signature on a message for a peer key is invalid. An impersonination attack might be the cause of this. | -| {% include anchor a="error.transport.notSupported" %} | The requested method is not yet supported. | -| {% include anchor a="error.transport.recordNotFound" %} | The requested record was not found. | -| {% include anchor a="error.transport.relationships.wrongChangeStatus" %} | The relationship change has the wrong status to run the requested operation. | -| {% include anchor a="error.transport.secrets.secretNotFound" %} | No secret was found for a specific type. | -| {% include anchor a="error.transport.secrets.wrongBaseKeyType" %} | The given secret type is not supported! | -| {% include anchor a="error.transport.signatureNotValid" %} | A signature is invalid. | -| {% include anchor a="error.transport.tokens.invalidTokenContent" %} | The given token content is invalid. | diff --git a/_docs_integrate/14-connector-helm-chart.md b/_docs_integrate/14-connector-helm-chart.md deleted file mode 100644 index 99dbec4cf..000000000 --- a/_docs_integrate/14-connector-helm-chart.md +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: Helm Chart -permalink: /integrate/helm-chart ---- - -## Versions - -The available Helm chart versions can be found [here](https://github.com/nmshd/cns-connector/pkgs/container/connector-helm-chart/versions). - -We provide a new Helm chart version for each new Connector release and each Helm chart will deploy the Connector in the chart's version. (Helm chart version `3.2.1` deploys Connector version `3.2.1`) -You can override the Connector version by setting the `image.tag` value in the Helm chart. - -## Configuration - -The Helm chart can be configured using a [yaml file or the command line](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). The following table lists the configurable parameters of the Helm chart and their default values. - -You can also query the available options using the command line: `helm show values oci://ghcr.io/nmshd/connector-helm-chart --version ` - -| Parameter | Description | Default | -| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | -| `image.pullPolicy` | The image's [PullPolicy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) | `"IfNotPresent"` | -| `image.tag` | The image's tag. [Available tags](https://github.com/nmshd/cns-connector/pkgs/container/connector/versions) | The version of the Helm chart. | -| `config` | The configuration of the Connector in yaml or json format. [Configuration options](https://enmeshed.eu/integrate/connector-configuration) | `{}` | -| | | | -| `pod.securityContext` | [SecurityContext](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context) for the pod. | `{}` | -| `pod.nodeSelector` | [NodeSelector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) for the pod. | `{}` | -| `pod.tolerations` | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) for the pod. | `[]` | -| `pod.affinity` | [Affinity](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#NodeAffinity) for the pod. | `{}` | -| | | | -| `pod.connector.environment` | A list of [environment variables](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#environment-variables) for the Connector container. Can be used for configuring secrets. | `[]` | -| `pod.connector.securityContext` | [SecurityContext](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1) for the Connector container. | `{}` | -| `pod.connector.resources` | [Resources](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#resources) for the Connector container. | `{}` | -| `pod.connector.containerPort` | The port the Connector is listening on. Must be the same as `infrastructure.httpServer.port` in the `config`. | `80` | -| | | | -| `pod.ferretdb.enabled` | Enables / disables the FerretDB sidecar. | false | -| `pod.ferretdb.image` | The image used to deploy the FerretDB sidecar. Can be `ferretdb` `ferretdb-dev` or `all-in-one` | `"ferretdb"` | -| `pod.ferretdb.tag` | The tag used to deploy the FerretDB sidecar. | `"latest"` | -| `pod.ferretdb.environment` | A list of [environment variables](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#environment-variables) for the FerretDB container. Can be used for configuring secrets. | `[]` | -| `pod.ferretdb.securityContext` | [SecurityContext](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1) for the FerretDB container. | `{}` | -| `pod.ferretdb.resources` | [Resources](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#resources) for the FerretDB container. | `{}` | -| | | | -| `service.type` | The [ServiceType](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) of the service. | `"ClusterIP"` | -| `service.port` | The port of the service. | `80` | - -### Example Configuration - -The following example shows how to configure the Helm chart. - -```yaml -config: - debug: true - modules: - coreHttpApi: - docs: - enabled: true - -pod: - connector: - environment: - - name: database__connectionString - valueFrom: - secretKeyRef: - name: db-connection-string - key: VALUE - - - name: transportLibrary__platformClientId - value: test - - name: transportLibrary__platformClientSecret - valueFrom: - secretKeyRef: - name: platform-client-secret - key: VALUE - - - name: infrastructure__httpServer__apiKey - valueFrom: - secretKeyRef: - name: api-key - key: VALUE -``` - -If you prefer json over yaml for the `config` section the following example is equivalent to the yaml example above. - -```yaml -config: { "modules": { "coreHttpApi": { "docs": { "enabled": false } } } } -# ... -``` - -## Installation - -Create a file named `values.yaml` with the desired configuration and run the following command to install the Helm chart. - -```bash -helm install oci://ghcr.io/nmshd/connector-helm-chart --version -f values.yaml -``` - -### Installation with FerretDB `all-in-one` - -The Helm chart can be configured to deploy a FerretDB `all-in-one` instance as a sidecar. This image does not provide persistence, therefore this is useful e.g. for testing purposes or for a quick start. - -```yaml -config: - debug: true - modules: - coreHttpApi: - docs: - enabled: true - database: - connectionString: "mongodb://localhost:27017" - -pod: - connector: - environment: - - name: transportLibrary__platformClientId - alueFrom: - secretKeyRef: - name: platform-client-id - key: VALUE - - name: transportLibrary__platformClientSecret - valueFrom: - secretKeyRef: - name: platform-client-secret - key: VALUE - - - name: infrastructure__httpServer__apiKey - valueFrom: - secretKeyRef: - name: api-key - key: VALUE - - ferretdb: - enabled: true - image: all-in-one -``` diff --git a/_docs_integrate/20-connector-api.md b/_docs_integrate/20-connector-api.md deleted file mode 100644 index fb6204e0c..000000000 --- a/_docs_integrate/20-connector-api.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Connector API" -permalink: /integrate/connector-api ---- - -The primary integration capability of the Connector is the REST API. In order to use it, you should have received an API-Key for the respective Connector. An API-Key so far has all authorizations for accessing the API. - -## Interactive Documentation - -You can find the REST API documentation hosted on your Connector on the following HTTP endpoints. Swagger and Rapidoc are interactive websites hosted on the Connector with which you can try out the various APIs interactively. - -- /docs/swagger : The Swagger UI of the Connector's OpenAPI specification -- /docs/rapidoc : The Rapidoc UI of the Connector's OpenAPI specification - -**Note:** You have to authorize yourself first before using the Swagger or Rapidoc interactive documentations. For this, please use the API Key of the Connector and follow the authorization steps on the user interface. For Swagger this is on the top right (Authorize button with a lock symbol), for Rapidoc this is usually the third heading called "Authentication" and can also be found on the left navigation. -{: .notice--warning} - -### Open API Documentation - -To fetch the Open API documentation of the Connector's REST API, visit the following URIs: - -- /docs/yaml : The Connector's OpenAPI specification in YAML format -- /docs/json : The Connector's OpenAPI specification in JSON format - -You can view these files with the [Swagger Editor](https://editor.swagger.io/) or automatically import them within your favorite API Clients (e.g. Postman or Insomnia). - -## API Authentication - -X-API-Key header diff --git a/_docs_integrate/21-connector-scenarios.md b/_docs_integrate/21-connector-scenarios.md deleted file mode 100644 index 7aaaf4e15..000000000 --- a/_docs_integrate/21-connector-scenarios.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: "Connector-Scenarios" -permalink: /integrate/connector-scenarios -published: true ---- - - - - - - -{% assign scenarios = site.docs_scenarios | where: "type", "scenario" %} - - - - - - - - - {% for scenario in scenarios %} {% assign status = scenario.properties | map:"documentation status" %}{% if status contains "DONE" %}{% assign component = scenario.properties | map:"component" %}{% if component contains "Connector" %} - - - - - - {%- endif -%} {%- endif -%} {% endfor %} -
          Title -
          -
          Category ⌄
          -
            -
            -
            -
            -
            customer ⌄
            -
              -
              -
              -
              -
              Component ⌄
              -
                -
                -
                - {{ scenario.title }} - {{ scenario.properties | map:"category" }}{{ scenario.properties | map:"customer" }}{{ scenario.properties | map:"component" }}
                - - diff --git a/_docs_integrate/30-connector-sdks.md b/_docs_integrate/30-connector-sdks.md deleted file mode 100644 index f84deee86..000000000 --- a/_docs_integrate/30-connector-sdks.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Connector Software Development Kits" -permalink: /integrate/connector-sdks ---- - -## TypeScript SDK - -There is an SDK written in TypeScript you can use to communicate with your Connector from your TypeScript/JavaScript application. It is avaliable on [npmjs](https://www.npmjs.com/package/@nmshd/connector-sdk). - -### Installation - -```bash -npm i @nmshd/connector-sdk -``` - -### Usage - -1. Initialize the `ConnectorClient` - - ```ts - const connectorClient = ConnectorClient.create({ - baseUrl: "https://", - apiKey: "" - }); - ``` - -2. Start using the client - - ```ts - const FILE_PATH = "path-to-file"; - const uploadOwnFileResponse = await client.files.uploadOwnFile({ - title: "My awesome file", - description: "Test file", - expiresAt: "2022-01-01T00:00:00Z", - file: await fs.promises.readFile(FILE_PATH), - filename: "my-awesome-file.txt" - }); - - if (uploadOwnFileResponse.isSuccess) { - console.log(uploadOwnFileResponse.result); - } else { - console.log(uploadOwnFileResponse.error); - } - ``` diff --git a/_docs_integrate/31-connector-modules.md b/_docs_integrate/31-connector-modules.md index a83b103e4..474813cd3 100644 --- a/_docs_integrate/31-connector-modules.md +++ b/_docs_integrate/31-connector-modules.md @@ -1,6 +1,7 @@ --- title: "Custom Connector Modules" permalink: /integrate/custom-connector-modules +published: false --- > At the moment custom Connector Modules are not supported. diff --git a/_docs_integrate/32-connector-events.md b/_docs_integrate/32-connector-events.md deleted file mode 100644 index e5d04ba6d..000000000 --- a/_docs_integrate/32-connector-events.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: "Connector Events" -permalink: /integrate/connector-events ---- - -| Event | Data | Description (This event is triggered when ...) | -| ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| consumption.attributeCreated | [LocalAttribute]({% link _docs_integrate/61-data-model.md %}#LocalAttribute) | ... an Attribute was created manually or through a Request. | -| consumption.attributeDeleted | [LocalAttribute]({% link _docs_integrate/61-data-model.md %}#LocalAttribute) | ... an Attribute was deleted manually or through a Request. | -| consumption.attributeSucceded | [LocalAttribute]({% link _docs_integrate/61-data-model.md %}#LocalAttribute) | ... an Attribute was succeeded manually or through a Request. | -| consumption.attributeUpdated | [LocalAttribute]({% link _docs_integrate/61-data-model.md %}#LocalAttribute) | ... an Attribute was updated manually or through a Request. | -| consumption.incomingRequestReceived | [LocalRequest]({% link _docs_integrate/61-data-model.md %}#LocalRequest) | ... an incoming Request was received either by loading a Relationship Template or by receiving a Message | -| consumption.incomingRequestStatusChanged | [RequestStatusChangedEventData](#requeststatuschangedeventdata) | ... the status of an incoming Request has changed. | -| consumption.messageProcessed | [MessageProcessedEventData](#messageprocessedeventdata) | ... a Message was processed by Modules like the `RequestModule` or `DeciderModule`. | -| consumption.outgoingRequestCreated | [LocalRequest]({% link _docs_integrate/61-data-model.md %}#LocalRequest) | ... an outgoing Request was created. | -| consumption.
                outgoingRequestFromRelationshipCreationChange
                CreatedAndCompleted | [LocalRequest]({% link _docs_integrate/61-data-model.md %}#LocalRequest) | ... an outgoing Request was created and directly completed.
                This happens if the Response came in with a new Relationship. | -| consumption.outgoingRequestStatusChanged | [RequestStatusChangedEventData](#requeststatuschangedeventdata) | ... the status of an outgoing Request has changed. | -| consumption.relationshipTemplateProcessed | [RelationshipTemplateProcessedEventData](#relationshiptemplateprocessedeventdata) | ... a RelationshipTemplate was processed by Modules like the `RequestModule` or `DeciderModule`. | -| consumption.sharedAttributeCopyCreated | [LocalAttribute]({% link _docs_integrate/61-data-model.md %}#LocalAttribute) | ... an Attribute is copied for sharing with another identity. | -| transport.messageReceived | [Message]({% link _docs_integrate/61-data-model.md %}#Message) | ... a Message is received during synchronization. | -| transport.messageSent | [Message]({% link _docs_integrate/61-data-model.md %}#Message) | ... a Message was sent. | -| transport.peerRelationshipTemplateLoaded | [RelationshipTemplate]({% link _docs_integrate/61-data-model.md %}#RelationshipTemplate) | ... a Relationship Template was loaded that belongs to another identity. | -| transport.relationshipChanged | [Relationship]({% link _docs_integrate/61-data-model.md %}#Relationship) | ... a Relationship has changed. This can be due to one of the following cases:
                • you create a Relationship
                • you accept, reject or revoke a Relationship Change
                • a Relationship Change is received during synchronization | - -## Event structure - -Every event is structured as follows (TData depends on the actual event, e.g. `LocalAttribute`): - -```ts -interface Event { - namespace: string; - eventTargetAddress: string; - data: TData; -} -``` - -### RequestStatusChangedEventData - -> [LocalRequest]({% link _docs_integrate/61-data-model.md %}#LocalRequest) - -```ts -export interface RequestStatusChangedEventData { - request: LocalRequest; - oldStatus: LocalRequestStatus; - newStatus: LocalRequestStatus; -} -``` - -### MessageProcessedEventData - -> [Message]({% link _docs_integrate/61-data-model.md %}#Message) - -```ts -export interface MessageProcessedEventData { - message: MessageDTO; - result: "ManualRequestDecisionRequired" | "NoRequest" | "Error"; -} -``` - -### RelationshipTemplateProcessedEventData - -> [RelationshipTemplate]({% link _docs_integrate/61-data-model.md %}#RelationshipTemplate) - -```ts -export interface RelationshipTemplateProcessedEventData { - template: RelationshipTemplateDTO; - result: "ManualRequestDecisionRequired" | "NonCompletedRequestExists" | "RelationshipExists" | "NoRequest" | "Error"; -} -``` diff --git a/_docs_integrate/40-connector-operations.md b/_docs_integrate/40-connector-operations.md deleted file mode 100644 index 29979ca9e..000000000 --- a/_docs_integrate/40-connector-operations.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: "Connector Operations" -permalink: /integrate/connector-operations -toc: true ---- - -## Basic Tasks - -### Stopping the Connector - -### Starting the Connector after a Downtime - -Be advised that before starting the Connector after a downtime, you should ensure that the data within the database is on the most up-to-date time. Once the Connector starts its internal synchronization mechanism, it will update the database with the new information from the Backbone and if there are any automatismns set up (e.g. automatically accept relationships) the Connector updates the database with this new information. Thus, if the database is not on the very last point in time, there would be two inconsistent versions split across two databases. - -## Update - -## Backup & Recovery - -All of the Connector data is stored in a MongoDB compatible database. Therefore we suggest you to use [MongoDB replicas](https://www.mongodb.com/basics/replication) in a productive setup, to avoid having data loss. - -Additionally, offline backups of the replicas might make sense. For backup and recovery methods visit the official [MongoDB docs](https://docs.mongodb.com/manual/core/backups/). These backups might come in handy if the data within the database was compromised. - -In general, there is no need to backup the Connector itself. However, it makes sense to backup configuration and log files. Additionally, it might speed up the recovery process if a complete system image of the Connector is available. - -For a recovery, you should be able to just start the Connector again with the recovered database. For recovering the database itself, please also refer the MongoDB documentation. - -If you use FerretDB as your database engine make sure to backup the data of the underlying PostgreSQL database. Read more about this in the [PostgreSQL documentation](https://www.postgresql.org/docs/8.1/backup.html). - -## Proposed System Tasks - -### Check Health - -The Business Connector exposes a health route. You can check the health with a http request to `/health`. - -### Check Available Resources - -#### Check CPU Workload - -The CPU workload can be checked using tools like [htop](https://htop.dev/) or [ctop](https://ctop.sh/) on the host system. - -#### Check Memory Consumption - -The Memory Consumption can be checked using tools like [htop](https://htop.dev/) or [ctop](https://ctop.sh/) on the host system. - -#### Check Harddisk Quota - -The Harddisk Quota can be checked using linux tools like **df**. Please ensure, that sufficient free space is available. - -### Check for Connector Updates - -New Connector versions are regularly published to the given Docker registry. Depending on your installation method, the Docker image can be automatically updated by the provided Docker registry. - -### Check for System and Docker Updates - -Please consult the documentation of your operating system about system updates. Additionally, the Docker runtime should be regularly updated as well. -We recommend to keep your operating system and Docker as up to date as possible. - -### Check Error Logs - -You can check the log using `docker logs ` or by checking the [mounted log files]({% link _docs_integrate/10-connector-installation.md %}#log-file-mounting) - -## Proposed Connector Tasks - -As some of the operative tasks should be done on a regular basis, please find a proposal for these tasks below. - -### Check Access to Key Material - -### Check old Material - -### Check Connector Systems - -- Every Connector instance and host system should be regularly checked for available resources (CPU, RAM, HDD) and system updates. - -### Check Third-Party Systems - -- Every third-party system (e.g. database, event buses, network components) and host system should be regularly checked for available resources (CPU, RAM, HDD) and system updates. diff --git a/_docs_integrate/42-connector-security.md b/_docs_integrate/42-connector-security.md deleted file mode 100644 index d6e217dfa..000000000 --- a/_docs_integrate/42-connector-security.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: "Connector Security Considerations" -permalink: /integrate/connector-security -toc: true ---- - -The most important thing you have to keep in mind that the Connector is usually running on your landscape and in your authority. This is why you are also responsible for the security of the Connector and its data. - -And as the Connector is handling very sensitive data (please see chapter Privacy), it should be treated as any other business system - with the same requirements in terms of privacy, security, access or network setup. - -## Updates - -As with every software, it is important that you update the Connector regularly from the official Docker repositories. We do our best to keep the whole Enmeshed project (of course including the Connector) as up-to-date as possible, having multiple checks with regards to security and the open-source-software lifecycle. - -Additionally, any software component the Connector or its data touches should be updated regularly. - -Examples are: - -- the Docker host system (operating system, virtual machine, ...) -- the Docker Runtime -- the database (e.g. MongoDB or FerretDB) -- the firewall -- the virus scanner -- the firmwares of any (network) component -- possible integration platforms and modules - -## Trust - -Although Enmeshed introduces a secure way of knowing who is sending messages to the Connector, and the corresponding Backbone is blocking messages from unknown parties, you shouldn't trust others to not send you invalid, incorrect, illegal, or outright harmful data over the secure connection. - -Especially the encrypted data coming from the Backbone - which hasn't been decrypted yet - might be harmful. We cannot check if the data is correctly encrypted. Only the Connector in your landscape does this automatically (in terms of decrypting the data and verifying its digital signature). - -This brings us to the next point: Virus Scans. - -## Virus Scans - -You should do Virus Scans regularly whenever sending or receiving data. However, the Connector has no integration capability for Virus Scanners (yet). This means, we cannot call for a virus scan while we are encrypting or decrypting Enmeshed payload. - -Thus please consider scanning the host systems and the database for viruses regularly. Additionally, even encrypted data sent to and received from the Backbone should be scanned for viruses. - -## Networking - -It is best practice to block unnecessary access from and to software components between networks. In this chapter it is described which access the Connector actually required and which requests could be blocked. - -### Outbound External Connection: Internet - -The Connector uses an TLS-secured Internet connection to the Enmeshed Backbone which runs on the domain `https://prod.enmeshed.eu`. Your firewall must not block access to this domain, otherwise the Connector won't work. - -To access the latest updates, other routes might need to be opened within the firewall settings. - -### No Inbound External Connections - -The Connector synchronizes itself with the Backbone by a long-polling mechanism (it accesses the Internet). There is no data transfer triggered by the Backbone (or other users) and thus, there is no need for opening up special ports or reverse proxies for inbound connections from the Internet. - -### Oubound Communication to Internal Networks - -The Connector does need to access its database. Access to other networks or systems from the Connector can be blocked unless there is a synchronization route (webhook) set up in the Connector configuration. Otherwise, the Connector needs to access the provided internal domains for submitting new data. - -### Inbound Communication from Internal Networks - -Depending on the integration setup, access to the Connector from the internal network could be blocked for the majority of requests. Usually, only requests from the integration systems, the developers or administrators need to be allowed. - -## Authentication and User Management - -So far, the Connector supports API-Key authentication to securely authenticate technical users. These API-Keys are random character strings with a high entropy and should be kept confidential at all times. Each internal system communicating with the Connector should receive its own API-Key. - -There is no authorization set up, thus every API-Key can call any API of the Connector API. - -End user authentication, e.g. business users accessing the system, should be done on the respective business system. Usually, there is no need for end users to access the Connector and thus they should not have access to the Connector (from a network and authentication perspective). - -## Kernel Dumps - -Kernel dumps can be a useful tool for diagnosing and troubleshooting system issues. However, they can also be a security risk if they contain sensitive information such as encryption keys. If an attacker gains access to a kernel dump file, they may be able to extract this information and use it to compromise the security of your system. - -As the Connector does not have access to the host system, it cannot directly control whether or not kernel dumps are enabled. Therefore, the administrator of the host system make a decision on whether or not to disable kernel dumps based on their own security policies and risk tolerance. - -The recommended course of action is to disable kernel dumps on the host system, outside a development environment, where the Connector is running. This is in line with the [recommendation of libsodium](https://libsodium.gitbook.io/doc/memory_management#locking-memory), the used encryption library. - -This can typically be done by modifying the kernel parameters or configuration settings. - -## API key rotation - -It is important to ensure that API keys are secure and cannot be easily compromised. One of the key aspects of API key security is regular rotation and expiration. If an API key is not rotated or expired, it can potentially be used by an attacker who has obtained the key through unauthorized means. - -## Docker Compose File Security Considerations - -Docker Compose is a tool to easily set up and host and complete landscape by running multiple Docker containers, configure them and link them together with a network. For development, testing and demonstration purposes, the enmeshed team provides Docker Compose files throughout this site or on GitHub. Please be aware, that those Docker Compose files should not be used in a public or productive environment, as they could contain insecure or otherwise unstable configurations, e.g. default passwords or the missing encryption at rest for MongoDB configuration. If you choose to use Docker Compose files in a public or production environment, it is important to educate yourself on how to create production-grade Docker Compose files to ensure the security of your system. - -## Setup Firewall - -A firewall is a security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules. By implementing a firewall, you can block unauthorized access to your network and prevent malicious traffic from entering your system. - -Allowing for potentially insecure protocols such as HTTP may expose sensitive information in transit to malicious parties, putting the system and its users at risk of data theft or other cyber attacks. Furthermore, the use of unsupported protocols may result in unintended side effects that could compromise system functionality or stability. - -To mitigate this risk, it is recommended that the connector restricts the supported protocols to HTTPS, which is a secure protocol that encrypts information in transit. This will help prevent sensitive information from being exposed to malicious parties. Additionally, any feature that allows developers to override the protocol check should be explicitly enabled and documented to ensure that it is used judiciously and with caution. - -Furthermore, an allowlist can be used to limit access to the system to only trusted sources, reducing the risk of unauthorized access and potential security vulnerabilities. - -When configuring the allowlist for the connector, it is important to include all necessary URLs while keeping the list as minimal as possible. - -One important consideration when configuring the allowlist is the baseUrl of the used Backbone. The baseUrl should be the minimum required for the allowlist to ensure that the connector is fully functional. Including unnecessary URLs in the allowlist can increase the attack surface and create potential security vulnerabilities. - -However, it is also important to consider other URLs that may need to be included in the allowlist, such as update URLs for Docker Hub, images, GitHub, Linux update environments, and other sources. These URLs may be necessary for the proper functioning of the system and should be carefully evaluated and included in the allowlist if deemed necessary. - -To ensure the security and integrity of the system, it is recommended to regularly review and update the allowlist as necessary. This includes removing any URLs that are no longer needed and adding new URLs that may be required. - -## Database Security - -It is crucial to secure databases, and in the case of MongoDB, it is essential to implement proper security measures to mitigate the risks associated with its default insecure configuration. - -On this page we have summarized some tips for the use of [MongoDB](https://www.mongodb.com/docs/manual/administration/security-checklist/) and [FerretDB](https://docs.ferretdb.io/security/). A good source for further information on these tips is the website of the respective database. - -With this page, we address what we consider to be the most important security tips. Even if you follow these tips, a security incident may occur. - -1. **Data encryption:** Data stored in the database should be encrypted to ensure that even if an attacker gains access to the storage device, they cannot read the data. MongoDB provides built-in [encryption at rest](https://www.mongodb.com/docs/manual/core/security-encryption-at-rest/) features, which can be enabled to secure data. For all databases it is possible to perform data encryption with storage encryption at the file system level or the block level. On Linux, file system encryption options include eCryptfs or EncFS and Block level options include dm-crypt + LUKS. - -2. **Network access restrictions:** MongoDB should only be accessible through the connector and should not be directly accessible over the public network. This can be achieved through proper network configuration, such as setting up firewalls to restrict access. - -3. **Strong passwords and connection strings:** All user credentials and connection strings should be strong and complex, to prevent unauthorized access to the database. - -4. **Regular updates and maintenance:** Regular updates should be performed to keep the database up-to-date and to fix any known security vulnerabilities. - -When you are using FerretDB as your database read more about security in the [FerretDB documentation](https://docs.ferretdb.io/category/security/). diff --git a/_docs_integrate/43-connector-privacy.md b/_docs_integrate/43-connector-privacy.md deleted file mode 100644 index 90ec3ddbc..000000000 --- a/_docs_integrate/43-connector-privacy.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Connector Privacy Considerations" -permalink: /integrate/connector-privacy ---- - -Please be aware that personal or sensitive plaintext data is processed and stored in the Connector and the corresponding MongoDB database. The same applies to secret and private keys which should be treated as strictly confidential. - -Thus the access to the Connector and its database should be kept to a bare minimum of authorized users or systems. Please refer to the [Security Considerations]({% link _docs_integrate/42-connector-security.md %}) for details. - -As the Connector is running on the customer's infrastructure in the complete authority of the customer, it is in the customer's liability to ensure a secure and legal operation. - -## Which data is processed by the Connector? - -## Deleting Data diff --git a/_docs_integrate/44-connector-performance.md b/_docs_integrate/44-connector-performance.md deleted file mode 100644 index 3302b2f51..000000000 --- a/_docs_integrate/44-connector-performance.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Connector Performance Considerations" -permalink: /integrate/connector-performance ---- - -## Scaling Horizontally - -Using multiple connectors with the same identity to scale horizontally and balance the workload across all available connectors is not supported at the moment. diff --git a/_docs_integrate/50-connector-migration-v2.md b/_docs_integrate/50-connector-migration-v2.md deleted file mode 100644 index 5ec8f1659..000000000 --- a/_docs_integrate/50-connector-migration-v2.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: "Migrate to v2" -permalink: /integrate/connector-migration-v2 -toc: true ---- - -When migrating from v1 to v2, there are a few breaking changes, as well as a bunch of new features. This guide lists both of them and will help you migrate your integration coding. - -## Backwards incompatible data structure - -First and foremost, as we [already announced in our blog]({% link _posts/2022-06-27-announcing-enmeshed-v2.md %}), the underlying data structures of v2 are not compatible with the ones of v1 at all, and we are not planning to migrate any data. This means that before starting a v2 Connector, you need to make sure that the database is completely empty. You can achieve that e.g. by creating a new Docker volume for the MongoDB container or, if you host MongoDB outside of Docker, setting up a new MongoDB server. Of course, if you don't have any important data, you can also delete database. This will ensure that on startup of the Connector, a new Enmeshed Identity is created. After that, you can start to migrate your integration coding to v2. - -## Common - -There are two things that affect all HTTP routes: the route prefix and the error codes that are returned. - -### HTTP route prefix - -The prefix of each route of the Connector's HTTP API has changed from `/api/v1` to `/api/v2`. This means that you need to change all your API calls to the Connector to use the new prefix. - -### Error codes - -There are some error codes that have changed during our transition from v1 to v2. For a full list of error codes in v2, refer to [the corresponding page]({% link _docs_integrate/13-connector-error-codes.md %}). - -## Attributes - -With v2 of Enmeshed, Attributes were completely revamped. We won't go into much detail here, but the following two paragraphs will give you links for further reading. - -**Data Model** - -You can find a description of Attributes in the [data model]({% link _docs_integrate/61-data-model.md %}#attributes). - -**Endpoints** - -In order to manage Attributes with the Connector, the following endpoints exist (the endpoints listed below are interactive; feel free to execute them): -{% include rapidoc api_route_regex="/api/v2/Attributes" title="" %} - -Tip: go through the new [Connector tutorial]({% link _docs_integrate/01-connector-tutorial.md %}) if you want an example of how to create An Attribute. -{: .notice--info} - -## Files - -There are a few minor changes to the data model and the endpoints for managing Files. - -**Data Model** - -The following properties were removed from the `File` entity: - -- `deletedAt` -- `deletedBy` -- `deletedByDevice` - -The reason for this is that these properties were added prematurely. At the moment it is not possible to delete files. This feature will be added in the future. But for now, we decided that the properties are misleading and removed them. - -There also is a new property named `truncatedReference`, which is similar to the `truncatedReference` of a Token. It is a short reference to a File containing its ID and secret key. In order to share the File with a user, you can either send the `truncatedReference` as text, or - even simpler - create a QR code for it with the new endpoint(see table below). When the user scans this QR code with the Enmeshed app, the File is automatically downloaded - No Relationship necessary. - -**Endpoints** - -The following endpoints have changed: - -| Route | Change Type | Description | -| --------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| POST /Files/Peer | Updated | You can now pass a `truncatedreference` of a File in the body of this endpoint. The other possibilities (id+secret key and a truncated Token reference) can still be used. | -| GET /Files/{id} | Updated | You can now pass a `truncated reference` of a File as the route parameter `id` (or `idOrReference`, as it is called now) of this endpoint. Of course, you can still pass an ID. | -| GET /Files/{id} | Updated | By setting the `Accept` HTTP header on this request to `image/png`, you can generate a QR code with the truncated File reference. | - -## Messages - -There are a few minor changes to the data model and the endpoints for managing Messages. - -**Data Model** - -The [recipient]({% link _docs_integrate/61-data-model.md %}#recipient) of a `Message` now has the property `relationshipId`, which contains the ID of the Relationship the Connector has to the recipient. This is useful for example if you want to query all Messages that belong to a specific Relationship. - -**Endpoints** - -The following endpoints have changed: - -| Route | Change Type | Description | -| ------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| GET /Messages | Updated | As described above, there now is a `relationshipId` property on each object of the `recipients` array of a Message. You can use this property to filter for Messages of a specific Relationship by setting the query parameter `recipients.relationshipId` We further removed the query parameter `relationshipIds`, because it is not needed anymore. | - -## Relationships - -There are a few minor changes to the data model and the endpoints for managing Relationships. - -**Data Model** - -The following properties were removed from the `Relationship` entity: - -- `lastMessageReceivedAt` -- `lastMessageSentAt` - -These properties were never filled by the Runtime and were therefore removed. If you want for example the Relationships you sent a Message to in the last 24 hours, you can instead query the Messages and filter for the `createdAt` property in conjunction with createdBy set to your own Address. This gives you all the Messages you sent to in the last 24 hours. Now you just need to summarize the distinct `relationshipIds` of all these Messages. You can do similar to replace `lastMessageReceivedAt`. - -Further, we removed two Relationship status: - -- `Terminated`: Since we currently do not support termination of Relationships, we removed this status in order to reduce confusion. -- `Revoked`: With the introduction of Requests, we had to temporarily remove the possibility of revoking Relationship Creation Changes, because if the Response sent with the Relationship Creation Change was already created by the peer, this Response would have to be deleted as soon as the Relationship Creation Change was revoked - which is really hard to implement. In the future, revoking Relationship Creation Changes will probably be possible again, but at the moment this is not our top priority. - -**Endpoints** - -The following endpoints have changed: - -| Route | Change Type | Description | -| ------------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| PUT /Relationships/{id}/Changes/{changeId}/Revoke | Removed | As described above, we removed the `Revoked` status of a Relationship. Therefore we also removed the endpoint that was responsible for moving a Relationship to this status. | -| GET /Relationships/{id}/Attributes | Added | This new route can be used to fetch all Attributes that exist in the context of the Relationship - so the ones you received from the peer as well as the ones you shared. | - -## Relationship Templates - -There are a few minor changes to the data model and the endpoints for managing Relationship Templates. - -**Data Model** - -The property `maxNumberOfRelationships` was removed from the `RelationshipTemplate` entity. It was replaced by the property `maxNumberOfAllocations` which offers similar functionality. The reason for this change is that with let's say a `maxNumberOfRelationships` of 5, it was possible for 10 users to download the Relationship Template and fill it out. But finally, when trying to create the Relationship, 5 of them would receive an error message, because the maximum number of Relationships is exhausted. This is why the Relationship Template now has the property `maxNumberOfAllocations`. Setting this property to e.g. 5 will ensure that the Template can only be fetched by 5 different Identities. The sixth will receive an error message when trying to fetch it, so it won't be able waste time by filling it out. - -There also is a new property named `truncatedReference`, which is similar to the `truncatedReference` of a Token. It allows you to create a reference to a Relationship Template containing its ID and secret key. With this, there is no need to create a Token for a the Relationship Template anymore. Just create a QR code for the Relationship Template directly (see the new endpoint below). When the user scans this QR code with the Enmeshed app, the Relationship Template is downloaded and displayed. - -**Endpoints** - -The following endpoints have changed: - -| Route | Change Type | Description | -| ------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| POST /RelationshipTemplates/Peer | Updated | You can now pass a `truncatedReference` of a Relationship Template in the body of this endpoint. The other possibilities (id+secret key and a truncated Token reference) can still be used. | -| GET /RelationshipTemplates/{id} | Updated | By setting the `Accept` HTTP header on this request to `image/png`, you can generate a QR code with the `truncatedReference` of the Relationship Template. | - -## Requests - -With v2 of Enmeshed, there is the new concept of "Requests", which are the new way to exchange Attributes between two Identities. And you can do a lot more with them. We won't go into much detail here, but the following two paragraphs will give you links for further reading. - -**Data Model** - -You can find a description of Requests in the [data model]({% link _docs_integrate/61-data-model.md %}#request). Further, there is a [dedicated page]({% link _docs_integrate/62-request-items.md %}) where you can find all existing Request Items. - -**Endpoints** - -In order to manage Requests with the Connector, the following endpoints exist: -{% include rapidoc api_route_regex="/api/v2/Requests" title="" %} - -Tip: go through the new [Connector tutorial]({% link _docs_integrate/01-connector-tutorial.md %}) if you want an example of what you can do with Requests. -{: .notice--info} diff --git a/_docs_integrate/61-data-model.md b/_docs_integrate/61-data-model.md deleted file mode 100644 index a7869d52f..000000000 --- a/_docs_integrate/61-data-model.md +++ /dev/null @@ -1,521 +0,0 @@ ---- -title: "Enmeshed Data Model" -permalink: /integrate/data-model-overview -toc: true ---- - -The Enmeshed data model can be divided into three parts: - -- Transport types -- Local types -- Content types - -The following diagram gives you an overview of all the existing types and how they are connected to each other. The subsequent chapters describe these types in more detail. - -
                -(note that you can click on each type in order to navigate to the paragraph with the corresponding description) - -At a first glance the amount of types is overwhelming. But in the following chapters all of them are explained in detail. - -# Transport Types - -Transport types like `RelationshipTemplate`, `Token` or `File` are types that are "exchanged" between Identities via the Backbone. They are created and updated by the [Transport Layer]({% link _docs_explore/42-transport-layer.md %}). In most cases they have a `content` property, which contains the actual payload that should be transferred between the Identities. This payload is being encrypted when it is sent to the Backbone, and decrypted by the other Identity when it is received. The following sections describe the different Transport types and their properties. - -Note that the properties of the types are the ones that exist locally (aka on the Connector/in the App). The Backbone does not necessarily know about them. The properties that only exist locally are marked accordingly in the tables below. Further there are properties that are confidential and are therefore encrypted before sent to the Backbone, in order to enable end-to-end encryption. Both kinds of these properties are marked accordingly in the "Remarks" column of the property tables below. - -## Token - -Tokens can be used to save arbitrary structured data on the Backbone, which is encrypted with a random symmetric key. You can then pass the ID of the Token, together with the random key, to another Identity, which can then retrieve the token and decrypt it, e.g. inside of a QR Code, which you send to the recipient via letter. Tokens can be handy in a lot of scenarios, for example: - -- You want to share secret information with someone you don't have a Relationship with. -- The Enmeshed App currently uses a Token to save a Backup of the Identity. ID and secret key are then encoded in a QR Code, which the user can print out and scan later in order to restore the Identity on a new device. - -A Token has the following properties: - -| Name | Type | Description | Remarks | -| ------------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | -| id | `string` | {% include descr_id class="Token" prefix="TOK" %} | -| createdBy | `string` | {% include descr_createdBy class="Token" %} | | -| createdByDevice | `string` | {% include descr_createdByDevice class="Token" %} | | -| content | `unknown` | The content of the Token. You can add whatever you want here. | will be encrypted before sent to the Backbone | -| createdAt | `string` | {% include descr_createdAt class="Token" %} | | -| expiresAt | `string` | {% include descr_expiresAt class="Token" %} | | -| secretKey | `string` | {% include descr_secretKey class="Token" %} | saved only locally | -| truncatedReference | `string` | {% include descr_truncatedReference class="Token" %} | saved only locally | -| isEphemeral | `boolean` | If set to `true` the Token will not be cached in the database and only displayed once. You will not be able to fetch this Token unless you remember its id and secretKey. | - -## RelationshipTemplate - -A Relationship Template serves two purposes: - -1. It represents the permission to establish a Relationship. When sending a Relationship request, the sender has to attach the ID of a valid Relationship Template created by the recipient. Otherwise the Backbone blocks the Relationship request. And since the IDs are randomly generated, you can only obtain such an ID from the recipient. -2. It can contain data which is of interest for the one who uses the Relationship Template. The Enmeshed App for example expects a Relationship Template content which contains a `Request` which contains e.g. Attributes about the creator of the Template as well as queries for Attributes that the Template creator wants to receive together with the Relationship request. - -| Name | Type | Description | Remarks | -| ---------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------- | -| id | `string` | {% include descr_id class="Relationship Template" prefix="RLT" %} | | -| isOwn | `boolean` | {% include descr_isOwn class="Relationship Template" %} | saved only locally | -| createdBy | `string` | {% include descr_createdBy class="Relationship Template" %} | | -| createdByDevice | `string` | {% include descr_createdByDevice class="Relationship Template" %} | | -| createdAt | `string` | {% include descr_createdAt class="Token" %} | | -| content | [`RelationshipTemplateContent`](#relationshiptemplatecontent) \| `unknown` | The content of the Relationship Template. You can add whatever you want here. However, if it is intended for a User of the Enmeshed App, `RelationshipTemplateContent` has to be used. Otherwise feel free to insert whatever you want or need. | | -| expiresAt | `string` | {% include descr_expiresAt class="Token" %} | will be encrypted before sent to the Backbone | -| maxNumberOfAllocations | `number` \| `undefined` | Can be set to limit the number of allocations of this template. A Relationship Template is allocated by another Identity when it is first retrieved by it from the Backbone. After this value is reached, the Backbone rejects each request of any new Identity that wants to retrieve it. Identities that already allocated it will still be able to retrieve it. | | -| truncatedReference | `string` | {% include descr_truncatedReference class="RelationshipTemplate" %} | | - -## Relationship - -A Relationship between two Identities is the prerequisite for them to exchange Messages. If there is no Relationship, the Backbone blocks all Messages that are tried to be sent. This ensures that you only receive Messages from Identities you know, so you are protected from any harmful Messages like spam or phishing mails. - -| Name | Type | Description | Remarks | -| -------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ | -| id | `string` | {% include descr_id class="Relationship" prefix="REL" %} | | -| template | `RelationshipTemplate` | The Relationship Template that was used to establish this Relationship. | | -| status | `"Pending"` \| `"Active"` \| `"Rejected"` \| `"Revoked"` | The status of this Relationship.
                {::nomarkdown}
                • Pending: the Relationship was created, but not yet accepted the recipient. In this state you cannot send Messages yet.
                • Active: this means that the Relationship is active. As long as it is active, both participants can exchange Messages.
                • Rejected: the Relationship was rejected by the recipient.
                • Revoked: the Relationship was revoked by the sender.
                {:/} | | -| changes | [`RelationshipChange`](#relationshipchange)`[]` | The history of changes made to this Relationship. You can find the definition of a Relationship Change below. | | -| peer | `string` | The Address of the Identity with which you have this Relationship. | saved only locally | - -### RelationshipChange - -Since a Relationship "belongs" to two Identities, each change on such a Relationship demands for the agreement of both parties. That's where Relationship Changes come into play. Whenever one party wants to make a change to the Relationship (like create or terminate it), it sends a Relationship Change to the other party, which has to accept it in order for the change to take effect. If the other party doesn't want to accept it, it can also reject it. And if the party that created the Relationship Change changes its mind, it can revoke the Relationship Change. The Backbone makes sure that a Relationship Change can only be completed in one of those three ways (accepted, rejected, revoked). So for example if you try to accept a Relationship Change that is already revoked, you will receive an error. - -| Name | Type | Description | Remarks | -| -------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| id | `string` | {% include descr_id class="Relationship Change" prefix="RCH" %} | | -| status | `"Pending"` \|`"Accepted"` \|`"Rejected"` \|`"Revoked"` | The current status of the Relationship Change. | | -| type | `"Creation"` | The type of the Relationship Change. Currently the only existing type is `Creation`. As soon as the termination of Relationships is supported, `Termination` will be a second Relationship Change type. | | -| request | [`RelationshipChangeRequest`](#relationshipchangerequest) | Information about the request of the Relationship Change. | | -| response | [`RelationshipChangeResponse`](#relationshipchangeresponse) \| `undefined` | Information about the response of the Relationship Change. | | - -Note that RelationshipChangeRequest and RelationshipChangeResponse have nothing to do with [Requests](#request) and [Responses](#response), which we will discuss later. - -### RelationshipChangeRequest - -| Name | Type | Description | Remarks | -| --------------- | ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | -| createdBy | `string` | {% include descr_createdBy class="Relationship Change Request" %} | | -| createdByDevice | `string` | {% include descr_createdByDevice class="Relationship Change Request" %} | | -| createdAt | `string` | {% include descr_createdAt class="Relationship Change Request" %} | | -| content | [`RelationshipCreationChangeRequestContent`](#relationshipcreationchangerequestcontent) \| `unknown` | The content of the Relationship Change Request. You can add whatever you want here. However, if the other party uses the Enmeshed App, and the type of the Relationship Change is `Creation`, [`RelationshipCreationChangeRequestContent`](#relationshipcreationchangerequestcontent) has to be used. Otherwise feel free to insert whatever you want or need. | will be encrypted before sent to the Backbone | - -### RelationshipChangeResponse - -| Name | Type | Description | Remarks | -| --------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | -| createdBy | `string` | {% include descr_createdBy class="Relationship Change Response" %} | | -| createdByDevice | `string` | {% include descr_createdByDevice class="Relationship Change Response" %} | | -| createdAt | `string` | {% include descr_createdAt class="Relationship Change Response" %} | | -| content | `unknown` | The content of the Relationship Change Response. You can add whatever you want here. Since the Enmeshed App doesn't expect any special content here, there is no need to watch out. | will be encrypted before sent to the Backbone | - -## Message - -A Message is a piece of data that can be sent to one or more recipients. The sender is completely free in what the content of the Message looks like. Though in order to enable a normalized communication, Enmeshed defines some content structures for Messages, and in the future there will be more of those. Consider that the Enmeshed App only supports those normalized Message contents. Currently there are: - -- [`Mail`](#mail) -- [`Request`](#request) -- [`ResponseWrapper`](#responsewrapper) - -You can read more details about each of these in the corresponding sections of the "Content Types" chapter. - -But if you are communicating with another Connector, feel free to settle on any content structure that fits your needs. - -| Name | Type | Description | Remarks | -| --------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | -| id | `string` | {% include descr_id class="Message" prefix="MSG" %} | | -| content | `unknown` | The content of the Message. You can add whatever you want here. However, if it is intended for a User of the Enmeshed App, use either `Mail`, `Request` or `Response`. Otherwise feel free to insert whatever you want or need. | will be encrypted before sent to the Backbone | -| createdBy | `string` | {% include descr_createdBy class="Message" %} | | -| createdByDevice | `string` | {% include descr_createdByDevice class="Message" %} | | -| recipients | [`Recipient`](#recipient)`[]` | An array of recipients of this Message. | | -| createdAt | `string` | {% include descr_createdAt class="Message" %} | | -| attachments | `string[]` | An array of [File](#file) IDs you want to attach to your Message. You receive the File ID after you uploaded a file to the Backbone. By attaching a File to a Message, you share the secret key used to encrypt/decrypt the File, which cannot be undone. | | - -### Recipient - -| Name | Type | Description | Remarks | -| ---------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | -| address | `string` | The Address of the recipient of the Message. | | -| relationshipId | `string` | The ID of the Relationship between the recipient and the sender of the Message. | saved only locally | -| receivedAt | `string` \| `undefined` | A timestamp that describes when the recipient retrieved the Message from the Backbone. `undefined` when the Message wasn't received yet. Caution: "received" does not mean that it was read, so don't mix this up with a read receipt. | | -| receivedByDevice | `string` \| `undefined` | The ID of the Device that first retrieved the Message. `undefined` when the Message wasn't received yet. This is of no interest for the sender of the Message, but rather for the recipient itself, since they can use it for audit purposes. sender | | - -## File - -The Backbone allows you to upload files, which are saved as - you guessed it - `Files`. - -| Name | Type | Description | Remarks | -| ------------------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | -| id | `string` | {% include descr_id class="File" prefix="FIL" %} | | -| createdAt | `string` | {% include descr_createdAt class="File" %} | | -| createdBy | `string` | {% include descr_createdBy class="File" %} | | -| createdByDevice | `string` | {% include descr_createdByDevice class="File" %} | | -| expiresAt | `string` | {% include descr_expiresAt class="File" %} | | -| filename | `string` | The name of the file as it was on the device that uploaded it. | will be encrypted before sent to the Backbone | -| filesize | `number` | The size of the plaintext file in bytes. | will be encrypted before sent to the Backbone | -| mimetype | `string` | The [mimetype](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) of the file. | will be encrypted before sent to the Backbone | -| title | `string` | A human readable title of the file, which can be defined when uploading the File. | will be encrypted before sent to the Backbone | -| description | `string` \| `undefined` | A human readable description of the file, which can be defined when uploading the File. | will be encrypted before sent to the Backbone | -| secretKey | `string` | The key that was used to encrypt the File. | saved only locally | -| isOwn | `boolean` | {% include descr_isOwn class="File" %} | saved only locally | -| truncatedReference | `string` | {% include descr_truncatedReference class="File" %} | saved only locally | - -A File further has its content, of course. But since this is not a JSON property, it is not included in this table. You can download the content of the File separately. - -# Local Types - -In addition to the types that are shared between Identities via the Backbone, there are certain types that only exist within one Identity. These types usually contain metadata about [Content types](#content-types) that should not be transferred to other Identities. They are created and updated by the [Consumption Layer]({% link _docs_explore/43-consumption-layer.md %}). - -Currently there are two main Local types: - -- LocalRequest -- LocalAttribute - -Each of them further describes some sub types. - -This chapter explains all of those types, together with their properties. - -## LocalRequest - -A Local Request contains the local metadata for a [Request](#request). - -| Name | Type | Description | -| --------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| id | `string` | {% include descr_id class="LocalRequest" prefix="FIL" %} | -| isOwn | `boolean` | `true` if you sent the Request, `false` if you received it. | -| peer | `string` | The Identity that sent you the corresponding Request/that you sent the Request to. | -| createdAt | `string` | {% include descr_createdAt class="LocalRequest" %} | -| status | [`LocalRequestStatus`](#localrequeststatus) | The current status of the Request. See [below](#localrequeststatus) for a list of all possible values. | -| content | [`Request`](#request) | The actual Content object this Local Request defines the metadata for. | -| source | [`LocalRequestSource`](#localrequestsource) \| `undefined` | Information about the Transport object with which the Request came in/was sent. This property is `undefined` if the Request is not sent yet. | -| response | [`LocalResponse`](#localresponse) \| `undefined` | Metadata + Content object of the response. If there is no response yet, this property is `undefined`. | - -### LocalRequestStatus - -Depending on whether it is an incoming or an outgoing Request, there can be different statuses. The following state diagram shows which status exists in both cases and when there are transitions from one state to another: - -![State diagram for Local Request Status]( {{ '/assets/images/explore/RequestStatus%20-%20State%20Diagram.png' | relative_url }} ) - -Draft -: This status only exists for outgoing Requests. It means that the Local Request was created, but not yet sent. - -Open -: In case of an outgoing Request, `Open` means that the Request was sent. The transition to `Open` happens automatically when you send the Request with a Message. -: In case of an incoming Request, `Open` means that the Local Request was received. - -DecisionRequired -: After the prerequisites of the Request and all of its Request Items were checked, a decision can be made. At first, the [Decider Module]({% link _docs_explore/61-runtime.md %}#decider-module) tries to make an automatic decision. It therefore checks all LocalRequests in status `DecisionRequired`. - -ManualDecisionRequired -: If the Decider Module cannot make a decision, it moves the Local Request to `ManualDecisionRequired`. When the Local Request is in this status, it's the User's turn to decide whether they want to accept or reject the Request. - -Decided -: When the User or the Decider Module accepts or rejects the Request, the Response and ResponseItems are generated based on the passed parameters. This Response is saved in the `response` property of the `LocalRequest`, but not yet sent. - -Completed -: In case of an incoming Request, the Runtime Module listens to an Event saying that a Request moved to status `Decided`. It then checks on which way the Request was received (Message/RelationshipTemplate) and sends the Response on the corresponding way (by sending a message or creating a Relationship). After the Response was successfully sent, it moves the Local Request to `Completed`. -: In case of an outgoing Request, the Runtime Module listens to the `MessageReceivedEvent` and checks the content of the sent Message for a Response. If there is one, it moves the corresponding Local Request to `Completed`. - -Expired -: When the timestamp in `expiresAt` of a Request is reached, the Request automatically moves to the status `Expired`. - -### LocalRequestSource - -With the information in this type you can clearly identify the Transport object the Request was sent/received in. Currently there are only two possibilities: Message and Relationship Template. - -| Name | Type | Description | -| --------- | ----------------------------------- | ---------------------------------------------------------------- | -| type | "Message" \| "RelationshipTemplate" | The type of Transport object the Request was sent/received in. | -| reference | `string` | The ID of the Transport object the Request was sent/received in. | - -### LocalResponse - -When a Local Request is decided/received, a Local Response is generated, which contains the Response, together with some metadata. - -| Name | Type | Description | -| --------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| createdAt | `string` | {% include descr_createdAt class="LocalResponse" %} | -| content | [`Response`](#response) | The actual Content object this Local Response defines the metadata for. | -| source | [`LocalResponseSource`](#localresponsesource) \| `undefined` | Information about the Transport object with which the Response came in/was sent. This property is `undefined` if the Response is not sent/received yet. | - -### LocalResponseSource - -With the information in this type you can clearly identify the Transport object the Response was sent/received in. Currently there are only two possibilities: Message and Relationship Change. - -| Name | Type | Description | -| --------- | --------------------------------- | ----------------------------------------------------------------- | -| type | "Message" \| "RelationshipChange" | The type of Transport object the Response was sent/received in. | -| reference | `string` | The ID of the Transport object the Response was sent/received in. | - -## LocalAttribute - -A Local Attribute contains the local metadata for an [Attribute](#attributes). There are three situations a Local Attribute is created in the database: - -- The Identity maintains an Attribute about itself (e.g. sets its first name). We call such a Local Attribute "Repository Attribute". -- The Identity shares an Attribute of itself with another Identity (e.g. sends it in a Request). In that case, a _copy of the original Local Attribute_ is created, where the `shareInfo` property is set. -- The Identity receives an Attribute from another Identity (e.g. receives it in a Request). In that case a _new Local Attribute_ is created, where the `shareInfo` is set. - -| Name | Type | Description | -| ----------- | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| id | `string` | {% include descr_id class="LocalAttribute" prefix="ATT" %} | -| parentId | `string` \| `undefined` | If the Attribute referenced by this Local Attribute is a component of a composite Attribute, the `parentId` property is set to the id of the composite Attribute. Example: if a Local Attribute is created with the content `StreetAddress`, for each property of the `StreetAddress` an additional Local Attribute is created. And each of these will have `parentId` set to the `id` of the Local Attribute for the `StreetAddress`. | -| createdAt | `string` | {% include descr_createdAt class="LocalAttribute" %} | -| content | [`IdentityAttribute`](#identityattribute) \| [`RelationshipAttribute`](#relationshipattribute) | The actual Content object this Local Attribute defines the metadata for. | -| succeeds | `string` \| `undefined` | The ID of the Local Attribute that succeeds the current one. | -| succeededBy | `string` \| `undefined` | The ID of the Local Attribute that is succeeded by the current one. | -| shareInfo | [`LocalAttributeShareInfo`](#localattributeshareinfo) \| `undefined` | Information about the peer this Local Attribute was received from/shared with, as well as via which Local Request it was received/sent. If the Local Attribute refers to a Repository Attribute, this property is `undefined`. | - -### LocalAttributeShareInfo - -The Local Attribute Share Info helps to keep track of how the Local Attribute was received/sent, from whom it was received/who sent it, as well as which Local Attribute it was copied from (in case of a shared Repository Attribute). For example, this enables us to track back who we shared a certain Repository Attribute with, so we are able to notify each of them when changing the Repository Attribute. - -| Name | Type | Description | -| ---------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------- | -| requestReference | `string` | The ID of the Local Request the Local Attribute was received in/sent with. | -| peer | `string` | The Address of the Identity the Local Attribute was received from/shared with. | -| sourceAttribute | `string` \| `undefined` | If the Local Attribute is a copy of a Repository Attribute, then this property contains the ID of the Repository Attribute. | - -## LocalAttributeListener - -A LocalAttributeListener is created when you accept an incoming Request with a [`RegisterAttributeListenerRequestItem`]({% link _docs_integrate/62-request-items.md %}#registerattributelistenerrequestitem). It is used to keep track of which Attribute Listeners currently exist and what they are listening for. - -| Name | Type | Description | -| ----- | -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| id | `string` | {% include descr_id class="LocalAttributeListener" prefix="ATL" %} | -| query | [`IdentityAttributeQuery`](#identityattributequery) \| [`ThirdPartyRelationshipAttributeQuery`](#thirdpartyrelationshipattributequery) | The query the Attribute that is listened to must match. Note that you cannot send a [`RelationshipAttributeQuery`](#relationshipattributequery) here, because it doesn't make sense: by definition, both parties know about a Relationship Attribute right from the beginning, because one party requests its creation, and the other one accepts it. | -| peer | `string` | The Address of the peer that requested the Attribute Listener. | - -# Content Types - -Content Types can be seen as a data contract between Identities. The medium through which this data is exchanged are the [Transport types](#transport-types) (e.g. Messages, Tokens, ...). This chapter shows all the Content types and describes their intended usage. - -## Request - -A Request allows you to ask another Identity to do something. What this "something" is depends on which of the so called [Request Items](#requestitem) were added to the Request (e.g. [`CreateAttributeRequestItem`]({% link _docs_integrate/62-request-items.md %}#createattributerequestitem), [`ReadAttributeRequestItem`]({% link _docs_integrate/62-request-items.md %}#readattributerequestitem), ...). The Request is then sent to the peer via Message or Relationship Template. The peer can then review the Request and decide whether they want to accept or reject it. And if they accept it, they can even choose which of the Items they want to accept. You can also put multiple Items into a [group](#requestitemgroup) in order to ensure that they can only be accepted/rejected as a unit. - -| Name | Type | Description | -| ----------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | -| id | `string` \| `undefined` | Unique identifier of this object. This property is `undefined` if the Request is inside of a Relationship Template.
                _Remark: the ID of each Request starts with the letters "REQ". This way you can tell apart a Request ID from any other ID just by looking at the prefix._
                | -| title | `string` \| `undefined` | An optional, human readable title for the Request. | -| description | `string` \| `undefined` | An optional, human readable description for the Request. | -| expiresAt | `string` \| `undefined` | {% include descr_expiresAt class="Request" %} | -| items | `(`[`RequestItemGroup`](#requestitemgroup)` | `[`RequestItem`](#requestitem)`)[]` | An array of Request Items and Groups that are part of the Request. There must be at least one Item or Group per Request. | -| metadata | `string` \| `undefined` | Optional custom metadata that can be sent together with the Request. This property is meant purely for developers who integrate with Enmeshed. They can write for example some kind of key into this property, which can be used later to identify the content of this Request. | - -### RequestItem - -Request Items can be sent inside of a Request and specify what should be done when the Request is accepted. `RequestItem` itself only defines some common properties. There are multiple types that inherit from `RequestItem`, like `CreateAttributeRequestItem` or `ReadAttributeRequestItem`. - -The base properties are: - -| Name | Type | Description | -| --------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| title | `string` \| `undefined` | An optional, human readable title for the Request Item. | -| description | `string` \| `undefined` | An optional, human readable description for the Request Item. | -| metadata | `object` \| `undefined` | The metadata property can be used to provide arbitrary JSON content by the sender of the request. The metadata is not processed by Enmeshed. It is a great way to use your own process descriptors at the time of sending the request which helps you identify the correct internal process at the time of receiving the response. | -| mustBeAccepted | `boolean` | The mandatory mustBeAccepted property is used to differentiate between required and optional Request Items within the Request. In other words, if the peer Identity may or may not decide to ignore this specific Request Item. If set to true, the peer cannot accept the Request without accepting this item. For example, some Attributes are mandatory for the business process and thus the respective Request Items must be accepted (mustBeAccepted = true). A consent to a newsletter is optional and thus only can be accepted (mustBeAccepted = false). Keep in mind that if the Request Item is inside of a Request Item Group, then this flag takes effect only when the Group is accepted. So as long as the Group is not accepted, the Item does not have to be accepted either. | -| requireManualDecision | `boolean` | To block the automated acceptance of Requests, the requireManualDecision property can be set to true. The default is, that each Request Item may be automatically processed on the peer side. If the sender would like to have an enforced manual acceptance step of for example an [AuthenticationRequestItem]({% link _docs_integrate/62-request-items.md %}#authenticationrequestitem) or a [ConsentRequestItem]({% link _docs_integrate/62-request-items.md %}#consentrequestitem), the requireManualDecision property can be set to true. | - -There is a [dedicated site]({% link _docs_integrate/62-request-items.md %}) that lists all available kinds of Request Items. - -### RequestItemGroup - -| Name | Type | Description | -| -------------- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| title | `string` \| `undefined` | An optional, human readable title for the Request Item Group. | -| description | `string` \| `undefined` | An optional, human readable description for the RequestItem. | -| metadata | `object` \| `undefined` | Optional metadata that can be sent together with this RequestItem. The intended usage is the same as of the metadata property of the Request. | -| mustBeAccepted | `boolean` | If set to `true`, then this Request Item Group has to be accepted when the Request is accepted. | -| items | [`RequestItem`](#requestitem)`[]` | The items inside of this Group. There has to be at least one Request Item per Group. Note that we do not support nested Groups at the moment. If you need this feature, you can [raise a feature request](https://github.com/nmshd/feedback/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=%5BFEATURE%5D+). | - -## Response - -| Name | Type | Description | -| --------- | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| result | `"Accepted"` \| `"Rejected"` | Whether the Response was accepted or rejected by the recipient of the Request. | -| requestId | `string` | The `id` of the Request this Response belongs to. The Sender of the Request needs this information to map the Response to the corresponding Request. | -| items | `(`[`ResponseItemGroup`](#responseitemgroup)`\|`[`ResponseItem`](#responseitem)`)[]` | An array of Response Items and Groups that are part of the Response. For each Request Item (Group) of the Request, there must be one Response Item (Group) in the Response. Note that the indices have to be the same for matching Request and Response Items. | - -### ResponseItem - -Response Items are sent inside of a Response. They contain the response data that is sent by the recipient of the Request. There are three different kinds of Response Items: `AcceptResponseItem`, `RejectResponseItem` and `ErrorResponseItem`. Depending on the actual Request Item, there can be different derivations of these three items. For example, in case of a [`CreateAttributeRequestItem`]({% link _docs_integrate/62-request-items.md %}#createattributerequestitem), there is a special [`CreateAttributeAcceptResponseItem`]({% link _docs_integrate/62-request-items.md %}#createattributerequestitem-response-itemproperties), while for an [`AuthenticationRequestItem`]({% link _docs_integrate/62-request-items.md %}#authenticationrequestitem), the [`AcceptResponseItem`](#acceptresponseitem) can be used, because there is no additional information necessary next to whether it was accepted or rejected. - -The [site documenting the Request Items]({% link _docs_integrate/62-request-items.md %}) shows which Response Item is required for each Request Item. - -#### AcceptResponseItem - -The properties of the `AcceptResponseItem` are: - -| Name | Type | Description | -| ------ | ------------ | -------------------------------------------------------- | -| result | `"Accepted"` | The only possible value here is the string `"Accepted"`. | - -#### RejectResponseItem - -The properties of the `RejectResponseItem` are: - -| Name | Type | Description | -| -------- | ----------------------- | ------------------------------------------------------------- | -| result | `"Rejected"` | The only possible value here is the string `"Rejected"`. | -| code? | `string` \| `undefined` | A code telling the sender about the reason for the rejection. | -| message? | `string` \| `undefined` | A human readable message with details about the rejection. | - -#### ErrorResponseItem - -The `ErrorResponseItem` is only created by the Enmeshed Runtime, in case something happens which hinders you from further processing of the Request Item. It will never be created manually. The properties are: - -| Name | Type | Description | -| ------- | --------- | ----------------------------------------------------------------------- | -| result | `"Error"` | The only possible value here is the string `"Error"`. | -| code | `string` | An error code telling the sender about the kind of error that occurred. | -| message | `string` | A human readable error message with details about the error. | - -### ResponseItemGroup - -| Name | Type | Description | -| ----- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| items | [`ResponseItem`](#responseitem)`[]` | The items inside of this Group. For each Request Item of the Request Item Group, there must be one Response Item in the Response Item Group. Note that the indices have to be the same for matching Request and Response Items. | - -## ResponseWrapper - -The ResponseWrapper is a wrapper around the Response that is sent by the recipient of the Request. It contains the Response itself, but also some additional information that is required for the Request to be processed correctly. - -| Name | Type | Description | -| ---------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | -| requestId | `string` | The `id` of the Request this Response belongs to. | -| requestSourceReference | `string` | The reference to the Message or RelationshipTemplate the Request was received with. | -| requestSourceType | `"Message"` \| `"RelationshipTemplate"` | Specifies if the Request was transferred via [Message](#message) or [RelationshipTemplate](#relationshiptemplate). | -| response | [`Response`](#response) | The Response that is sent by the recipient of the Request. | - -## Attributes - -An Attribute is some piece of information about an Identity itself (e.g. its name, address, birth date, etc.) or about an Identity in the context of a Relationship (e.g. the customer id the of the user the Relationship). Since the two scenarios differ quite a lot, there are two different types for them: IdentityAttribute and RelationshipAttribute. - -### IdentityAttribute - -Identity Attributes describe an Identity itself. Their values are strongly normalized. There is a list of available values [here]({% link _docs_integrate/63-attribute-values.md %}). - -| Name | Type | Description | -| --------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -| owner | `string` | The Identity that owns this Attribute. Only the owner of an Attribute is allowed to change it after its creation. | -| validFrom | `string` \| `undefined` | The date from which on the Attribute is valid. Could be in the future if the Attribute is not yet valid. | -| validTo | `string` \| `undefined` | The date until this Attribute is valid. Could be in the past if the Attribute is already expired. | -| value | [`IdentityAttributeValue`]({% link _docs_integrate/63-attribute-values.md %}#identity-attributes) | The Attribute's value. | -| tags | `string[]` \| `undefined` | To specify additional information. | - -### RelationshipAttribute - -Relationship Attributes describe an Identity in the context of a Relationship. While there are some types that can be used as a value for a RelationshipAttribute, these types are rather generic (e.g. `ProprietaryString`, `ProprietaryInteger`, ...). - -| Name | Type | Description | -| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| owner | `string` | The Identity that owns this Attribute. Only the owner of an Attribute is allowed to change it after its creation. | -| validFrom | `string` \| `undefined` | The date from which on the Attribute is valid. Could be in the future if the Attribute is not yet valid. | -| validTo | `string` \| `undefined` | The date until this Attribute is valid. Could be in the past if the Attribute is already expired. | -| key | `string` | An arbitrary key that is set by the creator of this Attribute. It is used to identify the Attribute in a query, especially by a third party. Example: you could set something like `customerId` in case of a customer id. | -| isTechnical | `boolean` \| `undefined` | Defines whether the Relationship Attribute contains data that is actually relevant for the user (`isTechnical=false`) or whether it should be hidden in the UI (`isTechnical=true`). | -| value | [`RelationshipAttributeValue`]({% link _docs_integrate/63-attribute-values.md %}#relationship-attributes) | The Attribute's value. | -| confidentiality | `"public"` \| `"protected"` \| `"private"` \| When this property is set to `"private"`, it means that third parties are not able to query this Relationship Attribute. It therefore only exists in the Relationship it was created in. If the confidentiality is `"protected"`, third parties can query the Relationship Attribute, but the App shows a warning saying that you should only share it with someone you trust. If the confidentiality is `"public"`, everybody can query the Attribute, without anything special to happen. | | - -## AttributeQueries - -One of the main features of Enmeshed is sharing Attributes. For this, an Identity either proactively sends its Attributes to a peer. Or, if let's say a company wants to know the birth date of its customer, it can ask for it. Depending on the exact use case, the latter can be achieved with one of a bunch of Request Items, like for example a [`ReadAttributeRequestItem`]({% link _docs_integrate/62-request-items.md %}#readattributerequestitem), or a [`CreateAttributeListenerRequestItem`]({% link _docs_integrate/62-request-items.md %}#createattributerequestitem). All of them have in common that they define a `query` property, which contains either an [`IdentityAttributeQuery`](#identityattributequery) or a [`RelationshipAttributeQuery`](#relationshipattributequery). - -### IdentityAttributeQuery - -An Identity Attribute Query is used to query for Identity Attributes. For that, it defines the following properties: - -| Name | Type | Description | -| --------- | ------------------------- | --------------------------------------------------------------------------------------------------- | -| validFrom | `string` \| `undefined` | The start date of the time frame the returned Attribute should be valid in. | -| validTo | `string` \| `undefined` | The end date of the time frame the returned Attribute should be valid in. | -| valueType | `string` | The type of value that should be queried, e.g. `"StreetAddress"`, `"BirthDate"` or `"Nationality"`. | -| tags | `string[]` \| `undefined` | To specify additional information. | - -You can only query Identity Attributes owned by the recipient of the query. - -### RelationshipAttributeQuery - -There are cases in which you want to query some data from your peer that is not an Identity Attribute. An example for this is when an electricity provider asks for the electric meter number of a new customer. Since this information is only relevant in the context of the Relationship, an Identity Attribute wouldn't make any sense here. That's why you would send a RelationshipAttributeQuery. Its properties are: - -| Name | Type | Description | -| ---------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | -| validFrom | `string` \| `undefined` | The start date of the time frame the returned Attribute should be valid in. | -| validTo | `string` \| `undefined` | The end date of the time frame the returned Attribute should be valid in. | -| key | `string` | The key of the Relationship Attribute that should be queried. | -| owner | `string` | The owner of the queried Relationship Attribute. | -| attributeCreationHints | [`RelationshipAttributeCreationHints`](#relationshipattributecreationhints) | Contains information about the value that will be created, like the value type or its confidentiality. | - -#### RelationshipAttributeCreationHints - -| Name | Type | Description | -| --------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| title | `string` | A short text describing the purpose of the Attribute that is about to be created. | -| description | `string` \| `undefined` | A long text describing the purpose of the Attribute that is about to be created. | -| valueType | `string` | The value type of the Attribute to be created (e.g. `"ProprietaryInteger"`, `"ProprietaryString"`, ...) | -| confidentiality | `"public"` \|`"protected"` \|`"private"` \| | The confidentiality of the Attribute to be created. See [`RelationshipAttribute`](#relationshipattribute) for a more detailed description of confidentialities. | -| valueHints | [`ValueHints`](#valuehints) \| `undefined` | Hints for validating the value, e.g. a regular expression or a min/max length. | - -#### ValueHints - -| Name | Type | Description | -| -------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -| editHelp? | `string` | A help text you can use to describe the purpose of the Attribute. | -| min? | `number` | In case of a string: the minimum length of the string. In case of an integer: the minimum value. | -| max? | `number` | In case of a string: the maximum length of the string. In case of an integer: the maximum value. | -| pattern? | `string` | A [regular expression](https://en.wikipedia.org/wiki/Regular_expression) that is used to validate the value. Only applicable if the value is a string. | -| values? | [`ValueHintsValue`](#valuehintsvalue)`[]` | An array of allowed values. | -| defaultValue? | `string` \| `number` \| `boolean` | The default value that is used if no value is provided. | -| propertyHints? | `Record`](#valuehints) | A set of Value Hints of all properties. The key is the name of the property and the value a `ValueHints` object. Only applicable if the value is complex. | - -#### ValueHintsOverride - -Has the same properties as [`ValueHints`](#valuehints), except that all of them are optional. This type is used for some [Relationship Attribute values]({% link _docs_integrate/63-attribute-values.md %}#relationship-attributes) - -#### ValueHintsValue - -| Name | Type | Description | -| ----------- | --------------------------------- | -------------------------------------------- | -| key | `string` \| `number` \| `boolean` | The actual value. | -| displayName | `string` | How the value should be displayed on the UI. | - -### ThirdPartyRelationshipAttributeQuery - -If you want to query Attributes the user has in the context of a Relationship with a third party, you can use the `ThirdPartyRelationshipAttributeQuery`. An example would be the query for the number of a bonus card managed by another company (like Payback). A ThirdPartyRelationshipAttributeQuery has the following properties: - -| Name | Type | Description | -| ---------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| validFrom | `string` \| `undefined` | The start date of the time frame the returned Attribute should be valid in. | -| validTo | `string` \| `undefined` | The end date of the time frame the returned Attribute should be valid in. | -| key | `string` | The key of the Relationship Attribute that should be queried. | -| owner | `string` | The owner of the queried Relationship Attribute. Can be an empty string (`""`), if the owner is unknown or you are querying from multiple thirdParties that could own the attribute. | -| thirdParty | `string[]` | The Address of the third parties the Relationship Attribute should be queried from. | - -## RelationshipTemplateContent - -Theoretically you can send any kind of data in a Relationship Template. However, if your peer uses the Enmeshed App, it will only be able to process Relationship Templates that contain a `RelationshipTemplateContent`, which looks like this: - -| Name | Type | Description | -| ---------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| title | `string` \| `undefined` | An optional, human readable title that should be rendered in the UI. | -| metadata | `object` \| `undefined` | Optional custom metadata that can be sent together with the Relationship Template. This property is meant purely for developers who integrate with Enmeshed. They can write for example some kind of key into this property, which can be used later to identify the content of this Template. | -| onNewRelationship | [`Request`](#request) | The Request that should pop up to the user in case there is no Relationship yet. In this Request you can send Attributes of yourself the user needs to in order to know who's Template it is (e.g. company name, address, ...), as ask for Attributes of the user you need to know in the Relationship, or send some information you already know about the user, so it can be saved in its wallet (e.g. the customer id). | -| onExistingRelationship | [`Request`](#request) \| `undefined` | The Request that should pop up to the user in case a Relationship already exists. An example usage is a Request with an `AuthenticationRequestItem` for the sake of two-factor authentication. | - -## RelationshipCreationChangeRequestContent - -The naming on this one in combination with its `response` property is a bit confusing. Even though the `RelationshipCreationChangeRequestContent` contains the word "Request", it has a `response` property. -This is because in the context of Relationships, there are [Relationship Changes](#relationshipchange), which have a `request` and a `response` property. But caution: these have nothing to do with the Content-types `Request` and `Response`. - -| Name | Type | Description | -| -------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| response | [`Response`](#response) | The Response to the Request that was contained in the [RelationshipTemplateContent](#relationshiptemplatecontent) (either in the `onExistingRelationship` property or in the `onNewRelationship` property). | - -## Mail - -A Mail can be sent as the content of a [Message](#message). It is comparable with the classic email, so its properties should not contain any surprise. - -| Name | Type | Description | -| ------- | ------------------------- | ----------------------------------------------------------------------------------------------------------- | -| to | `string[]` | The Enmeshed Addresses of the main recipients of this Mail. | -| cc | `string[]` \| `undefined` | The Enmeshed Addresses that should receive a copy of this Mail, additionally to the ones specified in `to`. | -| subject | `string` | The subject of the Mail. | -| body | `string` | The body of the Mail. | diff --git a/_docs_integrate/62-request-items.md b/_docs_integrate/62-request-items.md deleted file mode 100644 index f96d5923e..000000000 --- a/_docs_integrate/62-request-items.md +++ /dev/null @@ -1,376 +0,0 @@ ---- -title: "Request Items" -permalink: /integrate/data-model-request-items -toc: true ---- - -All the RequestItems listed below inherit from the [RequestItem]({% link _docs_integrate/61-data-model.md %}#requestitem) and are therefore sharing its properties. - -## AuthenticationRequestItem - -With this item the sender can request the peer for an authentication in a business context for a certain purpose. The peer can then decide to authenticate or not. This authentication is mostly short-lived and limited in time. - -### Examples {#authenticationrequestitem-examples} - -- Authentication for a login to a website -- Authentication for opening a door - -### Properties {#authenticationrequestitem-properties} - -| Name | Type | Description | -| ------- | ----------------------------- | -------------------------------------------------------------- | -| `@type` | `"AuthenticationRequestItem"` | Specifies the type of the RequestItem for internal processing. | - -### Response Parameters {#authenticationrequestitem-response} - -#### Item Properties {#authenticationrequestitem-response-itemproperties} - -- To accept this RequestItem an [AcceptResponseItem]({% link _docs_integrate/61-data-model.md %}#acceptresponseitem) will be transferred. -- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/61-data-model.md %}#rejectresponseitem) will be transferred. -- In case of an error an [ErrorResponseItem]({% link _docs_integrate/61-data-model.md %}#errorresponseitem) will be transferred. - -#### Parameters {#authenticationrequestitem-response-parameters} - -- To accept this RequestItem you can send `{ "accept": true }` as parameters. -- To reject this RequestItem you can send `{ "accept": false }` as parameters. - -## ConsentRequestItem - -With the ConsentRequestItem it is possible to request a consent of the peer to an arbitrary text and thus reach agreement on a certain non machine-processable context. - -To request an accept/reject decision from a peer to a free text, the ConsentRequestItem is used. - -Please do not use the ConsentRequestItem to submit tons of text to the peer Identity. It is meant to be a short consent or summary the user agrees to. Please move longer text to external websites. -The ConsentRequestItem is also not meant for contractual agreements. -{: .notice--info} - -### Examples {#consentrequestitem-examples} - -- "I hereby confirm that I have read the privacy terms of this cloud service and agree to them." -- "The provided EULA has been read and agreed to." -- "Yes, I have backed up all of my data of this PC and you can wipe it." -- "I opt in to the newsletter." - -### Properties {#consentrequestitem-properties} - -| Name | Type | Description | -| --------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `@type` | `"ConsentRequestItem"` | Specifies the type of the RequestItem for internal processing. | -| `consent` | `string` | The textual consent the user needs to give. This is different to the title and description of the RequestItem, as the consent would be the actual statement the user agrees to. | -| `link` | `string` \| `undefined` | A link to a website which contains more information, like the EULA or privacy terms. | - -### Response Parameters {#consentrequestitem-response} - -#### Item Properties {#consentrequestitem-response-itemproperties} - -- To accept this RequestItem an [AcceptResponseItem]({% link _docs_integrate/61-data-model.md %}#acceptresponseitem) will be transferred. -- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/61-data-model.md %}#rejectresponseitem) will be transferred. -- In case of an error an [ErrorResponseItem]({% link _docs_integrate/61-data-model.md %}#errorresponseitem) will be transferred. - -#### Parameters {#consentrequestitem-response-parameters} - -- To accept this RequestItem you can send `{ "accept": true }` as parameters. -- To reject this RequestItem you can send `{ "accept": false }` as parameters. - -## CreateAttributeRequestItem - -If you want to create Identity- or RelationshipAttributes for the peer, the CreateAttributeRequestItem can be used. Please have a look at the ProposeAttributeRequestItem if the peer should be able to overwrite the Attribute. - -To create an Attribute with a fixed value defined by the sender, an Identity uses the CreateAttributeRequestItem. A fixed value in this case means, that the recipient is not allowed to change the value when accepting the request. - -### Examples {#createattributerequestitem-examples} - -- Share the corporate E-Mail Address of the peer to the peer -- Send a certificate of the peer to the peer, so that the peer is able to easily share it -- Create a RelationshipAttribute for the peer - -### Properties {#createattributerequestitem-properties} - -| Name | Type | Description | -| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `@type` | `"CreateAttributeRequestItem"` | Specifies the type of the RequestItem for internal processing. | -| `attribute` | [`IdentityAttribute`]({% link _docs_integrate/61-data-model.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/61-data-model.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute to create for the peer within the Identity of the peer. | - -### Response {#createattributerequestitem-response} - -#### Item Properties {#createattributerequestitem-response-itemproperties} - -- To accept this RequestItem a `CreateAttributeAcceptResponseItem` will be transferred. - - | Name | Type | Description | - | ------------- | ------------------------------------- | -------------------------------- | - | `@type` | `"CreateAttributeAcceptResponseItem"` | The type of the ResponseItem. | - | `attributeId` | `string` | The id of the created Attribute. | - -- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/61-data-model.md %}#rejectresponseitem) will be transferred. -- In case of an error an [ErrorResponseItem]({% link _docs_integrate/61-data-model.md %}#errorresponseitem) will be transferred. - -#### Parameters {#createattributerequestitem-response-parameters} - -- To accept this RequestItem you can send `{ "accept": true }` as parameters. -- To reject this RequestItem you can send `{ "accept": false }` as parameters. - -### Combinations and usage scenarios {#createattributerequestitem-combinationsandusagescenarios} - -| Attribute Type | Attribute Owner | Possible? | Automation | Examples/Reason | -| -------------- | --------------- | --------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Identity | Sender | N | `N/A` | Use [ShareAttributeRequestItem](#shareattributerequestitem) instead. | -| Identity | Recipient | Y | `USER_DECISION` | University sends student his certificate (Propose would be inappropriate in this case, because the student should not be able to return his own value) | -| Identity | `` | Y | `USER_DECISION` | An empty owner defaults to an Attribute with owner=``. This is needed for Requests inside of Relationship Templates, since you don’t know the Enmeshed Address of your peer before the Relationship is established. | -| Relationship | Sender | Y | `AUTO_ACCEPT` | Company sends new customer his customer number. | -| Relationship | Recipient | Y | `USER_DECISION` | With this combination the **sender asks the recipient for the one-time permission** to write a Relationship Attribute once AND the **sender defined a value** which can either be accepted and stored, or rejected. Thus, the user cannot change the value by itself. | -| Relationship | `` | Y | `USER_DECISION` | An empty owner defaults to an Attribute with owner=``. This is needed for Requests inside of Relationship Templates, since you don’t know the Enmeshed Address of your peer before the Relationship is established. | - -## FreeTextRequestItem - -With the FreeTextRequestItem it is possible to send a free text to the peer. The peer itself can accept this with a free text as well. - - - -### Properties {#freetextrequestitem-properties} - -| Name | Type | Description | -| ---------- | ----------------------- | -------------------------------------------------------------- | -| `@type` | `"FreeTextRequestItem"` | Specifies the type of the RequestItem for internal processing. | -| `freeText` | `string` | The free text you want to send to the peer. | - -### Response Parameters {#freetextrequestitem-response} - -#### Item Properties {#freetextrequestitem-response-itemproperties} - -- To accept this RequestItem a `FreeTextAcceptResponseItem` will be transferred. - - | Name | Type | Description | - | ---------- | ------------------------------ | ----------------------------------------------------- | - | `@type` | `"FreeTextAcceptResponseItem"` | The type of the ResponseItem. | - | `freeText` | `string` | The free text that is used to answer the RequestItem. | - -- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/61-data-model.md %}#rejectresponseitem) will be transferred. -- In case of an error an [ErrorResponseItem]({% link _docs_integrate/61-data-model.md %}#errorresponseitem) will be transferred. - -#### Parameters {#freetextrequestitem-response-parameters} - -- To accept this RequestItem you can send the following parameters. - - | Name | Type | Description | - | ---------- | -------- | ------------------------------------------- | - | `accept` | `true` | | - | `freeText` | `string` | The free text you want to send to the peer. | - -- To reject this RequestItem you can send `{ "accept": false }` as parameters. - -## ProposeAttributeRequestItem - -The ProposeAttributeRequestItem is a combination of [ReadAttributeRequestItem](#readattributerequestitem) and [CreateAttributeRequestItem](#createattributerequestitem). The sender would like to receive a correct Attribute from the peer, thinks it has a possible value but the peer might overrule this value with an existing or new one. - -To create an Attribute with a value proposed by the sender, an Identity uses the ProposeAttributeRequestItem. A proposed value in this case means, that the recipient is allowed to change the value if accepting the request. - -### Examples {#proposeattributerequestitem-examples} - -- Onboard an existing customer to Enmeshed and propose the known private Attributes, like its name or address. -- Ask the user if a newsletter would be of interest and propose the opt-in. This could be stored as a RelationshipAttribute with owner = recipient and could then be changed by the recipient at will. - -### Properties {#proposeattributerequestitem-properties} - -| Name | Type | Description | -| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | -| `@type` | `"ProposeAttributeRequestItem"` | Specifies the type of the RequestItem for internal processing. | -| `attribute` | [`IdentityAttribute`]({% link _docs_integrate/61-data-model.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/61-data-model.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute to propose for the peer as the queried Attribute. | -| `query` | [`IdentityAttributeQuery`]({% link _docs_integrate/61-data-model.md %}#identityattributequery) \| [`RelationshipAttributeQuery`]({% link _docs_integrate/61-data-model.md %}#relationshipattributequery) \| [`ThirdPartyRelationshipAttributeQuery`]({% link _docs_integrate/61-data-model.md %}#thirdpartyrelationshipattributequery) | The structured query of the Attribute the sender would like to receive. | - -### Response {#proposeattributerequestitem-response} - -#### Item Properties {#proposeattributerequestitem-response-itemproperties} - -- To accept this RequestItem a `ProposeAttributeAcceptResponseItem` will be transferred. - - | Name | Type | Description | - | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | - | `@type` | `"ProposeAttributeAcceptResponseItem"` | The type of the ResponseItem. | - | `attributeId` | `string` | The id of the created Attribute. | - | `attribute` | [`IdentityAttribute`]({% link _docs_integrate/61-data-model.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/61-data-model.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute to propose for the peer as the queried Attribute.
                The owner of the Attribute which is proposed can only be the recipient Identity. | - -- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/61-data-model.md %}#rejectresponseitem) will be transferred. -- In case of an error an [ErrorResponseItem]({% link _docs_integrate/61-data-model.md %}#errorresponseitem) will be transferred. - -#### Parameters {#proposeattributerequestitem-response-parameters} - -- To accept this RequestItem you can send the following parameters. - - - If you want to create a new Attribute. - - | Name | Type | Description | - | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- | - | `attribute` | [`IdentityAttribute`]({% link _docs_integrate/61-data-model.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/61-data-model.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute that shall be created. | - - - If you want to use the proposed Attribute. - - | Name | Type | Description | - | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | - | `attribute` | [`IdentityAttribute`]({% link _docs_integrate/61-data-model.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/61-data-model.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute that was provided in the RequestItem. | - - - If you want to use an existing Attribute. - - | Name | Type | Description | - | --------------------- | -------- | -------------------------------- | - | `existingAttributeId` | `string` | The id of the Attribute to send. | - -- To reject this RequestItem you can send `{ "accept": false }` as parameters. - -### Combinations and usage scenarios {#proposeattributerequestitem-combinationsandusagescenarios} - -| Attribute Type | Attribute Owner | Possible? | Automation | Examples/Reason | -| -------------- | --------------- | --------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Identity | Sender | N | `N/A` | It makes no sense to propose own Attributes, use [ShareAttributeRequestItem](#shareattributerequestitem) instead. | -| Identity | Recipient | Y | `USER_DECISION` | Company sends name and address to new customer during its onboarding process. | -| Relationship | Sender | Y | `USER_DECISION` | With this combination the **sender gives the recipient the one-time permission** to write a Relationship Attribute once AND the **sender proposes a value** which might make sense as a default.
                Example: Electricity provider asks new customer for the electricity meter number and proposes a known number | -| Relationship | Recipient | Y | `USER_DECISION` | With this combination the **sender asks the recipient for the one-time permission** to write a Relationship Attribute once AND the **sender proposes a value** which might make sense as a default.
                Example: Asking for a newsletter subscription | - -## ReadAttributeRequestItem - -If you want to query an Identity's Attributes this is done with the ReadAttributeRequestItem. - -To query Attributes which are not known to the sender, an Identity uses the ReadAttributeRequestItem. - -### Examples {#readattributerequestitem-examples} - -- Optional query of the BirthDate, to congratulate on birthdays -- Required query of the Age, to check if alcohol may be bought -- Required query of the StreetAddress, to send an invoice to the recipient - -### Properties {#readattributerequestitem-properties} - -| Name | Type | Description | -| ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `@type` | `"ReadAttributeRequestItem"` | Specifies the type of the RequestItem for internal processing. | -| `query` | [`IdentityAttributeQuery`]({% link _docs_integrate/61-data-model.md %}#identityattributequery) \| [`RelationshipAttributeQuery`]({% link _docs_integrate/61-data-model.md %}#relationshipattributequery) \| [`ThirdPartyRelationshipAttributeQuery`]({% link _docs_integrate/61-data-model.md %}#thirdpartyrelationshipattributequery) | The structured query of the Attribute the sender would like to receive. | - -### Response {#readattributerequestitem-response} - -#### Item Properties {#readattributerequestitem-response-itemproperties} - -- To accept this RequestItem a `ReadAttributeAcceptResponseItem` will be transferred. - - | Name | Type | Description | - | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- | - | `@type` | `"ReadAttributeAcceptResponseItem"` | The type of the ResponseItem. | - | `attributeId` | `string` | The id of the returned Attribute. | - | `attribute` | [`IdentityAttribute`]({% link _docs_integrate/61-data-model.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/61-data-model.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute that will be shared to the peer. | - -- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/61-data-model.md %}#rejectresponseitem) will be transferred. -- In case of an error an [ErrorResponseItem]({% link _docs_integrate/61-data-model.md %}#errorresponseitem) will be transferred. - -#### Parameters {#readattributerequestitem-response-parameters} - -- To accept this RequestItem you can send the following parameters. - - - If you want to use an existing Attribute. - - | Name | Type | Description | - | --------------------- | -------- | -------------------------------- | - | `existingAttributeId` | `string` | The id of the Attribute to send. | - - - If you want to create a new Attribute. - - | Name | Type | Description | - | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- | - | `attribute` | [`IdentityAttribute`]({% link _docs_integrate/61-data-model.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/61-data-model.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute that shall be created. | - -- To reject this RequestItem you can send `{ "accept": false }` as parameters. - -### Combinations and usage scenarios {#readattributerequestitem-combinationsandusagescenarios} - -| Attribute Type | Attribute Owner | Third Party | Possible? | Automation | Examples/Reason | -| -------------- | --------------- | ----------- | --------- | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Identity | Sender | | N | `N/A` | It makes no sense to read own IdentityAttributes. | -| Identity | Recipient | | Y | `USER_DECISION` | Company asks customer for its delivery address | -| Relationship | Sender | | Y | `USER_DECISION` | With this combination the **sender gives the recipient the one-time permission** to write a Relationship Attribute once
                Example: Electricity provider asks new customers for electricity meter number | -| Relationship | Recipient | | Y | `USER_DECISION` | With this combination the **sender asks the recipient for the one-time permission** to write a Relationship Attribute
                Example: Company asks new customer to subscribe to the newsletter and proposes the subscription as default once | -| Relationship | Recipient | Third Party | Y | `USER DECISION / NOT ALLOWED` - depending on confidentiality | With this combination the **sender requests a Relationship Attribute from a Relationship between the recipient and a third party. The Attribute must be owned by the recipient**
                Example: A Social Network asks for Facebook privacy settings of a user to get senseful defaults of its own privacy settings | -| Relationship | Third Party | Third Party | Y | `USER DECISION / NOT ALLOWED` - depending on confidentiality | With this combination the **sender requests a Relationship Attribute from a Relationship between the recipient and a third party which is owned by the third party**
                Example: An online shop asks for the Payback Customer Id of a user to book the order on his account | - - - -## ShareAttributeRequestItem - -If you want to share the own DisplayName and possibly other Attributes this is done with the ShareAttributeRequestItem. - -To share own IdentityAttributes (owner = self) an Identity uses the ShareAttributeRequestItem. The Identity needs to create the IdentityAttribute separately before the Attribute can be shared. - -### Examples {#shareattributerequestitem-examples} - -- Share own DisplayName. -- Share own Address. -- Share customer number of company A with company B. - -### Properties {#shareattributerequestitem-properties} - -| Name | Type | Description | -| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `@type` | `"ShareAttributeRequestItem"` | Specifies the type of the RequestItem for internal processing. | -| `attribute` | [`IdentityAttribute`]({% link _docs_integrate/61-data-model.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/61-data-model.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute to share. This is not the LocalAttribute but the content data structure of the Attribute.
                The owner of the Attribute which should be shared can only be the sender Identity. | -| `sourceAttributeId` | `string` | The id of the LocalAttribute which is the source of the shared Attribute. This will be used later to reference the sourceAttribute from its shared copy. | - -### Response {#shareattributerequestitem-response} - -#### Item Properties {#shareattributerequestitem-response-itemproperties} - -- To accept this RequestItem a `RegisterAttributeListenerAcceptResponseItem` will be transferred. - - | Name | Type | Description | - | ------------- | ------------------------------------ | -------------------------------- | - | `@type` | `"ShareAttributeAcceptResponseItem"` | The type of the ResponseItem. | - | `attributeId` | `string` | The id of the created Attribute. | - -- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/61-data-model.md %}#rejectresponseitem) will be transferred. -- In case of an error an [ErrorResponseItem]({% link _docs_integrate/61-data-model.md %}#errorresponseitem) will be transferred. - -#### Parameters {#shareattributerequestitem-response-parameters} - -- To accept this RequestItem you can send `{ "accept": true }` as parameters. -- To reject this RequestItem you can send `{ "accept": false }` as parameters. - -### Combinations and usage scenarios {#shareattributerequestitem-combinationsandusagescenarios} - -| Attribute Type | Attribute Owner | Possible? | Automation | Examples/Reason | -| -------------- | --------------- | --------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Identity | Sender | Y | `AUTO ACCEPT` | Company sends new customer the address of the company | -| Identity | Recipient | N | `N/A` | It makes no sense to share the Attribute to the recipient, because he already owns it. | -| Identity | Third Party | N | `N/A` | You cannot share an Attribute of which you are not the owner. | -| Identity | `` | Y | `AUTO ACCEPT` | An empty owner defaults to an Attribute with owner=``. | -| Relationship | Sender | Y | `USER DECISION` / `NOT ALLOWED` (depending on confidentiality) | A user can share own RelationshipAttributes of any Relationship to any other Relationship (if the confidentiality of the RelationshipAttribute is protected or public).
                Example: Share Customer ID from Company A with Company B (User is owner of RelationshipAttribute) | -| Relationship | Recipient | N | `N/A` | It makes no sense to share the Attribute to the recipient, because he already owns it. | -| Relationship | Third Party | Y | `USER DECISION` / `NOT ALLOWED` (depending on confidentiality) | A user can share RelationshipAttributes of any Relationship to any other Relationship (if the confidentiality of the RelationshipAttribute is protected or public).
                Example: Share Customer ID from Company A with Company B (Company A is owner of RelationshipAttribute), e.g. Payback number | -| Relationship | `` | Y | `AUTO ACCEPT` | An empty owner defaults to an Attribute with owner=``. | diff --git a/_docs_integrate/63-attribute-values.md b/_docs_integrate/63-attribute-values.md deleted file mode 100644 index e430b97f7..000000000 --- a/_docs_integrate/63-attribute-values.md +++ /dev/null @@ -1,919 +0,0 @@ ---- -title: "Attribute Values" -permalink: /integrate/data-model-attribute-values -toc: true ---- - -Each [Attribute]({% link _docs_integrate/61-data-model.md %}#attributes) 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`](#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`](#emailaddress), [`DisplayName`](#displayname), [`PhoneNumber`](#phonenumber)). But there are also more complex Attribute Value types which consist of multiple properties with a strong correlation (e.g. [`StreetAddress`](#streetaddress), [`PersonName`](#personname)). These properties can (but don't have to) contain other Attribute Values. - -# Identity Attributes - -The Attribute Values in this chapter can only be used in an [Identity Attribute]({% link _docs_integrate/61-data-model.md %}#identityattribute). - -## 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` | ✗ | see [`AffiliationRole`](#affiliationrole) | -| organization | `string` | ✓ | see [`AffiliationOrganization`](#affiliationorganization) | -| unit | `string` | ✗ | see [`AffiliationUnit`](#affiliationunit) | - -## AffiliationOrganization - -The organization the person is affiliated to. - -It is not recommended to send an AffiliationOrganization to another Identity by its own. Instead, send an [`Affiliation`](#affiliation) with the `organization` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | --------------------------- | :------: | ---------------- | -| `@type` | `"AffiliationOrganization"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -**Validation** - -## AffiliationRole - -The role the person has in the organization. - -It is not recommended to send an AffiliationRole to another Identity by its own. Instead, send an [`Affiliation`](#affiliation) with the `role` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ------------------- | :------: | ---------------- | -| `@type` | `"AffiliationRole"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## AffiliationUnit - -The organization unit the person is affiliated to. - -It is not recommended to send an AffiliationUnit to another Identity by its own. Instead, send an [`Affiliation`](#affiliation) with the `unit` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ------------------- | :------: | ---------------- | -| `@type` | `"AffiliationUnit"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## BirthCity - -The city of birth. - -It is not recommended to send a BirthCity to another Identity by its own. Instead, send a [`BirthPlace`](#birthplace) with the `city` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ------------- | :------: | ---------------- | -| `@type` | `"BirthCity"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## BirthCountry - -The country of birth. - -It is not recommended to send a BirthCountry to another Identity by its own. Instead, send a [`BirthPlace`](#birthplace) with the `country` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ---------------- | :------: | --------------------------------------------------------------------------------------------------------------------------- | -| `@type` | `"BirthCountry"` | ✓ | | -| `value` | `string` | ✓ | only [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) country codes | - -## BirthDate - -The birth date of a natural person. - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ------------- | :------: | ------------------------------- | -| `@type` | `"BirthDate"` | ✓ | | -| `day` | `number` | ✓ | see [`BirthDay`](#birthday) | -| `month` | `number` | ✓ | see [`BirthMonth`](#birthmonth) | -| `year` | `number` | ✓ | see [`BirthYear`](#birthyear) | - -## BirthDay - -The day of birth. - -It is not recommended to send a BirthDay to another Identity by its own. Instead, send a [`BirthDate`](#birthdate) with the `day` property set. -{: .notice--warning} - -| Name | Type | Required | Validation | -| ------- | ------------ | :------: | --------------------------------------- | -| `@type` | `"BirthDay"` | ✓ | | -| `value` | `number` | ✓ | min: 1
                max: 31
                must be an integer | - -## BirthMonth - -The day of month. - -It is not recommended to send a BirthMonth to another Identity by its own. Instead, send a [`BirthDate`](#birthdate) with the `month` property set. -{: .notice--warning} - -| Name | Type | Required | Validation | -| ------- | -------------- | :------: | --------------------------------------- | -| `@type` | `"BirthMonth"` | ✓ | | -| `value` | `number` | ✓ | min: 1
                max: 12
                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 BirthCity and BirthCountry and can optionally include a BirthState (e.g. if the BirthCity is ambiguous within the BirthCountry). - -**Properties** - -| Name | Type | Required | Validation | -| --------- | -------------- | :------: | ------------------------------- | -| `@type` | `"BirthPlace"` | ✓ | | -| `city` | `string` | ✓ see | [`BirthCity`](#birthcity) | -| `country` | `string` | ✓ see | [`BirthCountry`](#birthcountry) | -| `state` | `string` | ✗ see | [`BirthState`](#birthstate) | - -## BirthState - -The state of birth. - -It is not recommended to send a BirthState to another Identity by its own. Instead, send a [`BirthPlace`](#birthplace) with the `state` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | -------------- | :------: | ---------------- | -| `@type` | `"BirthState"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## BirthYear - -The year of birth in the Gregorian calendar. - -It is not recommended to send a BirthYear to another Identity by its own. Instead, send a [`BirthDate`](#birthdate) with the `year` property set. -{: .notice--warning} - -| Name | Type | Required | Validation | -| ------- | ------------- | :------: | ----------------------------------------- | -| `@type` | `"BirthYear"` | ✓ | | -| `value` | `number` | ✓ | min: 1
                max: 9999
                must be an integer | - -## 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](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) country codes | - -## City - -The name of a city. This is usually used as part of a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress). - -It is not recommended to send a City to another Identity by its own. Instead, send a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress) with the `city` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | -------- | :------: | ---------------- | -| `@type` | `"City"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## 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](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) language codes | - -## Country - -A country code according to the standard "ISO 3166-1 alpha-2". This is usually used as part of a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress). - -It is not recommended to send a Country to another Identity by its own. Instead, send a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress) with the `country` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ----------- | :------: | --------------------------------------------------------------------------------------------------------------------------- | -| `@type` | `"Country"` | ✓ | | -| `value` | `string` | ✓ | only [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) country 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` | ✓ | see [`ZipCode`](#zipcode) | -| `city` | `string` | ✓ | see [`City`](#city) | -| `country` | `string` | ✓ | see [`Country`](#country) | -| `phoneNumber` | `string` | ✗ | see [`PhoneNumber`](#phonenumber) | -| `state` | `string` | ✗ | see [`State`](#state) | - -## 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: 100
                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 - -A IdentityFileReference is a link to an Enmeshed [`File`]({% link _docs_integrate/61-data-model.md %}#files) 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. - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ------------------------- | :------: | ---------------- | -| `@type` | `"IdentityFileReference"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## 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. - -It is not recommended to send a GivenName to another Identity by its own. Instead, send a [`PersonName`](#personname) with the `givenName` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ------------- | :------: | ---------------- | -| `@type` | `"GivenName"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## HonorificPrefix - -The honorific prefix of a person, e.g. 'Sir'. - -It is not recommended to send a HonorificPrefix to another Identity by its own. Instead, send a [`PersonName`](#personname) with the `honorificPrefix` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ------------------- | :------: | ---------------- | -| `@type` | `"HonorificPrefix"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## HonorificSuffix - -The honorific suffix of a person, e.g. 'PhD' - -It is not recommended to send a HonorificSuffix to another Identity by its own. Instead, send a [`PersonName`](#personname) with the `honorificSuffix` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ------------------- | :------: | ---------------- | -| `@type` | `"HonorificSuffix"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## HouseNumber - -A house number. This is usually used as part of a [`StreetAddress`](#streetaddress). - -It is not recommended to send a HouseNumber to another Identity by its own. Instead, send a [`StreetAddress`](#streetaddress) with the `houseNumber` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | --------------- | :------: | ---------------- | -| `@type` | `"HouseNumber"` | ✓ | | -| `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. - -It is not recommended to send a MiddleName to another Identity by its own. Instead, send a [`PersonName`](#personname) with the `middleName` property set. -{: .notice--warning} - -**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](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) 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`](#givenname) | -| `middleName` | `string` | ✗ | see [`MiddleName`](#middlename) | -| `surname` | `string` | ✓ | see [`Surname`](#surname) | -| `honorificSuffix` | `string` | ✗ | see [`HonorificSuffix`](#honorificsuffix) | -| `honorificPrefix` | `string` | ✗ | see [`HonorificPrefix`](#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` | ✓ | see [`ZipCode`](#zipcode) | -| `city` | `string` | ✓ | see [`City`](#city) | -| `country` | `string` | ✓ | see [`Country`](#country) | -| `state` | `string` | ✗ | see [`State`](#state) | - -## 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`](#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 public gender of a natural person. - -Please be advised that the possible values are defined by the public laws and technical passport measures between countries.

                -We embrace the person’s own definition of its/her/his sexual and gender orientations. Therefore we have no “Gender” AttributeValueType (yet). We look forward in hearing your comments about this. -{: .notice--info} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | -------- | :------: | ------------------------------------------ | -| `@type` | `"Sex"` | ✓ | | -| `value` | `string` | ✓ | one of: `"intersex"`, `"female"`, `"male"` | - -## State - -The name of a state. This is usually used as part of a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress). - -It is not recommended to send a State to another Identity by its own. Instead, send a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress) with the `state` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | --------- | :------: | ---------------- | -| `@type` | `"State"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## Statement - -The statement allows a very generic digital mapping of facts - -**Properties** - -| Name | Type | Required | Validation | -| ------------------ | ------------- | :------: | ----------------------------------------------------------------------- | -| `@type` | `"Statement"` | ✓ | | -| `value` | `string` | ✓ | see [`StatementSubject`](#statementsubject) | -| `predicate` | `string` | ✓ | see [`StatementPredicate`](#statementpredicate) | -| `object` | `string` | ✓ | see [`StatementObject`](#statementobject) | -| `issuer` | `string` | ✓ | see [`DigitalIdentityDescriptor`](#statement-digitalidentitydescriptor) | -| `issuerConditions` | `string` | ✓ | see [`StatementIssuerConditions`](#statementissuerconditions) | - -## Statement DigitalIdentitydescriptor - -The issuer of a [`statement`](#statement). - -It is not recommended to send a DigitalIdentityDescriptor to another Identity by its own. Instead, send a [`statement`](#statement) -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------------ | ----------------------------- | :------: | ---------------------------------------------------- | -| `@type` | `"DigitalIdentityDescriptor"` | ✓ | | -| `address` | `string` | ✓ | The address of the identity that owns the statement. | -| `attributes` | `string []` | ✗ | see [`Identity Attributes`](#identity-attributes) | - -## StatementAuthorityType - -The authority type in [`StatementIssuerConditions`](#statementissuerconditions) - -It is not recommended to send a StatementAuthorityType to another Identity by its own. Instead, send a [`statement`](#statement) -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ------------- | :------: | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -| `@type` | `"Statement"` | ✓ | | -| `value` | `string` | ✓ | one of: `"ownAuthority"`, `"trustedAuthority"`, `"publicAuthority"`,`"relayedOwnAuthority"`, `"relayedTrustedAuthority"`, `"relayedPublicAuthority"` | - -## StatementEvidence - -The evidence in [`StatementIssuerConditions`](#statementissuerconditions) - -It is not recommended to send a StatementEvidence to another Identity by its own. Instead, send a [`statement`](#statement) -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | --------------------- | :------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `@type` | `"StatementEvidence"` | ✓ | | -| `value` | `string` | ✓ | one of: `"ownFact"`, `"digitalPublicIDCard"`, `"digitalPublicDocument"`,`"digitalDocument"`, `"sightCheckOfPublicIDCard"`, `"sightCheckOfPublicDocument"`,`"sightCheckOfDocument"`, `"mediaOfPublicIDCard"`, `"mediaOfPublicDocument"`, `"mediaOfDocument"` | - -## StatementIssuerConditions - -The issuer conditions in a [`Statement`](#statement) - -It is not recommended to send a StatementIssuerConditions to another Identity by its own. Instead, send a [`statement`](#statement) -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| --------------- | ----------------------------- | :------: | ----------------------------------------------------------------------- | -| `@type` | `"StatementIssuerConditions"` | ✓ | | -| `validFrom` | `string` | ✓ | The date from which on the Attribute is valid. | -| `validTo` | `string` | ✓ | The date until this Attribute is valid | -| `evidence` | `string` | ✓ | see [`StatementEvidence`](#statementevidence) | -| `authorityType` | `string` | ✓ | see [`StatementAuthorityType`](#statementauthoritytype) | -| `relayedParty` | `string` | ✗ | see [`DigitalIdentityDescriptor`](#statement-digitalidentitydescriptor) | - -## StatementObject - -The object of a [`statement`](#statement). - -It is not recommended to send a object to another Identity by its own. Instead, send a [`statement`](#statement) -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------------ | ------------------- | :------: | ---------------------------------------------------- | -| `@type` | `"StatementObject"` | ✓ | | -| `address` | `string` | ✓ | The address of the identity that owns the statement. | -| `attributes` | `string []` | ✗ | see [`Identity Attributes`](#identity-attributes) | - -## StatementPredicate - -The predicate of a [`statement`](#statement). - -It is not recommended to send a predicate to another Identity by its own. Instead, send a [`statement`](#statement) -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ---------------------- | :------: | ----------------------------------------------------------------------------------------- | -| `@type` | `"StatementPredicate"` | ✓ | | -| `value` | `string` | ✓ | one of: `"hasAttribute"`, `"relatesTo"`, `"isRelatedTo"` or any string starting with "z-" | - -## StatementSubject - -The subject of a [`statement`](#statement). - -It is not recommended to send a subject to another Identity by its own. Instead, send a [`statement`](#statement) -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------------ | -------------------- | :------: | ---------------------------------------------------- | -| `@type` | `"StatementSubject"` | ✓ | | -| `address` | `string` | ✓ | The address of the identity that owns the statement. | -| `attributes` | `string []` | ✗ | see [`Identity Attributes`](#identity-attributes) | - -## Street - -A street name. This is usually used as part of a [`StreetAddress`](#streetaddress). - -It is not recommended to send a Street to another Identity by its own. Instead, send a [`StreetAddress`](#streetaddress) with the `street` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ---------- | :------: | ---------------- | -| `@type` | `"Street"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -## 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` | ✓ | see [`Street`](#street) | -| `houseNo` | `string` | ✓ | see [`HouseNumber`](#housenumber) | -| `zipCode` | `string` | ✓ | see [`ZipCode`](#zipcode) | -| `city` | `string` | ✓ | see [`City`](#city) | -| `country` | `string` | ✓ | see [`Country`](#country) | -| `state` | `string` \| `undefined` | ✓ | see [`State`](#state) | - -## Surname - -The Surname, also called family name or last name, is the portion of the personal name that indicates the family, tribe or community. - -It is not recommended to send a Surname to another Identity by its own. Instead, send a [`PersonName`](#personname) with the `surname` property set. -{: .notice--warning} - -**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 | - -## ZipCode - -A zip code. This is usually used as part of a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress). - -It is not recommended to send a ZipCode to another Identity by its own. Instead, send a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress) with the `zipCode` property set. -{: .notice--warning} - -**Properties** - -| Name | Type | Required | Validation | -| ------- | ----------- | :------: | ---------------- | -| `@type` | `"ZipCode"` | ✓ | | -| `value` | `string` | ✓ | max. length: 100 | - -# Relationship Attributes - -The Attribute Values in this chapter can only be used in a [Relationship Attribute]({% link _docs_integrate/61-data-model.md %}#relationshipattribute). 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`]({% link _docs_integrate/61-data-model.md %}#valuehints). - -## Consent - -Represents the consent of a person to a specific topic. If you want to obtain a consent, you can send a [`ReadAttributeRequestItem`]({% link _docs_integrate/62-request-items.md %}#readattributerequestitem) with a Consent-[RelationshipAttribute]({% link _docs_integrate/61-data-model.md %}#relationshipattribute) where the owner is the peer. - -**Properties** - -| Name | Type | Required | Validation | -| -------------------- | -------------------------------------------------------------------------------------- | :------: | ---------------------------------------------------------- | -| `@type` | `"Consent"` | ✓ | | -| `consent` | `string` | ✓ | max. length: 2000 | -| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/61-data-model.md %}#valuehintsoverride) | ✗ | | -| `link` | `string` | ✗ | min. length: 3
                max. length: 1024
                must be a valid URL | - -## ProprietaryBoolean - -An arbitrary boolean value. - -**Properties** - -| Name | Type | Required | Validation | -| -------------------- | -------------------------------------------------------------------------------------- | :------: | ----------------- | -| `@type` | `"ProprietaryBoolean"` | ✓ | | -| `title` | `string` | ✓ | max. length: 100 | -| `description` | `string` | ✗ | max. length: 1000 | -| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/61-data-model.md %}#valuehintsoverride) | ✗ | | -| `value` | `boolean` | ✓ | | - -## ProprietaryCountry - -A two-letter country code according to [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements). - -**Properties** - -| Name | Type | Required | Validation | -| -------------------- | -------------------------------------------------------------------------------------- | :------: | --------------------------------------------------------------------------------------------------------------------------- | -| `@type` | `"ProprietaryCountry"` | ✓ | | -| `title` | `string` | ✓ | max. length: 100 | -| `description` | `string` | ✗ | max. length: 1000 | -| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/61-data-model.md %}#valuehintsoverride) | ✗ | | -| `value` | `string` | ✓ | only [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) 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`]({% link _docs_integrate/61-data-model.md %}#valuehintsoverride) | ✗ | | -| `value` | `string` | ✓ | min. length: 3
                max. length: 100
                must match `^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,}$` | - -## ProprietaryFileReference - -A FileReference is a link to an Enmeshed [`File`]({% link _docs_integrate/61-data-model.md %}#files) and can be used to add a File as an Attribute of a Relationship. - -**Properties** - -| Name | Type | Required | Validation | -| -------------------- | -------------------------------------------------------------------------------------- | :------: | ----------------- | -| `@type` | `"ProprietaryFileReference"` | ✓ | | -| `title` | `string` | ✓ | max. length: 100 | -| `description` | `string` | ✗ | max. length: 1000 | -| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/61-data-model.md %}#valuehintsoverride) | ✗ | | -| `value` | `string` | ✓ | max. length: 100 | - -## 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`]({% link _docs_integrate/61-data-model.md %}#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`]({% link _docs_integrate/61-data-model.md %}#valuehintsoverride) | ✗ | | -| `value` | `string` | ✓ | min.length: 4
                must match `^#([0-9A-F]{3}){1,2}$`
                max. length: 100 | - -## ProprietaryInteger - -An arbitrary integer number. - -**Properties** - -| Name | Type | Required | Validation | -| -------------------- | -------------------------------------------------------------------------------------- | :------: | ------------------ | -| `@type` | `"ProprietaryInteger"` | ✓ | | -| `title` | `string` | ✓ | max. length: 100 | -| `description` | `string` | ✗ | max. length: 1000 | -| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/61-data-model.md %}#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** - -```jsonc -{ - "@type": "ProprietaryJSON", - "title": "My JSON", - // length: 94 - "value": { - "foo": "bar", - "baz": 123, - "qux": true, - "quux": { - "corge": "grault" - }, - "garply": ["waldo", "fred", "plugh"] - } -} -``` - -```jsonc -{ - "@type": "ProprietaryJSON", - "title": "My JSON", - // length: 8 - "value": "a string" -} -``` - -```jsonc -{ - "@type": "ProprietaryJSON", - "title": "My JSON", - // length: 28 - "value": ["a string", 1, { "foo": "bar" }] -} -``` - -## ProprietaryLanguage - -A two-letter [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) language code. - -**Properties** - -| Name | Type | Required | Validation | -| -------------------- | -------------------------------------------------------------------------------------- | :------: | -------------------------------------------------------------------------------------- | -| `@type` | `"ProprietaryLanguage"` | ✓ | | -| `title` | `string` | ✓ | max. length: 100 | -| `description` | `string` | ✗ | max. length: 1000 | -| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/61-data-model.md %}#valuehintsoverride) | ✗ | | -| `value` | `string` | ✓ | only [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) 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`]({% link _docs_integrate/61-data-model.md %}#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`]({% link _docs_integrate/61-data-model.md %}#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`]({% link _docs_integrate/61-data-model.md %}#valuehintsoverride) | ✗ | | -| `value` | `string` | ✓ | min. length: 3
                max. length: 1024
                must be a valid URL | - -## ProprietaryXML - -A XML. - -**Properties** - -| Name | Type | Required | Validation | -| -------------------- | -------------------------------------------------------------------------------------- | :------: | ---------------------------------------------------------- | -| `@type` | `"ProprietaryXML"` | ✓ | | -| `title` | `string` | ✓ | max. length: 100 | -| `description` | `string` | ✗ | max. length: 1000 | -| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/61-data-model.md %}#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 | diff --git a/_docs_integrate/access-the-connector.md b/_docs_integrate/access-the-connector.md new file mode 100644 index 000000000..8a595820a --- /dev/null +++ b/_docs_integrate/access-the-connector.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/access-the-connector +redirect_from: /integrate/connector-api +published: true +title: "Access the Connector" +type: scenario +toc: true +properties: + - id: SC075 + - category: 1Getting Started + - description: https//enmeshed.eu/integrate/connector-api + - customer: + - component: integrate + - level: + - implementation status: DOCS ONLY + - documentation status: + - published: true + - link: integrate/access-the-connector +require: +required_by: +--- + +{% include scenarios/integrate/access-the-connector.md %} diff --git a/_docs_integrate/attribute-values.md b/_docs_integrate/attribute-values.md new file mode 100644 index 000000000..a428ffe24 --- /dev/null +++ b/_docs_integrate/attribute-values.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/attribute-values +redirect_from: /integrate/data-model-attribute-values +published: true +title: "Attribute Values" +type: scenario +toc: true +properties: + - id: SC092 + - category: Data Model + - description: https//enmeshed.eu/integrate/data-model-attribute-values + - customer: + - component: integrate + - level: + - implementation status: + - documentation status: + - published: true + - link: integrate/attribute-values +require: +required_by: +--- + +{% include scenarios/integrate/attribute-values.md %} diff --git a/_docs_integrate/automate-request-handling.md b/_docs_integrate/automate-request-handling.md new file mode 100644 index 000000000..383237b5d --- /dev/null +++ b/_docs_integrate/automate-request-handling.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/automate-request-handling +published: false +title: "Automate request handling" +type: scenario +toc: true +properties: + - id: SC042 + - category: Working with requests + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: integrate/automate-request-handling +require: +required_by: +--- + +{% include scenarios/integrate/automate-request-handling.md %} diff --git a/_docs_integrate/automated-authentication-management-with-external-system.md b/_docs_integrate/automated-authentication-management-with-external-system.md new file mode 100644 index 000000000..cb6726651 --- /dev/null +++ b/_docs_integrate/automated-authentication-management-with-external-system.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/automated-authentication-management-with-external-system +published: false +title: "Automated authentication management with external system" +type: scenario +toc: true +properties: + - id: SC035 + - category: Requesting authentication + - description: + - customer: All + - component: integrate + - level: Expert + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/automated-authentication-management-with-external-system +require: +required_by: +--- + +{% include scenarios/integrate/automated-authentication-management-with-external-system.md %} diff --git a/_docs_integrate/automated-consent-management-with-external-system.md b/_docs_integrate/automated-consent-management-with-external-system.md new file mode 100644 index 000000000..a5aa5ad73 --- /dev/null +++ b/_docs_integrate/automated-consent-management-with-external-system.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/automated-consent-management-with-external-system +published: false +title: "Automated consent management with external system" +type: scenario +toc: true +properties: + - id: SC031 + - category: Requesting consent of users + - description: + - customer: All + - component: integrate + - level: Expert + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/automated-consent-management-with-external-system +require: +required_by: +--- + +{% include scenarios/integrate/automated-consent-management-with-external-system.md %} diff --git a/_docs_integrate/connector-events.md b/_docs_integrate/connector-events.md new file mode 100644 index 000000000..6041b2972 --- /dev/null +++ b/_docs_integrate/connector-events.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/connector-events +redirect_from: /integrate/connector-events +published: true +title: "Connector Events" +type: scenario +toc: true +properties: + - id: SC043 + - category: Data Model + - description: https//enmeshed.eu/integrate/connector-events + - customer: All + - component: integrate + - level: Advanced + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: true + - link: integrate/connector-events +require: +required_by: +--- + +{% include scenarios/integrate/connector-events.md %} diff --git a/_docs_integrate/create-attribute-for-peer.md b/_docs_integrate/create-attribute-for-peer.md new file mode 100644 index 000000000..8ba01fa83 --- /dev/null +++ b/_docs_integrate/create-attribute-for-peer.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/create-attribute-for-peer +published: false +title: "Create attribute for peer" +type: scenario +toc: true +properties: + - id: SC067 + - category: Manage attributes of others + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: CHANGES REQUIRED + - documentation status: OPEN + - published: + - link: integrate/create-attribute-for-peer +require: +required_by: +--- + +{% include scenarios/integrate/create-attribute-for-peer.md %} diff --git a/_docs_integrate/create-own-identityattribute.md b/_docs_integrate/create-own-identityattribute.md new file mode 100644 index 000000000..b23aa5f83 --- /dev/null +++ b/_docs_integrate/create-own-identityattribute.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/create-own-identityattribute +published: false +title: "Create own IdentityAttribute" +type: scenario +toc: true +properties: + - id: SC049 + - category: Manage attributes of yourself + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/create-own-identityattribute +require: +required_by: +--- + +{% include scenarios/integrate/create-own-identityattribute.md %} diff --git a/_docs_integrate/creating-complex-requests.md b/_docs_integrate/creating-complex-requests.md new file mode 100644 index 000000000..3d137a146 --- /dev/null +++ b/_docs_integrate/creating-complex-requests.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/creating-complex-requests +published: false +title: "Creating complex requests" +type: scenario +toc: true +properties: + - id: SC039 + - category: Working with requests + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/creating-complex-requests +require: +required_by: +--- + +{% include scenarios/integrate/creating-complex-requests.md %} diff --git a/_docs_integrate/data-model-overview.md b/_docs_integrate/data-model-overview.md new file mode 100644 index 000000000..b77f8255d --- /dev/null +++ b/_docs_integrate/data-model-overview.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/data-model-overview +redirect_from: /integrate/data-model-overview +published: true +title: "Data Model Overview" +type: scenario +toc: true +properties: + - id: SC090 + - category: Data Model + - description: https//enmeshed.eu/integrate/data-model-overview + - customer: + - component: integrate + - level: + - implementation status: + - documentation status: + - published: true + - link: integrate/data-model-overview +require: +required_by: +--- + +{% include scenarios/integrate/data-model-overview.md %} diff --git a/_docs_integrate/delete-identity-from-enmeshed.md b/_docs_integrate/delete-identity-from-enmeshed.md new file mode 100644 index 000000000..17e3bad13 --- /dev/null +++ b/_docs_integrate/delete-identity-from-enmeshed.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/delete-identity-from-enmeshed +published: false +title: "Delete Identity from enmeshed" +type: scenario +toc: true +properties: + - id: SC061 + - category: Identity Basics + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: integrate/delete-identity-from-enmeshed +require: +required_by: +--- + +{% include scenarios/integrate/delete-identity-from-enmeshed.md %} diff --git a/_docs_integrate/diagrams/Connector_API_!Template.pu b/_docs_integrate/diagrams/Connector_API_!Template.pu index fcf55cfbf..d913cb990 100644 --- a/_docs_integrate/diagrams/Connector_API_!Template.pu +++ b/_docs_integrate/diagrams/Connector_API_!Template.pu @@ -13,8 +13,8 @@ participant "Enmeshed\nApp" as app actor "User" as user == Prerequisites == -backbone <--> connector: Verified Enmeshed Corporate Identity -connector <--> user: Existing Enmeshed Relationship +backbone <--> connector: Verified enmeshed Corporate Identity +connector <--> user: Existing enmeshed Relationship == Template == diff --git a/_docs_integrate/diagrams/Connector_API_AcceptRelationshipRequest.pu b/_docs_integrate/diagrams/Connector_API_AcceptRelationshipRequest.pu index e2313329a..beb71b9e8 100644 --- a/_docs_integrate/diagrams/Connector_API_AcceptRelationshipRequest.pu +++ b/_docs_integrate/diagrams/Connector_API_AcceptRelationshipRequest.pu @@ -11,7 +11,7 @@ end box participant "Enmeshed\nBackbone" as backbone == Prerequisites == -backbone <-> connector: Verified Enmeshed Organization Identity +backbone <-> connector: Verified enmeshed Organization Identity == Accept Relationship Request == diff --git a/_docs_integrate/diagrams/Connector_API_CreateRelationshipRequest.pu b/_docs_integrate/diagrams/Connector_API_CreateRelationshipRequest.pu index a7ed1e935..fb079287d 100644 --- a/_docs_integrate/diagrams/Connector_API_CreateRelationshipRequest.pu +++ b/_docs_integrate/diagrams/Connector_API_CreateRelationshipRequest.pu @@ -11,7 +11,7 @@ end box participant "Enmeshed\nBackbone" as backbone == Prerequisites == -backbone <-> connector: Verified Enmeshed Organization Identity +backbone <-> connector: Verified enmeshed Organization Identity == Create Relationship Request == diff --git a/_docs_integrate/diagrams/Connector_API_CreateTemplate.pu b/_docs_integrate/diagrams/Connector_API_CreateTemplate.pu index 297ccca6d..9f966b7fc 100644 --- a/_docs_integrate/diagrams/Connector_API_CreateTemplate.pu +++ b/_docs_integrate/diagrams/Connector_API_CreateTemplate.pu @@ -11,7 +11,7 @@ end box participant "Enmeshed\nBackbone" as backbone == Prerequisites == -backbone <-> connector: Verified Enmeshed Organization Identity +backbone <-> connector: Verified enmeshed Organization Identity == Create Template == diff --git a/_docs_integrate/diagrams/Connector_API_GetMessage.pu b/_docs_integrate/diagrams/Connector_API_GetMessage.pu index 2c24ce29b..9462954df 100644 --- a/_docs_integrate/diagrams/Connector_API_GetMessage.pu +++ b/_docs_integrate/diagrams/Connector_API_GetMessage.pu @@ -12,8 +12,8 @@ participant "Enmeshed\nBackbone" as backbone actor "Sender" as user == Prerequisites == -backbone <-> connector: Verified Enmeshed Organization Identity -connector <-> user: Existing Enmeshed Relationship +backbone <-> connector: Verified enmeshed Organization Identity +connector <-> user: Existing enmeshed Relationship == Send Message == diff --git a/_docs_integrate/diagrams/Connector_API_GetOpenRelationshipRequests.pu b/_docs_integrate/diagrams/Connector_API_GetOpenRelationshipRequests.pu index 62fcfe465..6608b8a8a 100644 --- a/_docs_integrate/diagrams/Connector_API_GetOpenRelationshipRequests.pu +++ b/_docs_integrate/diagrams/Connector_API_GetOpenRelationshipRequests.pu @@ -11,7 +11,7 @@ end box participant "Enmeshed\nBackbone" as backbone == Prerequisites == -backbone <-> connector: Verified Enmeshed Organization Identity +backbone <-> connector: Verified enmeshed Organization Identity == Get Open Relationship Requests == diff --git a/_docs_integrate/diagrams/Connector_API_GetTemplate.pu b/_docs_integrate/diagrams/Connector_API_GetTemplate.pu index 412ac4106..f64fcd760 100644 --- a/_docs_integrate/diagrams/Connector_API_GetTemplate.pu +++ b/_docs_integrate/diagrams/Connector_API_GetTemplate.pu @@ -11,7 +11,7 @@ end box participant "Enmeshed\nBackbone" as backbone == Prerequisites == -backbone <-> connector: Verified Enmeshed Organization Identity +backbone <-> connector: Verified enmeshed Organization Identity == Get Template == diff --git a/_docs_integrate/diagrams/Connector_API_PreRelationshipOverview.pu b/_docs_integrate/diagrams/Connector_API_PreRelationshipOverview.pu index f80d5456c..fe605be89 100644 --- a/_docs_integrate/diagrams/Connector_API_PreRelationshipOverview.pu +++ b/_docs_integrate/diagrams/Connector_API_PreRelationshipOverview.pu @@ -21,7 +21,7 @@ participant "Enmeshed\nBackbone" as backbone == Prerequisites == -backbone <-> connector: Verified Enmeshed Organization Identity +backbone <-> connector: Verified enmeshed Organization Identity == Pre-Relationship == @@ -78,7 +78,7 @@ backbone -- app -- == Outcome == -browser <--> backend: Knowledge of\nEnmeshed Relationship -app <--> connector: Trusted, bi-directional Enmeshed relationship +browser <--> backend: Knowledge of\nenmeshed Relationship +app <--> connector: Trusted, bi-directional enmeshed relationship @enduml \ No newline at end of file diff --git a/_docs_integrate/diagrams/Connector_API_ReceiveMessage.pu b/_docs_integrate/diagrams/Connector_API_ReceiveMessage.pu index 169e27cd6..c0c88f716 100644 --- a/_docs_integrate/diagrams/Connector_API_ReceiveMessage.pu +++ b/_docs_integrate/diagrams/Connector_API_ReceiveMessage.pu @@ -13,8 +13,8 @@ actor "Sender" as user activate connector == Prerequisites == -backbone <-> connector: Verified Enmeshed Organization Identity -connector <-> user: Existing Enmeshed Relationship +backbone <-> connector: Verified enmeshed Organization Identity +connector <-> user: Existing enmeshed Relationship diff --git a/_docs_integrate/diagrams/Connector_API_ReceiveRelationshipRequest.pu b/_docs_integrate/diagrams/Connector_API_ReceiveRelationshipRequest.pu index 58d1d2f22..175bc6044 100644 --- a/_docs_integrate/diagrams/Connector_API_ReceiveRelationshipRequest.pu +++ b/_docs_integrate/diagrams/Connector_API_ReceiveRelationshipRequest.pu @@ -11,7 +11,7 @@ end box participant "Enmeshed\nBackbone" as backbone == Prerequisites == -backbone <-> connector: Verified Enmeshed Organization Identity +backbone <-> connector: Verified enmeshed Organization Identity == Receive Relationship Request == diff --git a/_docs_integrate/diagrams/Connector_API_SendMessage.pu b/_docs_integrate/diagrams/Connector_API_SendMessage.pu index a72692266..4e2518370 100644 --- a/_docs_integrate/diagrams/Connector_API_SendMessage.pu +++ b/_docs_integrate/diagrams/Connector_API_SendMessage.pu @@ -12,8 +12,8 @@ participant "Enmeshed\nBackbone" as backbone actor "Recipient" as user == Prerequisites == -backbone <-> connector: Verified Enmeshed Organization Identity -connector <-> user: Existing Enmeshed Relationship +backbone <-> connector: Verified enmeshed Organization Identity +connector <-> user: Existing enmeshed Relationship == Send Message == diff --git a/_docs_integrate/diagrams/Connector_Flow_CreateAuthToken.pu b/_docs_integrate/diagrams/Connector_Flow_CreateAuthToken.pu index ad62781af..99f1e95d9 100644 --- a/_docs_integrate/diagrams/Connector_Flow_CreateAuthToken.pu +++ b/_docs_integrate/diagrams/Connector_Flow_CreateAuthToken.pu @@ -14,8 +14,8 @@ end box == Prerequisites == -app <--> connector: Enmeshed Relationship -website <--> connector: Enmeshed Integration +app <--> connector: enmeshed Relationship +website <--> connector: enmeshed Integration autonumber @@ -29,7 +29,7 @@ the provided signature of the consumer was not created in the past. -Thus, the trusted Enmeshed +Thus, the trusted enmeshed platform creates the timestamps. end note @@ -42,8 +42,8 @@ website -> connector++: Check login token connector -> connector: Verify token\nsignature connector -> platform++: Check random id platform --> connector --: OK -connector -> website --: Login OK\nEnmeshed Address xyz -browser <--> website: Login Session for Enmeshed Address xyz +connector -> website --: Login OK\nenmeshed Address xyz +browser <--> website: Login Session for enmeshed Address xyz diff --git a/_docs_integrate/diagrams/Connector_Flow_UpgradeProfile.pu b/_docs_integrate/diagrams/Connector_Flow_UpgradeProfile.pu index 7807680d3..95134d8ca 100644 --- a/_docs_integrate/diagrams/Connector_Flow_UpgradeProfile.pu +++ b/_docs_integrate/diagrams/Connector_Flow_UpgradeProfile.pu @@ -14,15 +14,15 @@ participant "Enmeshed\nApp" as app actor "User" as user == Rahmenbedinungen == -backbone <-> connector: Enmeshed Connector hat eine\ndigitale Identität der Organisation.\nEnmeshed Plattform kennt diese. -connector <-> backend: Bestehende Systeme sind\nüber Integrationsmodule\nmit Enmeshed Connector verbunden +backbone <-> connector: enmeshed Connector hat eine\ndigitale Identität der Organisation.\nenmeshed Plattform kennt diese. +connector <-> backend: Bestehende Systeme sind\nüber Integrationsmodule\nmit enmeshed Connector verbunden == Enmeshed Onboarding == -user -> website: Möchte Enmeshed Verknüpfung +user -> website: Möchte enmeshed Verknüpfung activate website -website -> backend: Enmeshed Verknüpfung eingehen +website -> backend: enmeshed Verknüpfung eingehen activate backend backend -> connector: Generiere Template für Nutzer\n(mit Nutzerdaten & Random Token) backend -> backend: Verknüpft Random Token\nund SessionID @@ -39,7 +39,7 @@ deactivate backend website --> user: QR-Code und Link -user -> app: Installiert & startet Enmeshed App +user -> app: Installiert & startet enmeshed App activate app app -> app: Erstellt Identität\n(falls keine vorhanden) app -> backbone: Registriert Identität @@ -56,7 +56,7 @@ deactivate backbone app -> app: Entschlüsselung\nTemplate app --> user: Anzeige Template user -> app: Annahme Template -app -> app: Daten aufbereiten\nEnmeshed Adresse\nevtl. Daten des Nutzers +app -> app: Daten aufbereiten\nenmeshed Adresse\nevtl. Daten des Nutzers app -> app: Beziehung vorbereiten app -> app: Anfrage verschlüsseln app -> backbone: Anfrage senden @@ -71,9 +71,9 @@ connector -> connector: Anfrage entschlüsseln connector -> connector: Anfrage prüfen connector -> backend: Anfrage weitergeben activate backend -backend -> backend: Mapping Enmeshed Adresse\nmit RandomToken\nmit UserID -backend -> website: Enmeshed Anfrage angekommen -website -> user: Enmeshed Anfrage angekommen +backend -> backend: Mapping enmeshed Adresse\nmit RandomToken\nmit UserID +backend -> website: enmeshed Anfrage angekommen +website -> user: enmeshed Anfrage angekommen backend --> connector: OK deactivate backend connector -> connector: Beziehung vorbereiten diff --git a/_docs_integrate/error-codes.md b/_docs_integrate/error-codes.md new file mode 100644 index 000000000..2eed4e7db --- /dev/null +++ b/_docs_integrate/error-codes.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/error-codes +redirect_from: /integrate/error-codes +published: true +title: "Error Codes" +type: scenario +toc: true +properties: + - id: SC089 + - category: Troubleshooting + - description: https//enmeshed.eu/integrate/error-codes + - customer: + - component: integrate + - level: + - implementation status: + - documentation status: + - published: true + - link: integrate/error-codes +require: +required_by: +--- + +{% include scenarios/integrate/error-codes.md %} diff --git a/_docs_integrate/event-introduction.md b/_docs_integrate/event-introduction.md new file mode 100644 index 000000000..723657421 --- /dev/null +++ b/_docs_integrate/event-introduction.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/event-introduction +published: false +title: "Event introduction" +type: scenario +toc: true +properties: + - id: SC096 + - category: 1Getting Started + - description: + - customer: + - component: integrate + - level: + - implementation status: + - documentation status: + - published: + - link: integrate/event-introduction +require: +required_by: +--- + +{% include scenarios/integrate/event-introduction.md %} diff --git a/_docs_integrate/faq.md b/_docs_integrate/faq.md new file mode 100644 index 000000000..177c154aa --- /dev/null +++ b/_docs_integrate/faq.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/faq +published: false +title: "FAQ" +type: scenario +toc: true +properties: + - id: SC097 + - category: Troubleshooting + - description: + - customer: + - component: integrate + - level: + - implementation status: + - documentation status: + - published: + - link: integrate/faq +require: +required_by: +--- + +{% include scenarios/integrate/faq.md %} diff --git a/_docs_integrate/get-users-who-did-not-consent-to-latest-version.md b/_docs_integrate/get-users-who-did-not-consent-to-latest-version.md new file mode 100644 index 000000000..79c05dfaa --- /dev/null +++ b/_docs_integrate/get-users-who-did-not-consent-to-latest-version.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/get-users-who-did-not-consent-to-latest-version +published: false +title: "Get users who did not consent to latest version" +type: scenario +toc: true +properties: + - id: SC029 + - category: Requesting consent of users + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/get-users-who-did-not-consent-to-latest-version +require: +required_by: +--- + +{% include scenarios/integrate/get-users-who-did-not-consent-to-latest-version.md %} diff --git a/_docs_integrate/identityattribute-introduction.md b/_docs_integrate/identityattribute-introduction.md new file mode 100644 index 000000000..4820caed3 --- /dev/null +++ b/_docs_integrate/identityattribute-introduction.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/identityattribute-introduction +published: false +title: "IdentityAttribute introduction" +type: scenario +toc: true +properties: + - id: SC047 + - category: Manage attributes of yourself + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: integrate/identityattribute-introduction +require: +required_by: +--- + +{% include scenarios/integrate/identityattribute-introduction.md %} diff --git a/_docs_integrate/integration-example.md b/_docs_integrate/integration-example.md new file mode 100644 index 000000000..1119ad792 --- /dev/null +++ b/_docs_integrate/integration-example.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/integration-example +redirect_from: /integrate/connector-tutorial +published: true +title: "Integration example" +type: scenario +toc: true +properties: + - id: SC095 + - category: 1Getting Started + - description: https//enmeshed.eu/integrate/connector-tutorial + - customer: + - component: integrate + - level: + - implementation status: + - documentation status: + - published: true + - link: integrate/integration-example +require: +required_by: +--- + +{% include scenarios/integrate/integration-example.md %} diff --git a/_docs_integrate/notify-service-of-enmeshed-event.md b/_docs_integrate/notify-service-of-enmeshed-event.md new file mode 100644 index 000000000..3aaa17cad --- /dev/null +++ b/_docs_integrate/notify-service-of-enmeshed-event.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/notify-service-of-enmeshed-event +published: false +title: "Notify service of enmeshed event" +type: scenario +toc: true +properties: + - id: SC044 + - category: Handling events + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/notify-service-of-enmeshed-event +require: +required_by: +--- + +{% include scenarios/integrate/notify-service-of-enmeshed-event.md %} diff --git a/_docs_integrate/overview-of-attribute-values.md b/_docs_integrate/overview-of-attribute-values.md new file mode 100644 index 000000000..52e6afdc1 --- /dev/null +++ b/_docs_integrate/overview-of-attribute-values.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/overview-of-attribute-values +published: false +title: "Overview of Attribute Values" +type: scenario +toc: true +properties: + - id: SC048 + - category: Manage attributes of yourself + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: integrate/overview-of-attribute-values +require: +required_by: +--- + +{% include scenarios/integrate/overview-of-attribute-values.md %} diff --git a/_docs_integrate/overview-of-consent-possibilities.md b/_docs_integrate/overview-of-consent-possibilities.md new file mode 100644 index 000000000..4e8cd7b78 --- /dev/null +++ b/_docs_integrate/overview-of-consent-possibilities.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/overview-of-consent-possibilities +published: false +title: "Overview of consent possibilities" +type: scenario +toc: true +properties: + - id: SC024 + - category: Requesting consent of users + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: integrate/overview-of-consent-possibilities +require: +required_by: +--- + +{% include scenarios/integrate/overview-of-consent-possibilities.md %} diff --git a/_docs_integrate/overview-of-request-items.md b/_docs_integrate/overview-of-request-items.md new file mode 100644 index 000000000..9ef1c8a79 --- /dev/null +++ b/_docs_integrate/overview-of-request-items.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/overview-of-request-items +published: false +title: "Overview of request items" +type: scenario +toc: true +properties: + - id: SC038 + - category: Working with requests + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: integrate/overview-of-request-items +require: +required_by: +--- + +{% include scenarios/integrate/overview-of-request-items.md %} diff --git a/_docs_integrate/prepare-enmeshed-onboarding-package.md b/_docs_integrate/prepare-enmeshed-onboarding-package.md new file mode 100644 index 000000000..8b67dfb79 --- /dev/null +++ b/_docs_integrate/prepare-enmeshed-onboarding-package.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/prepare-enmeshed-onboarding-package +published: false +title: "Prepare enmeshed onboarding package" +type: scenario +toc: true +properties: + - id: SC074 + - category: Get in touch with other Identities + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/prepare-enmeshed-onboarding-package +require: +required_by: +--- + +{% include scenarios/integrate/prepare-enmeshed-onboarding-package.md %} diff --git a/_docs_integrate/process-incoming-attribute-deletion-requests.md b/_docs_integrate/process-incoming-attribute-deletion-requests.md new file mode 100644 index 000000000..870c73b21 --- /dev/null +++ b/_docs_integrate/process-incoming-attribute-deletion-requests.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/process-incoming-attribute-deletion-requests +published: false +title: "Process incoming Attribute deletion requests" +type: scenario +toc: true +properties: + - id: SC055 + - category: Handling data deletion + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: integrate/process-incoming-attribute-deletion-requests +require: +required_by: +--- + +{% include scenarios/integrate/process-incoming-attribute-deletion-requests.md %} diff --git a/_docs_integrate/process-incoming-relationship-deletion-requests.md b/_docs_integrate/process-incoming-relationship-deletion-requests.md new file mode 100644 index 000000000..7b54db6f1 --- /dev/null +++ b/_docs_integrate/process-incoming-relationship-deletion-requests.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/process-incoming-relationship-deletion-requests +published: false +title: "Process incoming Relationship deletion requests" +type: scenario +toc: true +properties: + - id: SC056 + - category: Handling data deletion + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: integrate/process-incoming-relationship-deletion-requests +require: +required_by: +--- + +{% include scenarios/integrate/process-incoming-relationship-deletion-requests.md %} diff --git a/_docs_integrate/process-received-enmeshed-onboarding-package-and-create-relationship.md b/_docs_integrate/process-received-enmeshed-onboarding-package-and-create-relationship.md new file mode 100644 index 000000000..e87112494 --- /dev/null +++ b/_docs_integrate/process-received-enmeshed-onboarding-package-and-create-relationship.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/process-received-enmeshed-onboarding-package-and-create-relationship +published: false +title: "Process received enmeshed onboarding package and create relationship" +type: scenario +toc: true +properties: + - id: SC064 + - category: Get in touch with other Identities + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/process-received-enmeshed-onboarding-package-and-create-relationship +require: +required_by: +--- + +{% include scenarios/integrate/process-received-enmeshed-onboarding-package-and-create-relationship.md %} diff --git a/_docs_integrate/process-responses-to-outgoing-requests.md b/_docs_integrate/process-responses-to-outgoing-requests.md new file mode 100644 index 000000000..b8b5646a9 --- /dev/null +++ b/_docs_integrate/process-responses-to-outgoing-requests.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/process-responses-to-outgoing-requests +published: false +title: "Process responses to outgoing requests" +type: scenario +toc: true +properties: + - id: SC040 + - category: Working with requests + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/process-responses-to-outgoing-requests +require: +required_by: +--- + +{% include scenarios/integrate/process-responses-to-outgoing-requests.md %} diff --git a/_docs_integrate/propose-attribute-to-peer.md b/_docs_integrate/propose-attribute-to-peer.md new file mode 100644 index 000000000..201defd72 --- /dev/null +++ b/_docs_integrate/propose-attribute-to-peer.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/propose-attribute-to-peer +published: false +title: "Propose attribute to peer" +type: scenario +toc: true +properties: + - id: SC066 + - category: Manage attributes of others + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: CHANGES REQUIRED + - documentation status: OPEN + - published: + - link: integrate/propose-attribute-to-peer +require: +required_by: +--- + +{% include scenarios/integrate/propose-attribute-to-peer.md %} diff --git a/_docs_integrate/read-attribute-from-peer.md b/_docs_integrate/read-attribute-from-peer.md new file mode 100644 index 000000000..7bb8e49c1 --- /dev/null +++ b/_docs_integrate/read-attribute-from-peer.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/read-attribute-from-peer +published: false +title: "Read attribute from peer" +type: scenario +toc: true +properties: + - id: SC065 + - category: Manage attributes of others + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: CHANGES REQUIRED + - documentation status: OPEN + - published: + - link: integrate/read-attribute-from-peer +require: +required_by: +--- + +{% include scenarios/integrate/read-attribute-from-peer.md %} diff --git a/_docs_integrate/request-and-process-attributes-by-code-or-link-of-existing-contacts.md b/_docs_integrate/request-and-process-attributes-by-code-or-link-of-existing-contacts.md new file mode 100644 index 000000000..12d29db0c --- /dev/null +++ b/_docs_integrate/request-and-process-attributes-by-code-or-link-of-existing-contacts.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/request-and-process-attributes-by-code-or-link-of-existing-contacts +published: false +title: "Request and process attributes by code or link of existing contacts" +type: scenario +toc: true +properties: + - id: SC051 + - category: Manage attributes of others + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/request-and-process-attributes-by-code-or-link-of-existing-contacts +require: +required_by: +--- + +{% include scenarios/integrate/request-and-process-attributes-by-code-or-link-of-existing-contacts.md %} diff --git a/_docs_integrate/request-and-process-attributes-by-code-or-link-of-new-contacts.md b/_docs_integrate/request-and-process-attributes-by-code-or-link-of-new-contacts.md new file mode 100644 index 000000000..ba8f56479 --- /dev/null +++ b/_docs_integrate/request-and-process-attributes-by-code-or-link-of-new-contacts.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/request-and-process-attributes-by-code-or-link-of-new-contacts +published: false +title: "Request and process attributes by code or link of new contacts" +type: scenario +toc: true +properties: + - id: SC050 + - category: Manage attributes of others + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: integrate/request-and-process-attributes-by-code-or-link-of-new-contacts +require: +required_by: +--- + +{% include scenarios/integrate/request-and-process-attributes-by-code-or-link-of-new-contacts.md %} diff --git a/_docs_integrate/request-and-process-attributes-by-messages.md b/_docs_integrate/request-and-process-attributes-by-messages.md new file mode 100644 index 000000000..4e40db75d --- /dev/null +++ b/_docs_integrate/request-and-process-attributes-by-messages.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/request-and-process-attributes-by-messages +published: false +title: "Request and process attributes by messages" +type: scenario +toc: true +properties: + - id: SC052 + - category: Manage attributes of others + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: integrate/request-and-process-attributes-by-messages +require: +required_by: +--- + +{% include scenarios/integrate/request-and-process-attributes-by-messages.md %} diff --git a/_docs_integrate/request-and-response-introduction.md b/_docs_integrate/request-and-response-introduction.md new file mode 100644 index 000000000..6a6902c24 --- /dev/null +++ b/_docs_integrate/request-and-response-introduction.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/request-and-response-introduction +published: false +title: "Request and response introduction" +type: scenario +toc: true +properties: + - id: SC036 + - category: Working with requests + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: integrate/request-and-response-introduction +require: +required_by: +--- + +{% include scenarios/integrate/request-and-response-introduction.md %} diff --git a/_docs_integrate/request-persistent-consent-of-peer.md b/_docs_integrate/request-persistent-consent-of-peer.md new file mode 100644 index 000000000..9cc0fc9dd --- /dev/null +++ b/_docs_integrate/request-persistent-consent-of-peer.md @@ -0,0 +1,25 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/request-persistent-consent-of-peer +published: true +title: "Request persistent consent of peer" +type: scenario +toc: true +properties: + - id: SC027 + - category: Manage attributes of others + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: true + - link: integrate/request-persistent-consent-of-peer +require: + - integrate/requests-over-templates + - integrate/requests-over-messages +required_by: +--- + +{% include scenarios/integrate/request-persistent-consent-of-peer.md %} diff --git a/_docs_integrate/request-statuses.md b/_docs_integrate/request-statuses.md new file mode 100644 index 000000000..dd3c689e5 --- /dev/null +++ b/_docs_integrate/request-statuses.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/request-statuses +published: false +title: "Request statuses" +type: scenario +toc: true +properties: + - id: SC037 + - category: Working with requests + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: integrate/request-statuses +require: +required_by: +--- + +{% include scenarios/integrate/request-statuses.md %} diff --git a/_docs_integrate/requesting-authentication-by-multiple-parties.md b/_docs_integrate/requesting-authentication-by-multiple-parties.md new file mode 100644 index 000000000..c775de012 --- /dev/null +++ b/_docs_integrate/requesting-authentication-by-multiple-parties.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/requesting-authentication-by-multiple-parties +published: false +title: "Requesting authentication by multiple parties" +type: scenario +toc: true +properties: + - id: SC034 + - category: Requesting authentication + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/requesting-authentication-by-multiple-parties +require: +required_by: +--- + +{% include scenarios/integrate/requesting-authentication-by-multiple-parties.md %} diff --git a/_docs_integrate/requesting-authentication.md b/_docs_integrate/requesting-authentication.md new file mode 100644 index 000000000..30121ef1d --- /dev/null +++ b/_docs_integrate/requesting-authentication.md @@ -0,0 +1,25 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/requesting-authentication +published: false +title: "Requesting authentication" +type: scenario +toc: true +properties: + - id: SC032 + - category: Requesting authentication + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/requesting-authentication +require: + - integrate/requests-over-templates + - integrate/requests-over-messages +required_by: +--- + +{% include scenarios/integrate/requesting-authentication.md %} diff --git a/_docs_integrate/requesting-one-time-consents.md b/_docs_integrate/requesting-one-time-consents.md new file mode 100644 index 000000000..7a580ad6e --- /dev/null +++ b/_docs_integrate/requesting-one-time-consents.md @@ -0,0 +1,25 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/requesting-one-time-consents +published: true +title: "Requesting one-time consents" +type: scenario +toc: true +properties: + - id: SC025 + - category: Requesting consent of users + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: DONE + - published: true + - link: integrate/requesting-one-time-consents +require: + - integrate/requests-over-templates + - integrate/requests-over-messages +required_by: +--- + +{% include scenarios/integrate/requesting-one-time-consents.md %} diff --git a/_docs_integrate/requests-and-requestitems.md b/_docs_integrate/requests-and-requestitems.md new file mode 100644 index 000000000..1cc14e225 --- /dev/null +++ b/_docs_integrate/requests-and-requestitems.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/requests-and-requestitems +redirect_from: /integrate/data-model-request-items +published: true +title: "Requests and RequestItems" +type: scenario +toc: true +properties: + - id: SC091 + - category: Data Model + - description: https//enmeshed.eu/integrate/data-model-request-items + - customer: + - component: integrate + - level: + - implementation status: + - documentation status: + - published: true + - link: integrate/requests-and-requestitems +require: +required_by: +--- + +{% include scenarios/integrate/requests-and-requestitems.md %} diff --git a/_docs_integrate/requests-over-messages.md b/_docs_integrate/requests-over-messages.md new file mode 100644 index 000000000..2c9990326 --- /dev/null +++ b/_docs_integrate/requests-over-messages.md @@ -0,0 +1,28 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/requests-over-messages +redirect_from: /integrate/requests-over-messages +published: true +title: "Requests over Messages" +type: scenario +toc: true +properties: + - id: SC060 + - category: Manage Requests + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: DOCS ONLY + - published: true + - link: integrate/requests-over-messages +require: + - integrate/requests-over-templates +required_by: + - integrate/requesting-one-time-consents + - integrate/request-persistent-consent-of-peer + - integrate/requesting-authentication +--- + +{% include scenarios/integrate/requests-over-messages.md %} diff --git a/_docs_integrate/requests-over-templates.md b/_docs_integrate/requests-over-templates.md new file mode 100644 index 000000000..f1ef1d250 --- /dev/null +++ b/_docs_integrate/requests-over-templates.md @@ -0,0 +1,28 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/requests-over-templates +redirect_from: /integrate/requests-over-templates +published: true +title: "Requests over Templates" +type: scenario +toc: true +properties: + - id: SC059 + - category: Manage Requests + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: DOCS ONLY + - published: true + - link: integrate/requests-over-templates +require: +required_by: + - integrate/requesting-one-time-consents + - integrate/request-persistent-consent-of-peer + - integrate/requesting-authentication + - integrate/requests-over-messages +--- + +{% include scenarios/integrate/requests-over-templates.md %} diff --git a/_docs_integrate/respond-to-incoming-identityattribute-update-requests.md b/_docs_integrate/respond-to-incoming-identityattribute-update-requests.md new file mode 100644 index 000000000..b9437aabf --- /dev/null +++ b/_docs_integrate/respond-to-incoming-identityattribute-update-requests.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/respond-to-incoming-identityattribute-update-requests +published: false +title: "Respond to incoming IdentityAttribute update requests" +type: scenario +toc: true +properties: + - id: SC054 + - category: Manage attributes of others + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: integrate/respond-to-incoming-identityattribute-update-requests +require: +required_by: +--- + +{% include scenarios/integrate/respond-to-incoming-identityattribute-update-requests.md %} diff --git a/_docs_integrate/respond-to-incoming-requests.md b/_docs_integrate/respond-to-incoming-requests.md new file mode 100644 index 000000000..abfa5c22f --- /dev/null +++ b/_docs_integrate/respond-to-incoming-requests.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/respond-to-incoming-requests +published: false +title: "Respond to incoming requests" +type: scenario +toc: true +properties: + - id: SC041 + - category: Working with requests + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/respond-to-incoming-requests +require: +required_by: +--- + +{% include scenarios/integrate/respond-to-incoming-requests.md %} diff --git a/_docs_integrate/sending-messages-with-attachments.md b/_docs_integrate/sending-messages-with-attachments.md new file mode 100644 index 000000000..20d454439 --- /dev/null +++ b/_docs_integrate/sending-messages-with-attachments.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/sending-messages-with-attachments +published: false +title: "Sending Messages with attachments" +type: scenario +toc: true +properties: + - id: SC063 + - category: Basic communication + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/sending-messages-with-attachments +require: +required_by: +--- + +{% include scenarios/integrate/sending-messages-with-attachments.md %} diff --git a/_docs_integrate/sending-messages.md b/_docs_integrate/sending-messages.md new file mode 100644 index 000000000..eb4d3bf1a --- /dev/null +++ b/_docs_integrate/sending-messages.md @@ -0,0 +1,25 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/sending-messages +redirect_from: /integrate/connector-flows-messages +published: true +title: "Sending Messages" +type: scenario +toc: true +properties: + - id: SC058 + - category: Basic communication + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: DONE + - published: true + - link: integrate/sending-messages +require: + - integrate/delete-identity-from-enmeshed +required_by: +--- + +{% include scenarios/integrate/sending-messages.md %} diff --git a/_docs_integrate/share-own-attribute-to-peer.md b/_docs_integrate/share-own-attribute-to-peer.md new file mode 100644 index 000000000..f6921126e --- /dev/null +++ b/_docs_integrate/share-own-attribute-to-peer.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/share-own-attribute-to-peer +published: false +title: "Share own attribute to peer" +type: scenario +toc: true +properties: + - id: SC068 + - category: Manage attributes of yourself + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: integrate/share-own-attribute-to-peer +require: +required_by: +--- + +{% include scenarios/integrate/share-own-attribute-to-peer.md %} diff --git a/_docs_integrate/succeed-attribute-of-peer.md b/_docs_integrate/succeed-attribute-of-peer.md new file mode 100644 index 000000000..5b4801e89 --- /dev/null +++ b/_docs_integrate/succeed-attribute-of-peer.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/succeed-attribute-of-peer +published: false +title: "Succeed attribute of peer" +type: scenario +toc: true +properties: + - id: SC062 + - category: Manage attributes of others + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: integrate/succeed-attribute-of-peer +require: +required_by: +--- + +{% include scenarios/integrate/succeed-attribute-of-peer.md %} diff --git a/_docs_integrate/support.md b/_docs_integrate/support.md new file mode 100644 index 000000000..a5b802c08 --- /dev/null +++ b/_docs_integrate/support.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/support +published: false +title: "Support" +type: scenario +toc: true +properties: + - id: SC098 + - category: Troubleshooting + - description: + - customer: + - component: integrate + - level: + - implementation status: + - documentation status: + - published: + - link: integrate/support +require: +required_by: +--- + +{% include scenarios/integrate/support.md %} diff --git a/_docs_integrate/updating-consents.md b/_docs_integrate/updating-consents.md new file mode 100644 index 000000000..871614604 --- /dev/null +++ b/_docs_integrate/updating-consents.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/updating-consents +published: false +title: "Updating consents" +type: scenario +toc: true +properties: + - id: SC030 + - category: Requesting consent of users + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: integrate/updating-consents +require: +required_by: +--- + +{% include scenarios/integrate/updating-consents.md %} diff --git a/_docs_integrate/updating-identityattributes-of-yourself.md b/_docs_integrate/updating-identityattributes-of-yourself.md new file mode 100644 index 000000000..df672ac1b --- /dev/null +++ b/_docs_integrate/updating-identityattributes-of-yourself.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/updating-identityattributes-of-yourself +published: false +title: "Updating IdentityAttributes of yourself" +type: scenario +toc: true +properties: + - id: SC053 + - category: Manage attributes of yourself + - description: + - customer: All + - component: integrate + - level: Beginner + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: integrate/updating-identityattributes-of-yourself +require: +required_by: +--- + +{% include scenarios/integrate/updating-identityattributes-of-yourself.md %} diff --git a/_docs_integrate/use-cases.md b/_docs_integrate/use-cases.md new file mode 100644 index 000000000..dc5623da5 --- /dev/null +++ b/_docs_integrate/use-cases.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/use-cases +redirect_from: /explore/use-cases +published: true +title: "Use Cases" +type: scenario +toc: true +properties: + - id: SC082 + - category: 1Getting Started + - description: + - customer: + - component: integrate + - level: + - implementation status: DONE + - documentation status: DONE + - published: true + - link: integrate/use-cases +require: +required_by: +--- + +{% include scenarios/integrate/use-cases.md %} diff --git a/_docs_integrate/working-with-unstructed-data.md b/_docs_integrate/working-with-unstructed-data.md new file mode 100644 index 000000000..95dc293b3 --- /dev/null +++ b/_docs_integrate/working-with-unstructed-data.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: integrate/working-with-unstructed-data +published: false +title: "Working with unstructed data" +type: scenario +toc: true +properties: + - id: SC057 + - category: Manage attributes of others + - description: + - customer: All + - component: integrate + - level: Advanced + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: integrate/working-with-unstructed-data +require: +required_by: +--- + +{% include scenarios/integrate/working-with-unstructed-data.md %} diff --git a/_docs_operate/02-operate-scenarios.md b/_docs_operate/02-operate-scenarios.md new file mode 100644 index 000000000..2b520088f --- /dev/null +++ b/_docs_operate/02-operate-scenarios.md @@ -0,0 +1,192 @@ +--- +title: "Operate enmeshed" +permalink: /operate +published: true +sidebar: + - title: "Operate enmeshed" + nav: "docs_operate" +--- + +Looking to set up and maintain a connector in your own infrastructure? No worries, we've got you covered! + +We'll guide you on how to configure and maintain your systems optimally, ensuring smooth operations. + + + diff --git a/_docs_operate/check-health-of-connector.md b/_docs_operate/check-health-of-connector.md new file mode 100644 index 000000000..b7489ee3b --- /dev/null +++ b/_docs_operate/check-health-of-connector.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/check-health-of-connector +published: false +title: "Check health of Connector" +type: scenario +toc: true +properties: + - id: SC069 + - category: Identity Basics + - description: + - customer: All + - component: operate + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: operate/check-health-of-connector +require: +required_by: +--- + +{% include scenarios/operate/check-health-of-connector.md %} diff --git a/_docs_operate/configuration.md b/_docs_operate/configuration.md new file mode 100644 index 000000000..9c316b45f --- /dev/null +++ b/_docs_operate/configuration.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/configuration +redirect_from: /integrate/connector-configuration +published: true +title: "Configuration" +type: scenario +toc: true +properties: + - id: SC079 + - category: 1Connector Setup + - description: https//enmeshed.eu/integrate/connector-configuration + - customer: + - component: operate + - level: + - implementation status: DOCS ONLY + - documentation status: + - published: true + - link: operate/configuration +require: +required_by: +--- + +{% include scenarios/operate/configuration.md %} diff --git a/_docs_operate/faq.md b/_docs_operate/faq.md new file mode 100644 index 000000000..43ec0f148 --- /dev/null +++ b/_docs_operate/faq.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/faq +published: false +title: "FAQ" +type: scenario +toc: true +properties: + - id: SC099 + - category: Troubleshooting + - description: + - customer: + - component: operate + - level: + - implementation status: + - documentation status: + - published: + - link: operate/faq +require: +required_by: +--- + +{% include scenarios/operate/faq.md %} diff --git a/_docs_operate/handling-events-by-amqp.md b/_docs_operate/handling-events-by-amqp.md new file mode 100644 index 000000000..6e508920d --- /dev/null +++ b/_docs_operate/handling-events-by-amqp.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/handling-events-by-amqp +published: false +title: "Handling events by AMQP" +type: scenario +toc: true +properties: + - id: SC045 + - category: Handling events + - description: + - customer: All + - component: operate + - level: Advanced + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: operate/handling-events-by-amqp +require: +required_by: +--- + +{% include scenarios/operate/handling-events-by-amqp.md %} diff --git a/_docs_operate/modules.md b/_docs_operate/modules.md new file mode 100644 index 000000000..41085d52e --- /dev/null +++ b/_docs_operate/modules.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/modules +redirect_from: /integrate/connector-modules +published: true +title: "Modules" +type: scenario +toc: true +properties: + - id: SC080 + - category: 1Connector Setup + - description: https//enmeshed.eu/integrate/connector-modules + - customer: + - component: operate + - level: + - implementation status: DOCS ONLY + - documentation status: + - published: true + - link: operate/modules +require: +required_by: +--- + +{% include scenarios/operate/modules.md %} diff --git a/_docs_operate/overview-of-connector-operations.md b/_docs_operate/overview-of-connector-operations.md new file mode 100644 index 000000000..271354245 --- /dev/null +++ b/_docs_operate/overview-of-connector-operations.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/overview-of-connector-operations +redirect_from: /integrate/connector-operations +published: true +title: "Overview of Connector operations" +type: scenario +toc: true +properties: + - id: SC083 + - category: Connector Operations + - description: https//enmeshed.eu/integrate/connector-operations + - customer: + - component: operate + - level: + - implementation status: DOCS ONLY + - documentation status: + - published: true + - link: operate/overview-of-connector-operations +require: +required_by: +--- + +{% include scenarios/operate/overview-of-connector-operations.md %} diff --git a/_docs_operate/performance-considerations.md b/_docs_operate/performance-considerations.md new file mode 100644 index 000000000..eae2178d2 --- /dev/null +++ b/_docs_operate/performance-considerations.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/performance-considerations +redirect_from: /integrate/connector-performance +published: true +title: "Performance Considerations" +type: scenario +toc: true +properties: + - id: SC086 + - category: Connector Operations + - description: https//enmeshed.eu/integrate/connector-performance + - customer: + - component: operate + - level: + - implementation status: DOCS ONLY + - documentation status: + - published: true + - link: operate/performance-considerations +require: +required_by: +--- + +{% include scenarios/operate/performance-considerations.md %} diff --git a/_docs_operate/privacy-considerations.md b/_docs_operate/privacy-considerations.md new file mode 100644 index 000000000..343b8bc1a --- /dev/null +++ b/_docs_operate/privacy-considerations.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/privacy-considerations +redirect_from: /integrate/connector-privacy +published: true +title: "Privacy Considerations" +type: scenario +toc: true +properties: + - id: SC085 + - category: Connector Operations + - description: https//enmeshed.eu/integrate/connector-privacy + - customer: + - component: operate + - level: + - implementation status: DOCS ONLY + - documentation status: + - published: true + - link: operate/privacy-considerations +require: +required_by: +--- + +{% include scenarios/operate/privacy-considerations.md %} diff --git a/_docs_operate/security-considerations.md b/_docs_operate/security-considerations.md new file mode 100644 index 000000000..0d81df4e0 --- /dev/null +++ b/_docs_operate/security-considerations.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/security-considerations +redirect_from: /integrate/connector-security +published: true +title: "Security Considerations" +type: scenario +toc: true +properties: + - id: SC084 + - category: Connector Operations + - description: https//enmeshed.eu/integrate/connector-security + - customer: + - component: operate + - level: + - implementation status: DOCS ONLY + - documentation status: + - published: true + - link: operate/security-considerations +require: +required_by: +--- + +{% include scenarios/operate/security-considerations.md %} diff --git a/_docs_operate/setup-connector-for-productive-use.md b/_docs_operate/setup-connector-for-productive-use.md new file mode 100644 index 000000000..6cc0b455e --- /dev/null +++ b/_docs_operate/setup-connector-for-productive-use.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/setup-connector-for-productive-use +published: false +title: "Setup Connector for productive use" +type: scenario +toc: true +properties: + - id: SC063 + - category: Operations + - description: #1 https//enmeshed.eu/integrate/connector-installation + - customer: All + - component: operate + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: operate/setup-connector-for-productive-use +require: +required_by: +--- + +{% include scenarios/operate/setup-connector-for-productive-use.md %} diff --git a/_docs_operate/setup-with-docker-compose.md b/_docs_operate/setup-with-docker-compose.md new file mode 100644 index 000000000..8e0efd336 --- /dev/null +++ b/_docs_operate/setup-with-docker-compose.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/setup-with-docker-compose +redirect_from: /integrate/connector-installation +published: true +title: "Setup with Docker Compose" +type: scenario +toc: true +properties: + - id: SC077 + - category: 1Connector Setup + - description: #2 https//enmeshed.eu/integrate/connector-installation + - customer: + - component: operate + - level: + - implementation status: DOCS ONLY + - documentation status: + - published: true + - link: operate/setup-with-docker-compose +require: +required_by: +--- + +{% include scenarios/operate/setup-with-docker-compose.md %} diff --git a/_docs_operate/setup-with-helm-charts.md b/_docs_operate/setup-with-helm-charts.md new file mode 100644 index 000000000..3281ff522 --- /dev/null +++ b/_docs_operate/setup-with-helm-charts.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/setup-with-helm-charts +redirect_from: /integrate/helm-chart +published: true +title: "Setup with Helm Charts" +type: scenario +toc: true +properties: + - id: SC078 + - category: 1Connector Setup + - description: https//enmeshed.eu/integrate/helm-chart + - customer: + - component: operate + - level: + - implementation status: DOCS ONLY + - documentation status: + - published: true + - link: operate/setup-with-helm-charts +require: +required_by: +--- + +{% include scenarios/operate/setup-with-helm-charts.md %} diff --git a/_docs_operate/support.md b/_docs_operate/support.md new file mode 100644 index 000000000..f59fe78d7 --- /dev/null +++ b/_docs_operate/support.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/support +published: true +title: "Support" +type: scenario +toc: true +properties: + - id: SC100 + - category: Troubleshooting + - description: + - customer: + - component: operate + - level: + - implementation status: + - documentation status: + - published: true + - link: operate/support +require: +required_by: +--- + +{% include scenarios/operate/support.md %} diff --git a/_docs_operate/troubleshooting-guide.md b/_docs_operate/troubleshooting-guide.md new file mode 100644 index 000000000..a4c38ce7e --- /dev/null +++ b/_docs_operate/troubleshooting-guide.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/troubleshooting-guide +redirect_from: /integrate/connector-setup-troubleshooting +published: true +title: "Troubleshooting Guide" +type: scenario +toc: true +properties: + - id: SC081 + - category: Troubleshooting + - description: https//enmeshed.eu/integrate/connector-setup-troubleshooting + - customer: + - component: operate + - level: + - implementation status: DOCS ONLY + - documentation status: + - published: true + - link: operate/troubleshooting-guide +require: +required_by: +--- + +{% include scenarios/operate/troubleshooting-guide.md %} diff --git a/_docs_operate/writing-your-own-connector-module.md b/_docs_operate/writing-your-own-connector-module.md new file mode 100644 index 000000000..ebb6c6a58 --- /dev/null +++ b/_docs_operate/writing-your-own-connector-module.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: operate/writing-your-own-connector-module +published: false +title: "Writing your own Connector module" +type: scenario +toc: true +properties: + - id: SC046 + - category: Handling events + - description: + - customer: All + - component: operate + - level: Expert + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: operate/writing-your-own-connector-module +require: +required_by: +--- + +{% include scenarios/operate/writing-your-own-connector-module.md %} diff --git a/_docs_scenarios/_template.md b/_docs_scenarios/_template.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_docs_scenarios/_template.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                - Flowchart -
                {% include diagrams/Enmeshed_Scenarios.svg %}
                -
                diff --git a/_docs_scenarios/scenario-sc1.md b/_docs_scenarios/scenario-sc1.md deleted file mode 100644 index cc774e704..000000000 --- a/_docs_scenarios/scenario-sc1.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc1 -published: false -title: "Create an Identity" -type: scenario -toc: true -properties: - - id: SC1 - - category: Identity Basics - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc1.md %} diff --git a/_docs_scenarios/scenario-sc10.md b/_docs_scenarios/scenario-sc10.md deleted file mode 100644 index 654fe6fef..000000000 --- a/_docs_scenarios/scenario-sc10.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc10 -published: false -title: "Remove an onboarded Device from the Identity" -type: scenario -toc: true -properties: - - id: SC10 - - category: Use multiple Devices to access one Identity - - description: - - customer: All - - component: App - - level: Advanced - - implementation status: IDEA - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc10.md %} diff --git a/_docs_scenarios/scenario-sc11.md b/_docs_scenarios/scenario-sc11.md deleted file mode 100644 index 4f7dbf18c..000000000 --- a/_docs_scenarios/scenario-sc11.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc11 -published: false -title: "Fill Attributes of your Identity" -type: scenario -toc: true -properties: - - id: SC11 - - category: Handling your personal data - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc11.md %} diff --git a/_docs_scenarios/scenario-sc12.md b/_docs_scenarios/scenario-sc12.md deleted file mode 100644 index 1f257a747..000000000 --- a/_docs_scenarios/scenario-sc12.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc12 -published: false -title: "Overview of your shared data" -type: scenario -toc: true -properties: - - id: SC12 - - category: Handling your personal data - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc12.md %} diff --git a/_docs_scenarios/scenario-sc13.md b/_docs_scenarios/scenario-sc13.md deleted file mode 100644 index 383a62615..000000000 --- a/_docs_scenarios/scenario-sc13.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc13 -published: false -title: "Share data to contacts" -type: scenario -toc: true -properties: - - id: SC13 - - category: Handling your personal data - - description: - - customer: All - - component: App - - level: Advanced - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc13.md %} diff --git a/_docs_scenarios/scenario-sc14.md b/_docs_scenarios/scenario-sc14.md deleted file mode 100644 index 555ab350f..000000000 --- a/_docs_scenarios/scenario-sc14.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc14 -published: false -title: "Upgrade existing online accounts to enmeshed" -type: scenario -toc: true -properties: - - id: SC14 - - category: Get in touch with other Identities - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc14.md %} diff --git a/_docs_scenarios/scenario-sc15.md b/_docs_scenarios/scenario-sc15.md deleted file mode 100644 index 317279054..000000000 --- a/_docs_scenarios/scenario-sc15.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc15 -published: false -title: "Register new online accounts with enmeshed" -type: scenario -toc: true -properties: - - id: SC15 - - category: Get in touch with other Identities - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc15.md %} diff --git a/_docs_scenarios/scenario-sc16.md b/_docs_scenarios/scenario-sc16.md deleted file mode 100644 index 28ab98bbe..000000000 --- a/_docs_scenarios/scenario-sc16.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc16 -published: false -title: "Scan QR Codes to set up digital communication by printouts" -type: scenario -toc: true -properties: - - id: SC16 - - category: Get in touch with other Identities - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc16.md %} diff --git a/_docs_scenarios/scenario-sc17.md b/_docs_scenarios/scenario-sc17.md deleted file mode 100644 index 393dc3254..000000000 --- a/_docs_scenarios/scenario-sc17.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc17 -published: false -title: "Use nmshd// links to trigger enmeshed on the same device" -type: scenario -toc: true -properties: - - id: SC17 - - category: Get in touch with other Identities - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc17.md %} diff --git a/_docs_scenarios/scenario-sc18.md b/_docs_scenarios/scenario-sc18.md deleted file mode 100644 index 737d440da..000000000 --- a/_docs_scenarios/scenario-sc18.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc18 -published: false -title: "Create own enmeshed codes to share with your peers" -type: scenario -toc: true -properties: - - id: SC18 - - category: Get in touch with other Identities - - description: - - customer: All - - component: App - - level: Advanced - - implementation status: DISABLED - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc18.md %} diff --git a/_docs_scenarios/scenario-sc19.md b/_docs_scenarios/scenario-sc19.md deleted file mode 100644 index e03be224f..000000000 --- a/_docs_scenarios/scenario-sc19.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc19 -published: false -title: "Distinguish personalized and non-personalized codes" -type: scenario -toc: true -properties: - - id: SC19 - - category: Get in touch with other Identities - - description: - - customer: All - - component: App - - level: Advanced - - implementation status: DOCS ONLY - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc19.md %} diff --git a/_docs_scenarios/scenario-sc2.md b/_docs_scenarios/scenario-sc2.md deleted file mode 100644 index 4dfa1aa31..000000000 --- a/_docs_scenarios/scenario-sc2.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc2 -published: false -title: "Set-up and use Profile authentication" -type: scenario -toc: true -properties: - - id: SC2 - - category: Secure Setup - - description: - - customer: All - - component: App - - level: Advanced - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc2.md %} diff --git a/_docs_scenarios/scenario-sc20.md b/_docs_scenarios/scenario-sc20.md deleted file mode 100644 index c88fe5a50..000000000 --- a/_docs_scenarios/scenario-sc20.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc20 -published: false -title: "Rename Contacts to your needs" -type: scenario -toc: true -properties: - - id: SC20 - - category: Organizing contacts - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: IDEA - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc20.md %} diff --git a/_docs_scenarios/scenario-sc21.md b/_docs_scenarios/scenario-sc21.md deleted file mode 100644 index 80bb13e38..000000000 --- a/_docs_scenarios/scenario-sc21.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc21 -published: false -title: "Cluster Contacts into your phase of live or categories" -type: scenario -toc: true -properties: - - id: SC21 - - category: Organizing contacts - - description: - - customer: All - - component: App - - level: Advanced - - implementation status: IDEA - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc21.md %} diff --git a/_docs_scenarios/scenario-sc22.md b/_docs_scenarios/scenario-sc22.md deleted file mode 100644 index 49cefd992..000000000 --- a/_docs_scenarios/scenario-sc22.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc22 -published: false -title: "Pin Contacts to have the most prominent Contacts at hand" -type: scenario -toc: true -properties: - - id: SC22 - - category: Organizing contacts - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: IDEA - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc22.md %} diff --git a/_docs_scenarios/scenario-sc23.md b/_docs_scenarios/scenario-sc23.md deleted file mode 100644 index e6c7f0a5e..000000000 --- a/_docs_scenarios/scenario-sc23.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc23 -published: false -title: "Archive stale Contacts" -type: scenario -toc: true -properties: - - id: SC23 - - category: Organizing contacts - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: IDEA - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc23.md %} diff --git a/_docs_scenarios/scenario-sc24.md b/_docs_scenarios/scenario-sc24.md deleted file mode 100644 index 8fa27dcdf..000000000 --- a/_docs_scenarios/scenario-sc24.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc24 -published: false -title: "Overview of consent possibilities" -type: scenario -toc: true -properties: - - id: SC24 - - category: Requesting consent of users - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DOCS ONLY - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc24.md %} diff --git a/_docs_scenarios/scenario-sc25.md b/_docs_scenarios/scenario-sc25.md deleted file mode 100644 index dc3445f4d..000000000 --- a/_docs_scenarios/scenario-sc25.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -permalink: /scenario-sc25 -published: false -title: "Requesting one-time consents " -type: scenario -toc: true -properties: - - id: SC25 - - category: Requesting consent of users - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: DONE - - published: - - link to lucid: -require: - - /scenario-sc59 - - /scenario-sc60 -required_by: ---- - -{% include scenarios/scenario-sc25.md %} diff --git a/_docs_scenarios/scenario-sc27.md b/_docs_scenarios/scenario-sc27.md deleted file mode 100644 index 83a9c9d4e..000000000 --- a/_docs_scenarios/scenario-sc27.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -permalink: /scenario-sc27 -published: false -title: "Requesting persistent consents " -type: scenario -toc: true -properties: - - id: SC27 - - category: Requesting consent of users - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: - - /scenario-sc59 - - /scenario-sc60 -required_by: ---- - -{% include scenarios/scenario-sc27.md %} diff --git a/_docs_scenarios/scenario-sc29.md b/_docs_scenarios/scenario-sc29.md deleted file mode 100644 index 9efdf533c..000000000 --- a/_docs_scenarios/scenario-sc29.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc29 -published: false -title: "Get users who did not consent to latest version" -type: scenario -toc: true -properties: - - id: SC29 - - category: Requesting consent of users - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc29.md %} diff --git a/_docs_scenarios/scenario-sc3.md b/_docs_scenarios/scenario-sc3.md deleted file mode 100644 index 6386ca80c..000000000 --- a/_docs_scenarios/scenario-sc3.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc3 -published: false -title: "Check Device configuration" -type: scenario -toc: true -properties: - - id: SC3 - - category: Secure Setup - - description: - - customer: All - - component: App - - level: Advanced - - implementation status: DOCS ONLY - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc3.md %} diff --git a/_docs_scenarios/scenario-sc30.md b/_docs_scenarios/scenario-sc30.md deleted file mode 100644 index d185eb00f..000000000 --- a/_docs_scenarios/scenario-sc30.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc30 -published: false -title: "Updating consents" -type: scenario -toc: true -properties: - - id: SC30 - - category: Requesting consent of users - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc30.md %} diff --git a/_docs_scenarios/scenario-sc31.md b/_docs_scenarios/scenario-sc31.md deleted file mode 100644 index df0c105fc..000000000 --- a/_docs_scenarios/scenario-sc31.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc31 -published: false -title: "Automated consent management with external system" -type: scenario -toc: true -properties: - - id: SC31 - - category: Requesting consent of users - - description: - - customer: All - - component: Connector - - level: Expert - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc31.md %} diff --git a/_docs_scenarios/scenario-sc32.md b/_docs_scenarios/scenario-sc32.md deleted file mode 100644 index 29ddd02bc..000000000 --- a/_docs_scenarios/scenario-sc32.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -permalink: /scenario-sc32 -published: false -title: "Requesting authentication " -type: scenario -toc: true -properties: - - id: SC32 - - category: Requesting authentication - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: - - /scenario-sc59 - - /scenario-sc60 -required_by: ---- - -{% include scenarios/scenario-sc32.md %} diff --git a/_docs_scenarios/scenario-sc34.md b/_docs_scenarios/scenario-sc34.md deleted file mode 100644 index 8cc75d288..000000000 --- a/_docs_scenarios/scenario-sc34.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc34 -published: false -title: "Requesting authentication by multiple parties" -type: scenario -toc: true -properties: - - id: SC34 - - category: Requesting authentication - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc34.md %} diff --git a/_docs_scenarios/scenario-sc35.md b/_docs_scenarios/scenario-sc35.md deleted file mode 100644 index be77859ba..000000000 --- a/_docs_scenarios/scenario-sc35.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc35 -published: false -title: "Automated authentication management with external system" -type: scenario -toc: true -properties: - - id: SC35 - - category: Requesting authentication - - description: - - customer: All - - component: Connector - - level: Expert - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc35.md %} diff --git a/_docs_scenarios/scenario-sc36.md b/_docs_scenarios/scenario-sc36.md deleted file mode 100644 index 036188aed..000000000 --- a/_docs_scenarios/scenario-sc36.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc36 -published: false -title: "Request and response introduction" -type: scenario -toc: true -properties: - - id: SC36 - - category: Working with requests - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DOCS ONLY - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc36.md %} diff --git a/_docs_scenarios/scenario-sc37.md b/_docs_scenarios/scenario-sc37.md deleted file mode 100644 index 96f124ce8..000000000 --- a/_docs_scenarios/scenario-sc37.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc37 -published: false -title: "Request statuses" -type: scenario -toc: true -properties: - - id: SC37 - - category: Working with requests - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: DOCS ONLY - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc37.md %} diff --git a/_docs_scenarios/scenario-sc38.md b/_docs_scenarios/scenario-sc38.md deleted file mode 100644 index b3c921194..000000000 --- a/_docs_scenarios/scenario-sc38.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc38 -published: false -title: "Overview of request items" -type: scenario -toc: true -properties: - - id: SC38 - - category: Working with requests - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DOCS ONLY - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc38.md %} diff --git a/_docs_scenarios/scenario-sc39.md b/_docs_scenarios/scenario-sc39.md deleted file mode 100644 index 2ee396010..000000000 --- a/_docs_scenarios/scenario-sc39.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc39 -published: false -title: "Creating complex requests" -type: scenario -toc: true -properties: - - id: SC39 - - category: Working with requests - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc39.md %} diff --git a/_docs_scenarios/scenario-sc4.md b/_docs_scenarios/scenario-sc4.md deleted file mode 100644 index a73d72358..000000000 --- a/_docs_scenarios/scenario-sc4.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc4 -published: false -title: "Create Recovery Data for the Identity" -type: scenario -toc: true -properties: - - id: SC4 - - category: Identity Basics - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc4.md %} diff --git a/_docs_scenarios/scenario-sc40.md b/_docs_scenarios/scenario-sc40.md deleted file mode 100644 index 5aa0fff3f..000000000 --- a/_docs_scenarios/scenario-sc40.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc40 -published: false -title: "Process responses to outgoing requests" -type: scenario -toc: true -properties: - - id: SC40 - - category: Working with requests - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc40.md %} diff --git a/_docs_scenarios/scenario-sc41.md b/_docs_scenarios/scenario-sc41.md deleted file mode 100644 index 924ce12ad..000000000 --- a/_docs_scenarios/scenario-sc41.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc41 -published: false -title: "Respond to incoming requests" -type: scenario -toc: true -properties: - - id: SC41 - - category: Working with requests - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc41.md %} diff --git a/_docs_scenarios/scenario-sc42.md b/_docs_scenarios/scenario-sc42.md deleted file mode 100644 index 312653cce..000000000 --- a/_docs_scenarios/scenario-sc42.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc42 -published: false -title: "Automate request handling" -type: scenario -toc: true -properties: - - id: SC42 - - category: Working with requests - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc42.md %} diff --git a/_docs_scenarios/scenario-sc43.md b/_docs_scenarios/scenario-sc43.md deleted file mode 100644 index 8d64612c7..000000000 --- a/_docs_scenarios/scenario-sc43.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc43 -published: false -title: "Connector event introduction" -type: scenario -toc: true -properties: - - id: SC43 - - category: Handling events - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: DOCS ONLY - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc43.md %} diff --git a/_docs_scenarios/scenario-sc44.md b/_docs_scenarios/scenario-sc44.md deleted file mode 100644 index 91143f500..000000000 --- a/_docs_scenarios/scenario-sc44.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc44 -published: false -title: "Handling events by webhooks" -type: scenario -toc: true -properties: - - id: SC44 - - category: Handling events - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc44.md %} diff --git a/_docs_scenarios/scenario-sc45.md b/_docs_scenarios/scenario-sc45.md deleted file mode 100644 index 8471c4d9a..000000000 --- a/_docs_scenarios/scenario-sc45.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc45 -published: false -title: "Handling events by AMQP" -type: scenario -toc: true -properties: - - id: SC45 - - category: Handling events - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc45.md %} diff --git a/_docs_scenarios/scenario-sc46.md b/_docs_scenarios/scenario-sc46.md deleted file mode 100644 index e1e85e7ac..000000000 --- a/_docs_scenarios/scenario-sc46.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc46 -published: false -title: "Writing your own Connector module" -type: scenario -toc: true -properties: - - id: SC46 - - category: Handling events - - description: - - customer: All - - component: Connector - - level: Expert - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc46.md %} diff --git a/_docs_scenarios/scenario-sc47.md b/_docs_scenarios/scenario-sc47.md deleted file mode 100644 index 59dc57a28..000000000 --- a/_docs_scenarios/scenario-sc47.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc47 -published: false -title: "IdentityAttribute introduction" -type: scenario -toc: true -properties: - - id: SC47 - - category: Manage attributes of yourself - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DOCS ONLY - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc47.md %} diff --git a/_docs_scenarios/scenario-sc48.md b/_docs_scenarios/scenario-sc48.md deleted file mode 100644 index f589c9bc6..000000000 --- a/_docs_scenarios/scenario-sc48.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc48 -published: false -title: "Overview of Attribute Values" -type: scenario -toc: true -properties: - - id: SC48 - - category: Manage attributes of yourself - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DOCS ONLY - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc48.md %} diff --git a/_docs_scenarios/scenario-sc49.md b/_docs_scenarios/scenario-sc49.md deleted file mode 100644 index b55d775ba..000000000 --- a/_docs_scenarios/scenario-sc49.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc49 -published: false -title: "Create own IdentityAttributes" -type: scenario -toc: true -properties: - - id: SC49 - - category: Manage attributes of yourself - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc49.md %} diff --git a/_docs_scenarios/scenario-sc5.md b/_docs_scenarios/scenario-sc5.md deleted file mode 100644 index e414762d7..000000000 --- a/_docs_scenarios/scenario-sc5.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc5 -published: false -title: "Delete Identity from Enmeshed" -type: scenario -toc: true -properties: - - id: SC5 - - category: Identity Basics - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc5.md %} diff --git a/_docs_scenarios/scenario-sc50.md b/_docs_scenarios/scenario-sc50.md deleted file mode 100644 index 10c7af7a9..000000000 --- a/_docs_scenarios/scenario-sc50.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc50 -published: false -title: "Request and process attributes by code/link of new contacts" -type: scenario -toc: true -properties: - - id: SC50 - - category: Manage attributes of others - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc50.md %} diff --git a/_docs_scenarios/scenario-sc51.md b/_docs_scenarios/scenario-sc51.md deleted file mode 100644 index 0c11ddf89..000000000 --- a/_docs_scenarios/scenario-sc51.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc51 -published: false -title: "Request and process attributes by code/link of existing contacts" -type: scenario -toc: true -properties: - - id: SC51 - - category: Manage attributes of others - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc51.md %} diff --git a/_docs_scenarios/scenario-sc52.md b/_docs_scenarios/scenario-sc52.md deleted file mode 100644 index 976310dca..000000000 --- a/_docs_scenarios/scenario-sc52.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc52 -published: false -title: "Request and process attributes by messages" -type: scenario -toc: true -properties: - - id: SC52 - - category: Manage attributes of others - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc52.md %} diff --git a/_docs_scenarios/scenario-sc53.md b/_docs_scenarios/scenario-sc53.md deleted file mode 100644 index a7f55ed56..000000000 --- a/_docs_scenarios/scenario-sc53.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc53 -published: false -title: "Updating IdentityAttributes of yourself" -type: scenario -toc: true -properties: - - id: SC53 - - category: Manage attributes of yourself - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc53.md %} diff --git a/_docs_scenarios/scenario-sc54.md b/_docs_scenarios/scenario-sc54.md deleted file mode 100644 index 2932769ea..000000000 --- a/_docs_scenarios/scenario-sc54.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc54 -published: false -title: "Respond to incoming IdentityAttribute update requests" -type: scenario -toc: true -properties: - - id: SC54 - - category: Manage attributes of others - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc54.md %} diff --git a/_docs_scenarios/scenario-sc55.md b/_docs_scenarios/scenario-sc55.md deleted file mode 100644 index f935d36ad..000000000 --- a/_docs_scenarios/scenario-sc55.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc55 -published: false -title: "Process incoming IdentityAttribute deletion requests" -type: scenario -toc: true -properties: - - id: SC55 - - category: Handling data deletion - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc55.md %} diff --git a/_docs_scenarios/scenario-sc56.md b/_docs_scenarios/scenario-sc56.md deleted file mode 100644 index 510b5c0cf..000000000 --- a/_docs_scenarios/scenario-sc56.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc56 -published: false -title: "Process incoming Relationship deletion requests" -type: scenario -toc: true -properties: - - id: SC56 - - category: Handling data deletion - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc56.md %} diff --git a/_docs_scenarios/scenario-sc57.md b/_docs_scenarios/scenario-sc57.md deleted file mode 100644 index 3b86edebd..000000000 --- a/_docs_scenarios/scenario-sc57.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc57 -published: false -title: "x" -type: scenario -toc: true -properties: - - id: SC57 - - category: Manage attributes of others - - description: - - customer: All - - component: Connector - - level: Advanced - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc57.md %} diff --git a/_docs_scenarios/scenario-sc58.md b/_docs_scenarios/scenario-sc58.md deleted file mode 100644 index 026901a9c..000000000 --- a/_docs_scenarios/scenario-sc58.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -permalink: /scenario-sc58 -redirect_from: /integrate/connector-flows-messages -published: true -title: "Sending Messages" -type: scenario -toc: true -properties: - - id: SC58 - - category: Messages - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: DONE - - published: true - - link to lucid: -require: - - /scenario-sc61 -required_by: ---- - -{% include scenarios/scenario-sc58.md %} diff --git a/_docs_scenarios/scenario-sc59.md b/_docs_scenarios/scenario-sc59.md deleted file mode 100644 index e62d0b69c..000000000 --- a/_docs_scenarios/scenario-sc59.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -permalink: /scenario-sc59 -redirect_from: /integrate/requests-over-templates -published: true -title: "Requests over Templates" -type: scenario -toc: true -properties: - - id: SC59 - - category: Requests - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: DONE - - published: true - - link to lucid: -require: -required_by: - - /scenario-sc25 - - /scenario-sc27 - - /scenario-sc32 - - /scenario-sc60 ---- - -{% include scenarios/scenario-sc59.md %} diff --git a/_docs_scenarios/scenario-sc6.md b/_docs_scenarios/scenario-sc6.md deleted file mode 100644 index 64e62a7e5..000000000 --- a/_docs_scenarios/scenario-sc6.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc6 -published: false -title: "Recover an existing Identity" -type: scenario -toc: true -properties: - - id: SC6 - - category: Identity Basics - - description: - - customer: All - - component: App - - level: Beginner - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc6.md %} diff --git a/_docs_scenarios/scenario-sc60.md b/_docs_scenarios/scenario-sc60.md deleted file mode 100644 index ec8b96a34..000000000 --- a/_docs_scenarios/scenario-sc60.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -permalink: /scenario-sc60 -redirect_from: /integrate/requests-over-messages -published: true -title: "Requests over Messages" -type: scenario -toc: true -properties: - - id: SC60 - - category: Requests - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: DONE - - published: true - - link to lucid: -require: - - /scenario-sc59 -required_by: - - /scenario-sc25 - - /scenario-sc27 - - /scenario-sc32 ---- - -{% include scenarios/scenario-sc60.md %} diff --git a/_docs_scenarios/scenario-sc61.md b/_docs_scenarios/scenario-sc61.md deleted file mode 100644 index 6cd9850c2..000000000 --- a/_docs_scenarios/scenario-sc61.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc61 -published: false -title: "Uplaod File" -type: scenario -toc: true -properties: - - id: SC61 - - category: File handling - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc61.md %} diff --git a/_docs_scenarios/scenario-sc62.md b/_docs_scenarios/scenario-sc62.md deleted file mode 100644 index 78671cecc..000000000 --- a/_docs_scenarios/scenario-sc62.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc62 -published: false -title: "Download File" -type: scenario -toc: true -properties: - - id: SC62 - - category: File handling - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc62.md %} diff --git a/_docs_scenarios/scenario-sc63.md b/_docs_scenarios/scenario-sc63.md deleted file mode 100644 index f03786ef5..000000000 --- a/_docs_scenarios/scenario-sc63.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc63 -published: false -title: "share File" -type: scenario -toc: true -properties: - - id: SC63 - - category: File handling - - description: - - customer: All - - component: Connector - - level: Beginner - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc63.md %} diff --git a/_docs_scenarios/scenario-sc64.md b/_docs_scenarios/scenario-sc64.md deleted file mode 100644 index 7657bb985..000000000 --- a/_docs_scenarios/scenario-sc64.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -permalink: /scenario-sc64 -published: false -title: "" -type: scenario -toc: true -properties: - - id: SC64 - - category: - - description: - - customer: - - component: - - level: - - implementation status: - - documentation status: - - published: - - link to lucid: -require: -required_by: - - /scenario-sc58 ---- - -{% include scenarios/scenario-sc64.md %} diff --git a/_docs_scenarios/scenario-sc65.md b/_docs_scenarios/scenario-sc65.md deleted file mode 100644 index d5ef2e78a..000000000 --- a/_docs_scenarios/scenario-sc65.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -permalink: /scenario-sc65 -published: false -title: "" -type: scenario -toc: true -properties: - - id: SC65 - - category: - - description: - - customer: - - component: - - level: - - implementation status: - - documentation status: - - published: - - link to lucid: -require: -required_by: - - /scenario-sc58 ---- - -{% include scenarios/scenario-sc65.md %} diff --git a/_docs_scenarios/scenario-sc66.md b/_docs_scenarios/scenario-sc66.md deleted file mode 100644 index bbfdd1903..000000000 --- a/_docs_scenarios/scenario-sc66.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -permalink: /scenario-sc66 -published: false -title: "" -type: scenario -toc: true -properties: - - id: SC66 - - category: - - description: - - customer: - - component: - - level: - - implementation status: - - documentation status: - - published: - - link to lucid: -require: -required_by: - - /scenario-sc58 ---- - -{% include scenarios/scenario-sc66.md %} diff --git a/_docs_scenarios/scenario-sc67.md b/_docs_scenarios/scenario-sc67.md deleted file mode 100644 index 5033eef9c..000000000 --- a/_docs_scenarios/scenario-sc67.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -permalink: /scenario-sc67 -published: false -title: "" -type: scenario -toc: true -properties: - - id: SC67 - - category: - - description: - - customer: - - component: - - level: - - implementation status: - - documentation status: - - published: - - link to lucid: -require: -required_by: - - /scenario-sc58 ---- - -{% include scenarios/scenario-sc67.md %} diff --git a/_docs_scenarios/scenario-sc68.md b/_docs_scenarios/scenario-sc68.md deleted file mode 100644 index f07471f32..000000000 --- a/_docs_scenarios/scenario-sc68.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -permalink: /scenario-sc68 -published: false -title: "" -type: scenario -toc: true -properties: - - id: SC68 - - category: - - description: - - customer: - - component: - - level: - - implementation status: - - documentation status: - - published: - - link to lucid: -require: -required_by: - - /scenario-sc58 ---- - -{% include scenarios/scenario-sc68.md %} diff --git a/_docs_scenarios/scenario-sc69.md b/_docs_scenarios/scenario-sc69.md deleted file mode 100644 index f6c1292ad..000000000 --- a/_docs_scenarios/scenario-sc69.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -permalink: /scenario-sc69 -published: false -title: "" -type: scenario -toc: true -properties: - - id: SC69 - - category: - - description: - - customer: - - component: - - level: - - implementation status: - - documentation status: - - published: - - link to lucid: -require: -required_by: - - /scenario-sc58 ---- - -{% include scenarios/scenario-sc69.md %} diff --git a/_docs_scenarios/scenario-sc7.md b/_docs_scenarios/scenario-sc7.md deleted file mode 100644 index 1526e7c87..000000000 --- a/_docs_scenarios/scenario-sc7.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc7 -published: false -title: "Rename Profile to distinguish multiple Profiles" -type: scenario -toc: true -properties: - - id: SC7 - - category: Working with multiple Identities - - description: - - customer: All - - component: App - - level: Advanced - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc7.md %} diff --git a/_docs_scenarios/scenario-sc70.md b/_docs_scenarios/scenario-sc70.md deleted file mode 100644 index 67401ba40..000000000 --- a/_docs_scenarios/scenario-sc70.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -permalink: /scenario-sc70 -published: false -title: "" -type: scenario -toc: true -properties: - - id: SC70 - - category: - - description: - - customer: - - component: - - level: - - implementation status: - - documentation status: - - published: - - link to lucid: -require: -required_by: - - /scenario-sc58 ---- - -{% include scenarios/scenario-sc70.md %} diff --git a/_docs_scenarios/scenario-sc8.md b/_docs_scenarios/scenario-sc8.md deleted file mode 100644 index 695914a06..000000000 --- a/_docs_scenarios/scenario-sc8.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc8 -published: false -title: "Delete Profile from the App" -type: scenario -toc: true -properties: - - id: SC8 - - category: Working with multiple Identities - - description: - - customer: All - - component: App - - level: Advanced - - implementation status: OPEN - - documentation status: OPEN - - published: - - link to lucid: -require: -required_by: ---- - -{% include scenarios/scenario-sc8.md %} diff --git a/_docs_scenarios/scenario-sc9.md b/_docs_scenarios/scenario-sc9.md deleted file mode 100644 index 09e0ebabc..000000000 --- a/_docs_scenarios/scenario-sc9.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -permalink: /scenario-sc9 -published: false -title: "Set-up an additional Device for the Identity" -type: scenario -toc: true -properties: - - id: SC9 - - category: Use multiple Devices to access one Identity - - description: - - customer: All - - component: App - - level: Advanced - - implementation status: DONE - - documentation status: OPEN - - published: - - link to lucid: https//lucid.app/lucidchart/156c8203-2e46-485a-ab81-b584914f3422/edit?invitationId=inv_5f4a5783-d5f9-437e-92ef-b233de0b05f1&page=0_0# -require: -required_by: ---- - -{% include scenarios/scenario-sc9.md %} diff --git a/_docs_use-cases/use-case-a01.md b/_docs_use-cases/use-case-a01.md deleted file mode 100644 index 857db1644..000000000 --- a/_docs_use-cases/use-case-a01.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a01 -published: true -title: "Get app version information" -type: use-case -toc: true -properties: - - id: A01 - - layer: User Interface - - facade: - - function: - - description: - - feature category: - - tech category: App - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a01.md %} diff --git a/_docs_use-cases/use-case-a02.md b/_docs_use-cases/use-case-a02.md deleted file mode 100644 index 45bd896f8..000000000 --- a/_docs_use-cases/use-case-a02.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a02 -published: true -title: "Start app without parameters" -type: use-case -toc: true -properties: - - id: A02 - - layer: User Interface - - facade: - - function: - - description: - - feature category: - - tech category: App - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a02.md %} diff --git a/_docs_use-cases/use-case-a03.md b/_docs_use-cases/use-case-a03.md deleted file mode 100644 index b6f5261f8..000000000 --- a/_docs_use-cases/use-case-a03.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a03 -published: true -title: "Start app with parameters by using link" -type: use-case -toc: true -properties: - - id: A03 - - layer: User Interface - - facade: - - function: - - description: - - feature category: - - tech category: App - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a03.md %} diff --git a/_docs_use-cases/use-case-a04.md b/_docs_use-cases/use-case-a04.md deleted file mode 100644 index 50bd32407..000000000 --- a/_docs_use-cases/use-case-a04.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a04 -published: true -title: "Show (screen) Screen" -type: use-case -toc: true -properties: - - id: A04 - - layer: User Interface - - facade: - - function: - - description: The app navigates to the desired screen by itself. - - feature category: - - tech category: App - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a04.md %} diff --git a/_docs_use-cases/use-case-a10.md b/_docs_use-cases/use-case-a10.md deleted file mode 100644 index dfd92ccec..000000000 --- a/_docs_use-cases/use-case-a10.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a10 -published: true -title: "Refresh (screen) Screen" -type: use-case -toc: true -properties: - - id: A10 - - layer: User Interface - - facade: - - function: - - description: The app refreshes the current screen. - - feature category: - - tech category: App - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a10.md %} diff --git a/_docs_use-cases/use-case-a11.md b/_docs_use-cases/use-case-a11.md deleted file mode 100644 index 3315efbcc..000000000 --- a/_docs_use-cases/use-case-a11.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a11 -published: true -title: "Navigate to (screen) Screen" -type: use-case -toc: true -properties: - - id: A11 - - layer: Human - - facade: Screen - - function: - - description: The user navigates manually to the desired screen. If the screen has preconditions, these preconditions are considered to be fulfilled (e.g. a Profile has been selected and authenticated first). - - feature category: - - tech category: User Action - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a11.md %} diff --git a/_docs_use-cases/use-case-a12.md b/_docs_use-cases/use-case-a12.md deleted file mode 100644 index e79ebea1d..000000000 --- a/_docs_use-cases/use-case-a12.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a12 -published: true -title: "Select Item (on screen)" -type: use-case -toc: true -properties: - - id: A12 - - layer: Human - - facade: Screen - - function: - - description: The user selects an item or action from the current screen. There should be a show/navigation use case before using this use case (to define the screen). - - feature category: - - tech category: User Action - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a12.md %} diff --git a/_docs_use-cases/use-case-a13.md b/_docs_use-cases/use-case-a13.md deleted file mode 100644 index ea17d41f4..000000000 --- a/_docs_use-cases/use-case-a13.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a13 -published: true -title: "Enter Data (on screen)" -type: use-case -toc: true -properties: - - id: A13 - - layer: Human - - facade: Screen - - function: - - description: The user enters data into the current screen. There should be a show/navigation use case before using this use case (to define the screen). - - feature category: - - tech category: User Action - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a13.md %} diff --git a/_docs_use-cases/use-case-a14.md b/_docs_use-cases/use-case-a14.md deleted file mode 100644 index b55f6336b..000000000 --- a/_docs_use-cases/use-case-a14.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a14 -published: true -title: "Scan QR-Code (on different device)" -type: use-case -toc: true -properties: - - id: A14 - - layer: Human - - facade: Screen - - function: - - description: The user scans a QR-Code from a different device by the app. - - feature category: - - tech category: User Action - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a14.md %} diff --git a/_docs_use-cases/use-case-a15.md b/_docs_use-cases/use-case-a15.md deleted file mode 100644 index 04c8249ab..000000000 --- a/_docs_use-cases/use-case-a15.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a15 -published: true -title: "Device External UseCase" -type: use-case -toc: true -properties: - - id: A15 - - layer: Human - - facade: Screen - - function: - - description: The user processes an external use case on the device, e.g. share something by another app or select a file to upload. - - feature category: - - tech category: User Action - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a15.md %} diff --git a/_docs_use-cases/use-case-a16.md b/_docs_use-cases/use-case-a16.md deleted file mode 100644 index 3ac7b501a..000000000 --- a/_docs_use-cases/use-case-a16.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a16 -published: true -title: "Positive Action" -type: use-case -toc: true -properties: - - id: A16 - - layer: Human - - facade: Screen - - function: - - description: The user triggers a positive action on the current screen, i.e. a submit or approval . There should be a show/navigation use case before using this use case (to define the screen). - - feature category: - - tech category: User Action - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a16.md %} diff --git a/_docs_use-cases/use-case-a17.md b/_docs_use-cases/use-case-a17.md deleted file mode 100644 index efe07f8be..000000000 --- a/_docs_use-cases/use-case-a17.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a17 -published: true -title: "Negative Action" -type: use-case -toc: true -properties: - - id: A17 - - layer: Human - - facade: Screen - - function: - - description: The user triggers a negative action on the current screen, i.e. a reject. There should be a show/navigation use case before using this use case (to define the screen). - - feature category: - - tech category: User Action - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a17.md %} diff --git a/_docs_use-cases/use-case-a18.md b/_docs_use-cases/use-case-a18.md deleted file mode 100644 index a561f03ad..000000000 --- a/_docs_use-cases/use-case-a18.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-a18 -published: true -title: "Cancel Action" -type: use-case -toc: true -properties: - - id: A18 - - layer: Human - - facade: Screen - - function: - - description: The user triggers a cancel action on the current screen, e.g. to postpone a decision. There should be a show/navigation use case before using this use case (to define the screen). - - feature category: - - tech category: User Action - - status: DONE - - comments: - - actor: User - - component: App - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-a18.md %} diff --git a/_docs_use-cases/use-case-anonymous-load-token-by-id-and-key-without-having-an-account.md b/_docs_use-cases/use-case-anonymous-load-token-by-id-and-key-without-having-an-account.md new file mode 100644 index 000000000..5b87cfc55 --- /dev/null +++ b/_docs_use-cases/use-case-anonymous-load-token-by-id-and-key-without-having-an-account.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-anonymous-load-token-by-id-and-key-without-having-an-account +published: true +title: "Load Token by id and key (without having an account)" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RY2 + - layer: Anonymous + - facade: AnonymousFacade + - function: loadPeerTokenByIdAndKey + - description: + - feature category: Share information over side-channel + - tech category: AnonymousTokens + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: anonymous/load-token-by-id-and-key-without-having-an-account +require: +required_by: +--- + +{% include use-cases/use-case-anonymous-load-token-by-id-and-key-without-having-an-account.md %} diff --git a/_docs_use-cases/use-case-anonymous-load-token-by-truncated-reference-without-having-an-account.md b/_docs_use-cases/use-case-anonymous-load-token-by-truncated-reference-without-having-an-account.md new file mode 100644 index 000000000..730bcdcd4 --- /dev/null +++ b/_docs_use-cases/use-case-anonymous-load-token-by-truncated-reference-without-having-an-account.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-anonymous-load-token-by-truncated-reference-without-having-an-account +published: true +title: "Load Token by truncated reference (without having an account)" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RY1 + - layer: Anonymous + - facade: AnonymousFacade + - function: loadPeerTokenByTruncatedReference + - description: + - feature category: Share information over side-channel + - tech category: AnonymousTokens + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: anonymous/load-token-by-truncated-reference-without-having-an-account +require: +required_by: +--- + +{% include use-cases/use-case-anonymous-load-token-by-truncated-reference-without-having-an-account.md %} diff --git a/_docs_use-cases/use-case-ar1.md b/_docs_use-cases/use-case-ar1.md deleted file mode 100644 index a70a372c1..000000000 --- a/_docs_use-cases/use-case-ar1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ar1 -published: true -title: "Get AppRuntime health status" -type: use-case -toc: true -properties: - - id: AR1 - - layer: Device - - facade: AppRuntime - - function: getHealth - - description: - - feature category: - - tech category: AppRuntime - - status: CHANGES REQUIRED - - comments: Only returning true - could be offline/online indication? - - actor: App - - component: AppRuntime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: - - size: - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ar1.md %} diff --git a/_docs_use-cases/use-case-ar2.md b/_docs_use-cases/use-case-ar2.md deleted file mode 100644 index 879031533..000000000 --- a/_docs_use-cases/use-case-ar2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ar2 -published: true -title: "Get AppRuntime version information" -type: use-case -toc: true -properties: - - id: AR2 - - layer: Device - - facade: AppRuntime - - function: - - description: - - feature category: - - tech category: AppRuntime - - status: DONE - - comments: - - actor: App - - component: AppRuntime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ar2.md %} diff --git a/_docs_use-cases/use-case-arp1.md b/_docs_use-cases/use-case-arp1.md deleted file mode 100644 index 50a70d9d7..000000000 --- a/_docs_use-cases/use-case-arp1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-arp1 -published: true -title: "Create Profile with new Identity" -type: use-case -toc: true -properties: - - id: ARP1 - - layer: Device - - facade: AccountServices - - function: createAccount - - description: A Profile needs to be created in order to use the App. Without a Profile, a very limited set of features is available. In order to create a Profile, the App's privacy policy and possibly end-user license agreements needs to be accepted. - - feature category: Multi-profile - - tech category: Profiles - - status: DONE - - comments: - - actor: User - - component: AppRuntime - - trigger: - - precondition: - - result: A Profile has been set up - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-arp1.md %} diff --git a/_docs_use-cases/use-case-arp2.md b/_docs_use-cases/use-case-arp2.md deleted file mode 100644 index 91bf067b0..000000000 --- a/_docs_use-cases/use-case-arp2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-arp2 -published: true -title: "Get Profiles" -type: use-case -toc: true -properties: - - id: ARP2 - - layer: Device - - facade: AccountServices - - function: getAccounts - - description: The User needs to get all Profiles on the Device and their metadata. - - feature category: Multi-profile - - tech category: Profiles - - status: DONE - - comments: No Queries? - - actor: App - - component: AppRuntime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-arp2.md %} diff --git a/_docs_use-cases/use-case-arp3.md b/_docs_use-cases/use-case-arp3.md deleted file mode 100644 index ab44493f7..000000000 --- a/_docs_use-cases/use-case-arp3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-arp3 -published: true -title: "Get Profile" -type: use-case -toc: true -properties: - - id: ARP3 - - layer: Device - - facade: AccountServices - - function: getProfile - - description: - - feature category: Multi-profile - - tech category: Profiles - - status: DONE - - comments: - - actor: App - - component: AppRuntime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-arp3.md %} diff --git a/_docs_use-cases/use-case-arp4.md b/_docs_use-cases/use-case-arp4.md deleted file mode 100644 index 64bd4aa52..000000000 --- a/_docs_use-cases/use-case-arp4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-arp4 -published: true -title: "Get Profile by Enmeshed Address" -type: use-case -toc: true -properties: - - id: ARP4 - - layer: Device - - facade: AccountServices - - function: getProfileByAddress - - description: - - feature category: Multi-profile - - tech category: Profiles - - status: DONE - - comments: - - actor: App - - component: AppRuntime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-arp4.md %} diff --git a/_docs_use-cases/use-case-arp5.md b/_docs_use-cases/use-case-arp5.md deleted file mode 100644 index 7d1ccdde1..000000000 --- a/_docs_use-cases/use-case-arp5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-arp5 -published: true -title: "Clear all profiles" -type: use-case -toc: true -properties: - - id: ARP5 - - layer: Device - - facade: AccountServices - - function: clearAccounts - - description: - - feature category: Multi-profile - - tech category: Profiles - - status: CHANGES REQUIRED - - comments: - - actor: User - - component: AppRuntime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: - - size: - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-arp5.md %} diff --git a/_docs_use-cases/use-case-arp6.md b/_docs_use-cases/use-case-arp6.md deleted file mode 100644 index 9314ca396..000000000 --- a/_docs_use-cases/use-case-arp6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-arp6 -published: true -title: "Onboard Device by Device Onboarding Token" -type: use-case -toc: true -properties: - - id: ARP6 - - layer: Device - - facade: AccountServices - - function: onboardAccount - - description: - - feature category: Multi-device - - tech category: Profiles - - status: QUESTIONS - - comments: Naming - - actor: User - - component: AppRuntime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-arp6.md %} diff --git a/_docs_use-cases/use-case-arp7.md b/_docs_use-cases/use-case-arp7.md deleted file mode 100644 index e95c7f4fb..000000000 --- a/_docs_use-cases/use-case-arp7.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-arp7 -published: true -title: "Restore Identity by revovery data" -type: use-case -toc: true -properties: - - id: ARP7 - - layer: Device - - facade: - - function: - - description: - - feature category: Identity Hardening - - tech category: Profiles - - status: OPEN - - comments: - - actor: User - - component: AppRuntime - - trigger: - - precondition: A backup has been created for this Profile - - result: The Profile has been restored by the backup - - priority: LOW - - complexity: LOW - - size: M - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-arp7.md %} diff --git a/_docs_use-cases/use-case-ars1.md b/_docs_use-cases/use-case-ars1.md deleted file mode 100644 index f00002c43..000000000 --- a/_docs_use-cases/use-case-ars1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ars1 -published: true -title: "Select Profile / Profile Login / Create Profile Session" -type: use-case -toc: true -properties: - - id: ARS1 - - layer: Device - - facade: AppRuntime - - function: selectAccount - - description: - - feature category: Multi-profile - - tech category: Profiles - - status: CHANGES REQUIRED - - comments: Why is this not within AccountServices? Password needs to be taken into consideration - - actor: User - - component: AppRuntime - - trigger: - - precondition: A pin / password has been set up for this Profile - - result: The Device knows which Profile should be used for the user interface or any action. If a specific action was triggered to select the Profile, the action is now executed If not, the User is redirected to the Profile's Start Screen - - priority: LOW - - complexity: - - size: - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ars1.md %} diff --git a/_docs_use-cases/use-case-ars2.md b/_docs_use-cases/use-case-ars2.md deleted file mode 100644 index 1c42fcbed..000000000 --- a/_docs_use-cases/use-case-ars2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ars2 -published: true -title: "Notify Backbone of unauthorized Profile access" -type: use-case -toc: true -properties: - - id: ARS2 - - layer: Transport - - facade: - - function: - - description: Possible other Devices of the Identity should be notified, if the pin or password has been wrongly entered multiple times. This notification could happen by the use of the Backbone, in addition to a possible central tracking of failed login attempts on Devices. - - feature category: Identity Hardening - - tech category: Profiles - - status: QUESTIONS - - comments: - - actor: AppRuntime - - component: AppRuntime - - trigger: A wrong pin / password in the Profile Login has been entered multiple times - - precondition: A pin / password has been set up for this Profile - - result: - - priority: LOW - - complexity: MEDIUM - - size: L - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ars2.md %} diff --git a/_docs_use-cases/use-case-ars3.md b/_docs_use-cases/use-case-ars3.md deleted file mode 100644 index 2f51e5404..000000000 --- a/_docs_use-cases/use-case-ars3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ars3 -published: true -title: "Set-up or change password of Profile" -type: use-case -toc: true -properties: - - id: ARS3 - - layer: Device - - facade: - - function: - - description: A password for a Profile can be set up or changed by the User. Additionally, a password hint can be entered to help the User remembering the password. - - feature category: Identity Hardening - - tech category: Profile - - status: IDEA - - comments: - - actor: User - - component: AppRuntime - - trigger: - - precondition: Profile has been selected (and has been logged into) - - result: A (new) password for this Profile is stored - - priority: LOW - - complexity: HIGH - - size: L - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ars3.md %} diff --git a/_docs_use-cases/use-case-ars4.md b/_docs_use-cases/use-case-ars4.md deleted file mode 100644 index 3ee9ad489..000000000 --- a/_docs_use-cases/use-case-ars4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ars4 -published: true -title: "Remove Profile from Device" -type: use-case -toc: true -properties: - - id: ARS4 - - layer: Transport - - facade: - - function: - - description: An Identity can be removed from the current Device (but will be kept for other Devices, e.g. to offboard one Device). Additionally, a Profile can be removed from another onboarded Device (e.g. for wiping another Device). If no other Device has been set up for the Profile, removing the Profile would trigger the Delete Identity from Backbone use case. - - feature category: Multi-profile - - tech category: Profile - - status: OPEN - - comments: - - actor: User - - component: AppRuntime - - trigger: - - precondition: Profile has been selected (and has been logged into) Other Devices has been onboarded for this Identity - - result: The Profile is removed from the Device - - priority: HIGH - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ars4.md %} diff --git a/_docs_use-cases/use-case-ars5.md b/_docs_use-cases/use-case-ars5.md deleted file mode 100644 index fe58dc901..000000000 --- a/_docs_use-cases/use-case-ars5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ars5 -published: true -title: "Delete Identity from Backbone" -type: use-case -toc: true -properties: - - id: ARS5 - - layer: Transport - - facade: - - function: - - description: An Identity can be deleted from the Backbone completely. - - feature category: - - tech category: Profile - - status: OPEN - - comments: - - actor: User - - component: AppRuntime - - trigger: - - precondition: Profile has been selected (and has been logged into) - - result: The Identity has been removed from the Identity - - priority: HIGH - - complexity: HIGH - - size: L - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ars5.md %} diff --git a/_docs_use-cases/use-case-ars6.md b/_docs_use-cases/use-case-ars6.md deleted file mode 100644 index 82f4d625f..000000000 --- a/_docs_use-cases/use-case-ars6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ars6 -published: true -title: "Create Identity recovery data" -type: use-case -toc: true -properties: - - id: ARS6 - - layer: Transport - - facade: - - function: - - description: The User can (and should) create a local and offline backup of the selected Profile. The backup contains enough information to restore the complete Identity on a future Device and thus needs to be exported to the current Device in order to be shared, printed out or stored on a secure media. The backup contains very sensitive data and thus needs to be kept secret and securely stored. It should be explained to the User how the backup should be handled and that it only keeps private information about a single Profile. - - feature category: Identity Hardening - - tech category: Profile - - status: OPEN - - comments: - - actor: User - - component: AppRuntime - - trigger: - - precondition: Profile has been selected (and has been logged into) - - result: A backup has been created - - priority: LOW - - complexity: HIGH - - size: L - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ars6.md %} diff --git a/_docs_use-cases/use-case-ars7.md b/_docs_use-cases/use-case-ars7.md deleted file mode 100644 index 08ad0881e..000000000 --- a/_docs_use-cases/use-case-ars7.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ars7 -published: true -title: "Set-up or change auto logout of Profile" -type: use-case -toc: true -properties: - - id: ARS7 - - layer: Device - - facade: - - function: - - description: If a password for a Profile has been set up, an auto logout can be enabled. - - feature category: Identity Hardening - - tech category: Profile - - status: IDEA - - comments: - - actor: User - - component: AppRuntime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: MEDIUM - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ars7.md %} diff --git a/_docs_use-cases/use-case-c01.md b/_docs_use-cases/use-case-c01.md deleted file mode 100644 index 0555c9f92..000000000 --- a/_docs_use-cases/use-case-c01.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-c01 -published: true -title: "Get the Connector version information" -type: use-case -toc: true -properties: - - id: C01 - - layer: Device - - facade: Connector - - function: - - description: - - feature category: - - tech category: Monitoring - - status: DONE - - comments: - - actor: Integrator - - component: Connector - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-c01.md %} diff --git a/_docs_use-cases/use-case-c02.md b/_docs_use-cases/use-case-c02.md deleted file mode 100644 index 33e53a3e0..000000000 --- a/_docs_use-cases/use-case-c02.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-c02 -published: true -title: "Get the number of requests and the status codes that were returned by the Connector." -type: use-case -toc: true -properties: - - id: C02 - - layer: Device - - facade: Connector - - function: - - description: - - feature category: - - tech category: Monitoring - - status: DONE - - comments: - - actor: Integrator - - component: Connector - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-c02.md %} diff --git a/_docs_use-cases/use-case-c03.md b/_docs_use-cases/use-case-c03.md deleted file mode 100644 index 2f1745fdc..000000000 --- a/_docs_use-cases/use-case-c03.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-c03 -published: true -title: "Configure Config Property" -type: use-case -toc: true -properties: - - id: C03 - - layer: Device - - facade: Connector - - function: - - description: - - feature category: - - tech category: Configuration - - status: DONE - - comments: - - actor: Integrator - - component: Connector - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-c03.md %} diff --git a/_docs_use-cases/use-case-c04.md b/_docs_use-cases/use-case-c04.md deleted file mode 100644 index c26295bdc..000000000 --- a/_docs_use-cases/use-case-c04.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-c04 -published: true -title: "POST REST Endpoint" -type: use-case -toc: true -properties: - - id: C04 - - layer: Device - - facade: Connector - - function: - - description: - - feature category: - - tech category: Integration - - status: DONE - - comments: - - actor: Integrator - - component: Connector - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-c04.md %} diff --git a/_docs_use-cases/use-case-c05.md b/_docs_use-cases/use-case-c05.md deleted file mode 100644 index 01f7692e6..000000000 --- a/_docs_use-cases/use-case-c05.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-c05 -published: true -title: "GET REST Endpoint" -type: use-case -toc: true -properties: - - id: C05 - - layer: Device - - facade: Connector - - function: - - description: - - feature category: - - tech category: Integration - - status: DONE - - comments: - - actor: Integrator - - component: Connector - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-c05.md %} diff --git a/_docs_use-cases/use-case-c06.md b/_docs_use-cases/use-case-c06.md deleted file mode 100644 index 5945503ed..000000000 --- a/_docs_use-cases/use-case-c06.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-c06 -published: true -title: "PUT REST Endpoint" -type: use-case -toc: true -properties: - - id: C06 - - layer: Device - - facade: Connector - - function: - - description: - - feature category: - - tech category: Integration - - status: DONE - - comments: - - actor: Integrator - - component: Connector - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-c06.md %} diff --git a/_docs_use-cases/use-case-c07.md b/_docs_use-cases/use-case-c07.md deleted file mode 100644 index 779d66403..000000000 --- a/_docs_use-cases/use-case-c07.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-c07 -published: true -title: "DELETE REST Endpoint" -type: use-case -toc: true -properties: - - id: C07 - - layer: Device - - facade: Connector - - function: - - description: - - feature category: - - tech category: Integration - - status: DONE - - comments: - - actor: Integrator - - component: Connector - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-c07.md %} diff --git a/_docs_use-cases/use-case-consumption-accept-incoming-request.md b/_docs_use-cases/use-case-consumption-accept-incoming-request.md new file mode 100644 index 000000000..381a72340 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-accept-incoming-request.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-accept-incoming-request +published: true +title: "Accept incoming Request" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RIR8 + - layer: Consumption + - facade: IncomingRequestsFacade + - function: accept + - description: Accepts the incoming 'Request' with the given 'id'. + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/accept-incoming-request +require: +required_by: +--- + +{% include use-cases/use-case-consumption-accept-incoming-request.md %} diff --git a/_docs_use-cases/use-case-consumption-check-if-incoming-request-can-be-accepted.md b/_docs_use-cases/use-case-consumption-check-if-incoming-request-can-be-accepted.md new file mode 100644 index 000000000..3158fef48 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-check-if-incoming-request-can-be-accepted.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-check-if-incoming-request-can-be-accepted +published: true +title: "Check if incoming Request can be accepted" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RIR7 + - layer: Consumption + - facade: IncomingRequestsFacade + - function: canAccept + - description: Checks if the 'Request' with the given 'id' can be accepted. + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/check-if-incoming-request-can-be-accepted +require: +required_by: +--- + +{% include use-cases/use-case-consumption-check-if-incoming-request-can-be-accepted.md %} diff --git a/_docs_use-cases/use-case-consumption-check-if-incoming-request-can-be-rejected.md b/_docs_use-cases/use-case-consumption-check-if-incoming-request-can-be-rejected.md new file mode 100644 index 000000000..b7c70f301 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-check-if-incoming-request-can-be-rejected.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-check-if-incoming-request-can-be-rejected +published: true +title: "Check if incoming Request can be rejected" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RIR9 + - layer: Consumption + - facade: IncomingRequestsFacade + - function: canReject + - description: Checks if the 'Request' with the given 'id' can be rejected. + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/check-if-incoming-request-can-be-rejected +require: +required_by: +--- + +{% include use-cases/use-case-consumption-check-if-incoming-request-can-be-rejected.md %} diff --git a/_docs_use-cases/use-case-consumption-check-if-outgoing-request-can-be-created.md b/_docs_use-cases/use-case-consumption-check-if-outgoing-request-can-be-created.md new file mode 100644 index 000000000..caad5ed93 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-check-if-outgoing-request-can-be-created.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-check-if-outgoing-request-can-be-created +published: true +title: "Check if outgoing Request can be created" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ROR1 + - layer: Consumption + - facade: OutgoingRequestsFacade + - function: canCreate + - description: Validates the given 'OutgoingRequest' before creating it + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/check-if-outgoing-request-can-be-created +require: +required_by: +--- + +{% include use-cases/use-case-consumption-check-if-outgoing-request-can-be-created.md %} diff --git a/_docs_use-cases/use-case-consumption-create-a-blueprint-of-a-relationship-template.md b/_docs_use-cases/use-case-consumption-create-a-blueprint-of-a-relationship-template.md new file mode 100644 index 000000000..226feb137 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-a-blueprint-of-a-relationship-template.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-a-blueprint-of-a-relationship-template +published: false +title: "Create a Blueprint of a Relationship Template" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RB1 + - layer: Consumption + - facade: + - function: + - description: Create a parametrizable Blueprint to create Relationship Templates with. This is used for creating specific business cards for Users. + - feature category: + - tech category: Blueprint + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: HIGH + - size: HIGH + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-a-blueprint-of-a-relationship-template +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-a-blueprint-of-a-relationship-template.md %} diff --git a/_docs_use-cases/use-case-consumption-create-a-shared-attribute-copy.md b/_docs_use-cases/use-case-consumption-create-a-shared-attribute-copy.md new file mode 100644 index 000000000..289f9edf9 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-a-shared-attribute-copy.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-a-shared-attribute-copy +published: true +title: "Create a shared Attribute copy" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA6 + - layer: Consumption + - facade: AttributesFacade + - function: createSharedAttributeCopy + - description: + - feature category: Cross-identity attribute sharing + - tech category: Attributes + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-a-shared-attribute-copy +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-a-shared-attribute-copy.md %} diff --git a/_docs_use-cases/use-case-consumption-create-an-attribute.md b/_docs_use-cases/use-case-consumption-create-an-attribute.md new file mode 100644 index 000000000..3827e2c0d --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-an-attribute.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-an-attribute +published: true +title: "Create an Attribute" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA1 + - layer: Consumption + - facade: AttributesFacade + - function: createAttribute + - description: + - feature category: Normalized attributes + - tech category: Attributes + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-an-attribute +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-an-attribute.md %} diff --git a/_docs_use-cases/use-case-consumption-create-and-complete-outgoing-request-from-relationship-template-response.md b/_docs_use-cases/use-case-consumption-create-and-complete-outgoing-request-from-relationship-template-response.md new file mode 100644 index 000000000..ec72d5b44 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-and-complete-outgoing-request-from-relationship-template-response.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-and-complete-outgoing-request-from-relationship-template-response +published: true +title: "Create and complete outgoing Request from Relationship Template Response" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ROR5 + - layer: Consumption + - facade: OutgoingRequestsFacade + - function: createAndCompleteFromRelationshipTemplateResponse + - description: + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-and-complete-outgoing-request-from-relationship-template-response +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-and-complete-outgoing-request-from-relationship-template-response.md %} diff --git a/_docs_use-cases/use-case-consumption-create-automation-rule.md b/_docs_use-cases/use-case-consumption-create-automation-rule.md new file mode 100644 index 000000000..02ac57d23 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-automation-rule.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-automation-rule +published: false +title: "Create Automation Rule" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: IAR1 + - layer: Consumption + - facade: AutomationRuleFacade + - function: + - description: + - feature category: + - tech category: Automation Rules + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: HIGH + - size: L + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-automation-rule +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-automation-rule.md %} diff --git a/_docs_use-cases/use-case-consumption-create-draft.md b/_docs_use-cases/use-case-consumption-create-draft.md new file mode 100644 index 000000000..cb0f6d482 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-draft.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-draft +published: true +title: "Create Draft" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RDR1 + - layer: Consumption + - facade: DraftFacade + - function: createDraft + - description: + - feature category: Cross-device draft handling + - tech category: Drafts + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-draft +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-draft.md %} diff --git a/_docs_use-cases/use-case-consumption-create-mail.md b/_docs_use-cases/use-case-consumption-create-mail.md new file mode 100644 index 000000000..6de1a754e --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-mail.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-mail +published: false +title: "Create Mail" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RM1 + - layer: Consumption + - facade: + - function: + - description: Creates a Mail as a specific types of Messages + - feature category: Bidirectional unstructured communication + - tech category: Mail + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-mail +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-mail.md %} diff --git a/_docs_use-cases/use-case-consumption-create-outgoing-request.md b/_docs_use-cases/use-case-consumption-create-outgoing-request.md new file mode 100644 index 000000000..06531ce1b --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-outgoing-request.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-outgoing-request +published: true +title: "Create outgoing Request" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ROR2 + - layer: Consumption + - facade: OutgoingRequestsFacade + - function: create + - description: Creates a new outgoing 'Request'. + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-outgoing-request +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-outgoing-request.md %} diff --git a/_docs_use-cases/use-case-consumption-create-relationship-template-out-of-blueprint.md b/_docs_use-cases/use-case-consumption-create-relationship-template-out-of-blueprint.md new file mode 100644 index 000000000..c403c8278 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-relationship-template-out-of-blueprint.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-relationship-template-out-of-blueprint +published: false +title: "Create Relationship Template out of Blueprint" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RB6 + - layer: Consumption + - facade: + - function: + - description: + - feature category: + - tech category: Blueprint + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: MEDIUM + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-relationship-template-out-of-blueprint +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-relationship-template-out-of-blueprint.md %} diff --git a/_docs_use-cases/use-case-consumption-create-requestitem-to-delete-relationship.md b/_docs_use-cases/use-case-consumption-create-requestitem-to-delete-relationship.md new file mode 100644 index 000000000..c1fa3c6af --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-requestitem-to-delete-relationship.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-requestitem-to-delete-relationship +published: false +title: "Create requestItem to delete Relationship" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RRI1 + - layer: Consumption + - facade: RequestItemFacade + - function: + - description: + - feature category: + - tech category: RequestItems + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-requestitem-to-delete-relationship +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-requestitem-to-delete-relationship.md %} diff --git a/_docs_use-cases/use-case-consumption-create-requestitem-to-delete-shared-attribute.md b/_docs_use-cases/use-case-consumption-create-requestitem-to-delete-shared-attribute.md new file mode 100644 index 000000000..6cf77ac07 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-requestitem-to-delete-shared-attribute.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-requestitem-to-delete-shared-attribute +published: false +title: "Create requestItem to delete shared Attribute" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA15 + - layer: Consumption + - facade: + - function: + - description: + - feature category: + - tech category: Attributes + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-requestitem-to-delete-shared-attribute +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-requestitem-to-delete-shared-attribute.md %} diff --git a/_docs_use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-attribute-deletion.md b/_docs_use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-attribute-deletion.md new file mode 100644 index 000000000..c12180d2a --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-attribute-deletion.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-requestitem-to-inform-about-forced-attribute-deletion +published: false +title: "Create requestItem to inform about forced Attribute deletion" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RRI3 + - layer: Consumption + - facade: RequestItemFacade + - function: + - description: + - feature category: + - tech category: RequestItems + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-requestitem-to-inform-about-forced-attribute-deletion +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-attribute-deletion.md %} diff --git a/_docs_use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-relationship-deletion.md b/_docs_use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-relationship-deletion.md new file mode 100644 index 000000000..51ab730e6 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-relationship-deletion.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-requestitem-to-inform-about-forced-relationship-deletion +published: false +title: "Create requestItem to inform about forced Relationship deletion" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RRI2 + - layer: Consumption + - facade: RequestItemFacade + - function: + - description: + - feature category: + - tech category: RequestItems + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-requestitem-to-inform-about-forced-relationship-deletion +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-relationship-deletion.md %} diff --git a/_docs_use-cases/use-case-consumption-create-setting.md b/_docs_use-cases/use-case-consumption-create-setting.md new file mode 100644 index 000000000..861c54248 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-create-setting.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-create-setting +published: true +title: "Create Setting" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RS1 + - layer: Consumption + - facade: SettingFacade + - function: createSetting + - description: + - feature category: Cross-device configuration + - tech category: Settings + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/create-setting +require: +required_by: +--- + +{% include use-cases/use-case-consumption-create-setting.md %} diff --git a/_docs_use-cases/use-case-consumption-delete-attribute.md b/_docs_use-cases/use-case-consumption-delete-attribute.md new file mode 100644 index 000000000..8e73b1461 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-delete-attribute.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-delete-attribute +published: false +title: "Delete Attribute" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA7 + - layer: Consumption + - facade: AttributesFacade + - function: deleteAttribute + - description: + - feature category: Normalized attributes + - tech category: Attributes + - status: QUESTIONS + - comments: What exactly is implemented here? + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: HIGH + - complexity: MEDIUM + - size: M + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/delete-attribute +require: +required_by: +--- + +{% include use-cases/use-case-consumption-delete-attribute.md %} diff --git a/_docs_use-cases/use-case-consumption-delete-attributelistener.md b/_docs_use-cases/use-case-consumption-delete-attributelistener.md new file mode 100644 index 000000000..f4256d6ac --- /dev/null +++ b/_docs_use-cases/use-case-consumption-delete-attributelistener.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-delete-attributelistener +published: false +title: "Delete AttributeListener" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RAL3 + - layer: Consumption + - facade: + - function: + - description: + - feature category: Attribute automation + - tech category: AttributeListeners + - status: OPEN + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/delete-attributelistener +require: +required_by: +--- + +{% include use-cases/use-case-consumption-delete-attributelistener.md %} diff --git a/_docs_use-cases/use-case-consumption-delete-automation-rule.md b/_docs_use-cases/use-case-consumption-delete-automation-rule.md new file mode 100644 index 000000000..847a50ad4 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-delete-automation-rule.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-delete-automation-rule +published: false +title: "Delete Automation Rule" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: IAR5 + - layer: Consumption + - facade: AutomationRuleFacade + - function: + - description: + - feature category: + - tech category: Automation Rules + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/delete-automation-rule +require: +required_by: +--- + +{% include use-cases/use-case-consumption-delete-automation-rule.md %} diff --git a/_docs_use-cases/use-case-consumption-delete-blueprint.md b/_docs_use-cases/use-case-consumption-delete-blueprint.md new file mode 100644 index 000000000..7a4c3ea38 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-delete-blueprint.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-delete-blueprint +published: false +title: "Delete Blueprint" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RB5 + - layer: Consumption + - facade: + - function: + - description: + - feature category: + - tech category: Blueprint + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/delete-blueprint +require: +required_by: +--- + +{% include use-cases/use-case-consumption-delete-blueprint.md %} diff --git a/_docs_use-cases/use-case-consumption-delete-draft.md b/_docs_use-cases/use-case-consumption-delete-draft.md new file mode 100644 index 000000000..f47c98932 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-delete-draft.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-delete-draft +published: true +title: "Delete Draft" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RDR5 + - layer: Consumption + - facade: DraftFacade + - function: deleteDraft + - description: + - feature category: Cross-device draft handling + - tech category: Drafts + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/delete-draft +require: +required_by: +--- + +{% include use-cases/use-case-consumption-delete-draft.md %} diff --git a/_docs_use-cases/use-case-consumption-delete-setting.md b/_docs_use-cases/use-case-consumption-delete-setting.md new file mode 100644 index 000000000..3bd8047a0 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-delete-setting.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-delete-setting +published: true +title: "Delete Setting" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RS4 + - layer: Consumption + - facade: SettingFacade + - function: deleteSetting + - description: + - feature category: Cross-device configuration + - tech category: Settings + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/delete-setting +require: +required_by: +--- + +{% include use-cases/use-case-consumption-delete-setting.md %} diff --git a/_docs_use-cases/use-case-consumption-delete-shared-attribute.md b/_docs_use-cases/use-case-consumption-delete-shared-attribute.md new file mode 100644 index 000000000..f10d787e9 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-delete-shared-attribute.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-delete-shared-attribute +published: false +title: "Delete shared Attribute" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA14 + - layer: Consumption + - facade: AttributesFacade + - function: + - description: + - feature category: + - tech category: Attributes + - status: OPEN + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: HIGH + - complexity: MEDIUM + - size: M + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/delete-shared-attribute +require: +required_by: +--- + +{% include use-cases/use-case-consumption-delete-shared-attribute.md %} diff --git a/_docs_use-cases/use-case-consumption-discards-outgoing-request.md b/_docs_use-cases/use-case-consumption-discards-outgoing-request.md new file mode 100644 index 000000000..3ee5e167c --- /dev/null +++ b/_docs_use-cases/use-case-consumption-discards-outgoing-request.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-discards-outgoing-request +published: true +title: "Discards outgoing Request" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ROR8 + - layer: Consumption + - facade: OutgoingRequestsFacade + - function: discard + - description: + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/discards-outgoing-request +require: +required_by: +--- + +{% include use-cases/use-case-consumption-discards-outgoing-request.md %} diff --git a/_docs_use-cases/use-case-consumption-execute-a-relationshipattributequery.md b/_docs_use-cases/use-case-consumption-execute-a-relationshipattributequery.md new file mode 100644 index 000000000..aa0ae54c1 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-execute-a-relationshipattributequery.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-execute-a-relationshipattributequery +published: true +title: "Execute a RelationshipAttributeQuery" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA9 + - layer: Consumption + - facade: AttributesFacade + - function: executeRelationshipAttributeQuery + - description: + - feature category: Cross-identity attribute sharing + - tech category: Attributes + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/execute-a-relationshipattributequery +require: +required_by: +--- + +{% include use-cases/use-case-consumption-execute-a-relationshipattributequery.md %} diff --git a/_docs_use-cases/use-case-consumption-execute-a-thirdpartyattributequery.md b/_docs_use-cases/use-case-consumption-execute-a-thirdpartyattributequery.md new file mode 100644 index 000000000..66b3f6e15 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-execute-a-thirdpartyattributequery.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-execute-a-thirdpartyattributequery +published: true +title: "Execute a ThirdPartyAttributeQuery" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA10 + - layer: Consumption + - facade: AttributesFacade + - function: executeThirdpartyAttributeQuery + - description: + - feature category: Cross-identity attribute sharing + - tech category: Attributes + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/execute-a-thirdpartyattributequery +require: +required_by: +--- + +{% include use-cases/use-case-consumption-execute-a-thirdpartyattributequery.md %} diff --git a/_docs_use-cases/use-case-consumption-execute-an-identityattributequery.md b/_docs_use-cases/use-case-consumption-execute-an-identityattributequery.md new file mode 100644 index 000000000..f2352e4fa --- /dev/null +++ b/_docs_use-cases/use-case-consumption-execute-an-identityattributequery.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-execute-an-identityattributequery +published: true +title: "Execute an IdentityAttributeQuery" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA8 + - layer: Consumption + - facade: AttributesFacade + - function: executeIdentityAttributeQuery + - description: + - feature category: Cross-identity attribute sharing + - tech category: Attributes + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/execute-an-identityattributequery +require: +required_by: +--- + +{% include use-cases/use-case-consumption-execute-an-identityattributequery.md %} diff --git a/_docs_use-cases/use-case-consumption-get-attribute.md b/_docs_use-cases/use-case-consumption-get-attribute.md new file mode 100644 index 000000000..d2aa21a87 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-attribute.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-attribute +published: true +title: "Get Attribute" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA5 + - layer: Consumption + - facade: AttributesFacade + - function: getAttribute + - description: Fetches the attribute with the given 'id'. + - feature category: Normalized attributes + - tech category: Attributes + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-attribute +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-attribute.md %} diff --git a/_docs_use-cases/use-case-consumption-get-attributelistener.md b/_docs_use-cases/use-case-consumption-get-attributelistener.md new file mode 100644 index 000000000..1a8105a9a --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-attributelistener.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-attributelistener +published: true +title: "Get AttributeListener" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RAL2 + - layer: Consumption + - facade: AttributeListenersFacade + - function: getAttributeListener + - description: + - feature category: Attribute automation + - tech category: AttributeListeners + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-attributelistener +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-attributelistener.md %} diff --git a/_docs_use-cases/use-case-consumption-get-attributes-of-peer.md b/_docs_use-cases/use-case-consumption-get-attributes-of-peer.md new file mode 100644 index 000000000..45e3c1982 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-attributes-of-peer.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-attributes-of-peer +published: true +title: "Get Attributes of peer" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA3 + - layer: Consumption + - facade: AttributesFacade + - function: getPeerAttributes + - description: + - feature category: Normalized attributes + - tech category: Attributes + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-attributes-of-peer +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-attributes-of-peer.md %} diff --git a/_docs_use-cases/use-case-consumption-get-attributes-shared-to-peer.md b/_docs_use-cases/use-case-consumption-get-attributes-shared-to-peer.md new file mode 100644 index 000000000..bae6679f7 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-attributes-shared-to-peer.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-attributes-shared-to-peer +published: true +title: "Get Attributes shared to peer" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA4 + - layer: Consumption + - facade: AttributesFacade + - function: getSharedToPeerAttributes + - description: + - feature category: Cross-identity attribute sharing + - tech category: Attributes + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-attributes-shared-to-peer +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-attributes-shared-to-peer.md %} diff --git a/_docs_use-cases/use-case-consumption-get-automation-rule.md b/_docs_use-cases/use-case-consumption-get-automation-rule.md new file mode 100644 index 000000000..6d2d24fa1 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-automation-rule.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-automation-rule +published: false +title: "Get Automation Rule" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: IAR3 + - layer: Consumption + - facade: AutomationRuleFacade + - function: + - description: + - feature category: + - tech category: Automation Rules + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-automation-rule +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-automation-rule.md %} diff --git a/_docs_use-cases/use-case-consumption-get-blueprint.md b/_docs_use-cases/use-case-consumption-get-blueprint.md new file mode 100644 index 000000000..c0c6c801e --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-blueprint.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-blueprint +published: false +title: "Get Blueprint" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RB3 + - layer: Consumption + - facade: + - function: + - description: + - feature category: + - tech category: Blueprint + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-blueprint +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-blueprint.md %} diff --git a/_docs_use-cases/use-case-consumption-get-draft.md b/_docs_use-cases/use-case-consumption-get-draft.md new file mode 100644 index 000000000..b168dc1fa --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-draft.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-draft +published: true +title: "Get Draft" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RDR3 + - layer: Consumption + - facade: DraftFacade + - function: getDraft + - description: + - feature category: Cross-device draft handling + - tech category: Drafts + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-draft +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-draft.md %} diff --git a/_docs_use-cases/use-case-consumption-get-incoming-request.md b/_docs_use-cases/use-case-consumption-get-incoming-request.md new file mode 100644 index 000000000..933af6e78 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-incoming-request.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-incoming-request +published: true +title: "Get incoming Request" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RIR2 + - layer: Consumption + - facade: IncomingRequestsFacade + - function: getRequest + - description: Fetches the incoming 'Request' with the given 'id'. + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-incoming-request +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-incoming-request.md %} diff --git a/_docs_use-cases/use-case-consumption-get-mail.md b/_docs_use-cases/use-case-consumption-get-mail.md new file mode 100644 index 000000000..729568ebe --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-mail.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-mail +published: false +title: "Get Mail" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RM3 + - layer: Consumption + - facade: + - function: + - description: + - feature category: Bidirectional unstructured communication + - tech category: Mail + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-mail +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-mail.md %} diff --git a/_docs_use-cases/use-case-consumption-get-outgoing-request.md b/_docs_use-cases/use-case-consumption-get-outgoing-request.md new file mode 100644 index 000000000..ed9717af0 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-outgoing-request.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-outgoing-request +published: true +title: "Get outgoing Request" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ROR4 + - layer: Consumption + - facade: OutgoingRequestsFacade + - function: getRequest + - description: + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-outgoing-request +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-outgoing-request.md %} diff --git a/_docs_use-cases/use-case-consumption-get-setting.md b/_docs_use-cases/use-case-consumption-get-setting.md new file mode 100644 index 000000000..91e842217 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-get-setting.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-get-setting +published: true +title: "Get Setting" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RS3 + - layer: Consumption + - facade: SettingFacade + - function: getSetting + - description: + - feature category: Cross-device configuration + - tech category: Settings + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/get-setting +require: +required_by: +--- + +{% include use-cases/use-case-consumption-get-setting.md %} diff --git a/_docs_use-cases/use-case-consumption-pin-mark-as-favorite-relationship.md b/_docs_use-cases/use-case-consumption-pin-mark-as-favorite-relationship.md new file mode 100644 index 000000000..c63635e52 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-pin-mark-as-favorite-relationship.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-pin-mark-as-favorite-relationship +published: false +title: "Pin/mark as favorite relationship" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RR10 + - layer: Consumption + - facade: + - function: + - description: + - feature category: + - tech category: Relationships + - status: IDEA + - comments: + - actor: User + - component: AppRuntime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: MEDIUM + - size: M + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/pin/mark-as-favorite-relationship +require: +required_by: +--- + +{% include use-cases/use-case-consumption-pin-mark-as-favorite-relationship.md %} diff --git a/_docs_use-cases/use-case-consumption-query-attributelisteners.md b/_docs_use-cases/use-case-consumption-query-attributelisteners.md new file mode 100644 index 000000000..4f759105d --- /dev/null +++ b/_docs_use-cases/use-case-consumption-query-attributelisteners.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-query-attributelisteners +published: true +title: "Query AttributeListeners" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RAL1 + - layer: Consumption + - facade: AttributeListenersFacade + - function: getAttributeListeners + - description: + - feature category: Attribute automation + - tech category: AttributeListeners + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/query-attributelisteners +require: +required_by: +--- + +{% include use-cases/use-case-consumption-query-attributelisteners.md %} diff --git a/_docs_use-cases/use-case-consumption-query-attributes.md b/_docs_use-cases/use-case-consumption-query-attributes.md new file mode 100644 index 000000000..1d24e8219 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-query-attributes.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-query-attributes +published: true +title: "Query Attributes" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA2 + - layer: Consumption + - facade: AttributesFacade + - function: getAttributes + - description: + - feature category: Normalized attributes + - tech category: Attributes + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/query-attributes +require: +required_by: +--- + +{% include use-cases/use-case-consumption-query-attributes.md %} diff --git a/_docs_use-cases/use-case-consumption-query-automation-rules.md b/_docs_use-cases/use-case-consumption-query-automation-rules.md new file mode 100644 index 000000000..e9292a939 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-query-automation-rules.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-query-automation-rules +published: false +title: "Query Automation Rules" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: IAR2 + - layer: Consumption + - facade: AutomationRuleFacade + - function: + - description: + - feature category: + - tech category: Automation Rules + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/query-automation-rules +require: +required_by: +--- + +{% include use-cases/use-case-consumption-query-automation-rules.md %} diff --git a/_docs_use-cases/use-case-consumption-query-blueprints.md b/_docs_use-cases/use-case-consumption-query-blueprints.md new file mode 100644 index 000000000..12f86c2ae --- /dev/null +++ b/_docs_use-cases/use-case-consumption-query-blueprints.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-query-blueprints +published: false +title: "Query Blueprints" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RB2 + - layer: Consumption + - facade: + - function: + - description: + - feature category: + - tech category: Blueprint + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/query-blueprints +require: +required_by: +--- + +{% include use-cases/use-case-consumption-query-blueprints.md %} diff --git a/_docs_use-cases/use-case-consumption-query-drafts.md b/_docs_use-cases/use-case-consumption-query-drafts.md new file mode 100644 index 000000000..208a5e79a --- /dev/null +++ b/_docs_use-cases/use-case-consumption-query-drafts.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-query-drafts +published: true +title: "Query Drafts" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RDR2 + - layer: Consumption + - facade: DraftFacade + - function: getDrafts + - description: + - feature category: Cross-device draft handling + - tech category: Drafts + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/query-drafts +require: +required_by: +--- + +{% include use-cases/use-case-consumption-query-drafts.md %} diff --git a/_docs_use-cases/use-case-consumption-query-incoming-requests.md b/_docs_use-cases/use-case-consumption-query-incoming-requests.md new file mode 100644 index 000000000..fdb5ef0a3 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-query-incoming-requests.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-query-incoming-requests +published: true +title: "Query incoming Requests" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RIR1 + - layer: Consumption + - facade: IncomingRequestsFacade + - function: getRequests + - description: Queries incoming 'Requests'. + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/query-incoming-requests +require: +required_by: +--- + +{% include use-cases/use-case-consumption-query-incoming-requests.md %} diff --git a/_docs_use-cases/use-case-consumption-query-mails.md b/_docs_use-cases/use-case-consumption-query-mails.md new file mode 100644 index 000000000..578a70876 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-query-mails.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-query-mails +published: false +title: "Query Mails" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RM2 + - layer: Consumption + - facade: + - function: + - description: + - feature category: Bidirectional unstructured communication + - tech category: Mail + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/query-mails +require: +required_by: +--- + +{% include use-cases/use-case-consumption-query-mails.md %} diff --git a/_docs_use-cases/use-case-consumption-query-outgoing-requests.md b/_docs_use-cases/use-case-consumption-query-outgoing-requests.md new file mode 100644 index 000000000..ef0e8a208 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-query-outgoing-requests.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-query-outgoing-requests +published: true +title: "Query outgoing Requests" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ROR3 + - layer: Consumption + - facade: OutgoingRequestsFacade + - function: getRequests + - description: Queries outgoing 'Requests'. + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/query-outgoing-requests +require: +required_by: +--- + +{% include use-cases/use-case-consumption-query-outgoing-requests.md %} diff --git a/_docs_use-cases/use-case-consumption-query-settings.md b/_docs_use-cases/use-case-consumption-query-settings.md new file mode 100644 index 000000000..248686241 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-query-settings.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-query-settings +published: true +title: "Query Settings" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RS2 + - layer: Consumption + - facade: SettingFacade + - function: getSettings + - description: + - feature category: Cross-device configuration + - tech category: Settings + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/query-settings +require: +required_by: +--- + +{% include use-cases/use-case-consumption-query-settings.md %} diff --git a/_docs_use-cases/use-case-consumption-reject-incoming-request.md b/_docs_use-cases/use-case-consumption-reject-incoming-request.md new file mode 100644 index 000000000..e62ca1f02 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-reject-incoming-request.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-reject-incoming-request +published: true +title: "Reject incoming Request" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RIR10 + - layer: Consumption + - facade: IncomingRequestsFacade + - function: reject + - description: Rejects the incoming 'Request' with the given 'id'. + - feature category: Normalized requests/responses to and from users + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/reject-incoming-request +require: +required_by: +--- + +{% include use-cases/use-case-consumption-reject-incoming-request.md %} diff --git a/_docs_use-cases/use-case-consumption-set-categorization-of-relationship.md b/_docs_use-cases/use-case-consumption-set-categorization-of-relationship.md new file mode 100644 index 000000000..98b7bd2a6 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-set-categorization-of-relationship.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-set-categorization-of-relationship +published: false +title: "Set categorization of relationship" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RR9 + - layer: Consumption + - facade: + - function: + - description: + - feature category: + - tech category: Relationships + - status: IDEA + - comments: + - actor: User + - component: AppRuntime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: MEDIUM + - size: M + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/set-categorization-of-relationship +require: +required_by: +--- + +{% include use-cases/use-case-consumption-set-categorization-of-relationship.md %} diff --git a/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-check-prerequisites.md b/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-check-prerequisites.md new file mode 100644 index 000000000..3470e433c --- /dev/null +++ b/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-check-prerequisites.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-set-status-of-incoming-request-to-check-prerequisites +published: true +title: "Set status of incoming Request to check prerequisites" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RIR4 + - layer: Consumption + - facade: IncomingRequestsFacade + - function: checkPrerequisites + - description: + - feature category: Request automation + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/set-status-of-incoming-request-to-check-prerequisites +require: +required_by: +--- + +{% include use-cases/use-case-consumption-set-status-of-incoming-request-to-check-prerequisites.md %} diff --git a/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-complete.md b/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-complete.md new file mode 100644 index 000000000..514734113 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-complete.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-set-status-of-incoming-request-to-complete +published: true +title: "Set status of incoming Request to complete" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RIR6 + - layer: Consumption + - facade: IncomingRequestsFacade + - function: complete + - description: + - feature category: Request automation + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/set-status-of-incoming-request-to-complete +require: +required_by: +--- + +{% include use-cases/use-case-consumption-set-status-of-incoming-request-to-complete.md %} diff --git a/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-received.md b/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-received.md new file mode 100644 index 000000000..95a3004e2 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-received.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-set-status-of-incoming-request-to-received +published: true +title: "Set status of incoming Request to received" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RIR3 + - layer: Consumption + - facade: IncomingRequestsFacade + - function: received + - description: + - feature category: Request automation + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/set-status-of-incoming-request-to-received +require: +required_by: +--- + +{% include use-cases/use-case-consumption-set-status-of-incoming-request-to-received.md %} diff --git a/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-require-manual-decision.md b/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-require-manual-decision.md new file mode 100644 index 000000000..b896f4784 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-set-status-of-incoming-request-to-require-manual-decision.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-set-status-of-incoming-request-to-require-manual-decision +published: true +title: "Set status of incoming Request to require manual decision" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RIR5 + - layer: Consumption + - facade: IncomingRequestsFacade + - function: requireManualDecision + - description: + - feature category: Request automation + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/set-status-of-incoming-request-to-require-manual-decision +require: +required_by: +--- + +{% include use-cases/use-case-consumption-set-status-of-incoming-request-to-require-manual-decision.md %} diff --git a/_docs_use-cases/use-case-consumption-set-status-of-outgoing-request-to-complete.md b/_docs_use-cases/use-case-consumption-set-status-of-outgoing-request-to-complete.md new file mode 100644 index 000000000..018223e91 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-set-status-of-outgoing-request-to-complete.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-set-status-of-outgoing-request-to-complete +published: true +title: "Set status of outgoing Request to complete" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ROR7 + - layer: Consumption + - facade: OutgoingRequestsFacade + - function: complete + - description: + - feature category: Request automation + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/set-status-of-outgoing-request-to-complete +require: +required_by: +--- + +{% include use-cases/use-case-consumption-set-status-of-outgoing-request-to-complete.md %} diff --git a/_docs_use-cases/use-case-consumption-set-status-of-outgoing-request-to-sent.md b/_docs_use-cases/use-case-consumption-set-status-of-outgoing-request-to-sent.md new file mode 100644 index 000000000..82c1f96eb --- /dev/null +++ b/_docs_use-cases/use-case-consumption-set-status-of-outgoing-request-to-sent.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-set-status-of-outgoing-request-to-sent +published: true +title: "Set status of outgoing Request to sent" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ROR6 + - layer: Consumption + - facade: OutgoingRequestsFacade + - function: sent + - description: + - feature category: Request automation + - tech category: Requests + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/set-status-of-outgoing-request-to-sent +require: +required_by: +--- + +{% include use-cases/use-case-consumption-set-status-of-outgoing-request-to-sent.md %} diff --git a/_docs_use-cases/use-case-consumption-share-attribute.md b/_docs_use-cases/use-case-consumption-share-attribute.md new file mode 100644 index 000000000..8bba7ac1b --- /dev/null +++ b/_docs_use-cases/use-case-consumption-share-attribute.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-share-attribute +published: false +title: "Share Attribute" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA13 + - layer: Consumption + - facade: AttributesFacade + - function: shareAttribute + - description: + - feature category: Cross-identity attribute sharing + - tech category: Attributes + - status: QUESTIONS + - comments: Shouldn't we create requestItems here? + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: + - complexity: + - size: + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/share-attribute +require: +required_by: +--- + +{% include use-cases/use-case-consumption-share-attribute.md %} diff --git a/_docs_use-cases/use-case-consumption-succeed-attribute.md b/_docs_use-cases/use-case-consumption-succeed-attribute.md new file mode 100644 index 000000000..3827dc1fa --- /dev/null +++ b/_docs_use-cases/use-case-consumption-succeed-attribute.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-succeed-attribute +published: false +title: "Succeed Attribute" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA11 + - layer: Consumption + - facade: AttributesFacade + - function: succeedAttribute + - description: + - feature category: Cross-identity attribute sharing + - tech category: Attributes + - status: QUESTIONS + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: HIGH + - complexity: MEDIUM + - size: M + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/succeed-attribute +require: +required_by: +--- + +{% include use-cases/use-case-consumption-succeed-attribute.md %} diff --git a/_docs_use-cases/use-case-consumption-update-attribute.md b/_docs_use-cases/use-case-consumption-update-attribute.md new file mode 100644 index 000000000..557e4b424 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-update-attribute.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-update-attribute +published: false +title: "Update Attribute" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RA12 + - layer: Consumption + - facade: AttributesFacade + - function: updateAttribute + - description: + - feature category: Normalized attributes + - tech category: Attributes + - status: QUESTIONS + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: HIGH + - complexity: MEDIUM + - size: M + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/update-attribute +require: +required_by: +--- + +{% include use-cases/use-case-consumption-update-attribute.md %} diff --git a/_docs_use-cases/use-case-consumption-update-automation-rule.md b/_docs_use-cases/use-case-consumption-update-automation-rule.md new file mode 100644 index 000000000..f7990779f --- /dev/null +++ b/_docs_use-cases/use-case-consumption-update-automation-rule.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-update-automation-rule +published: false +title: "Update Automation Rule" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: IAR4 + - layer: Consumption + - facade: AutomationRuleFacade + - function: + - description: + - feature category: + - tech category: Automation Rules + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/update-automation-rule +require: +required_by: +--- + +{% include use-cases/use-case-consumption-update-automation-rule.md %} diff --git a/_docs_use-cases/use-case-consumption-update-blueprint.md b/_docs_use-cases/use-case-consumption-update-blueprint.md new file mode 100644 index 000000000..169a738dd --- /dev/null +++ b/_docs_use-cases/use-case-consumption-update-blueprint.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-update-blueprint +published: false +title: "Update Blueprint" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RB4 + - layer: Consumption + - facade: + - function: + - description: + - feature category: + - tech category: Blueprint + - status: IDEA + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/update-blueprint +require: +required_by: +--- + +{% include use-cases/use-case-consumption-update-blueprint.md %} diff --git a/_docs_use-cases/use-case-consumption-update-draft.md b/_docs_use-cases/use-case-consumption-update-draft.md new file mode 100644 index 000000000..f2d8e51e4 --- /dev/null +++ b/_docs_use-cases/use-case-consumption-update-draft.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-update-draft +published: true +title: "Update Draft" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RDR4 + - layer: Consumption + - facade: DraftFacade + - function: updateDraft + - description: + - feature category: Cross-device draft handling + - tech category: Drafts + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/update-draft +require: +required_by: +--- + +{% include use-cases/use-case-consumption-update-draft.md %} diff --git a/_docs_use-cases/use-case-consumption-update-setting.md b/_docs_use-cases/use-case-consumption-update-setting.md new file mode 100644 index 000000000..09a8b556b --- /dev/null +++ b/_docs_use-cases/use-case-consumption-update-setting.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-consumption-update-setting +published: true +title: "Update Setting" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RS5 + - layer: Consumption + - facade: SettingFacade + - function: updateSetting + - description: + - feature category: Cross-device configuration + - tech category: Settings + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: consumption/update-setting +require: +required_by: +--- + +{% include use-cases/use-case-consumption-update-setting.md %} diff --git a/_docs_use-cases/use-case-cr1.md b/_docs_use-cases/use-case-cr1.md deleted file mode 100644 index 3ed0d2bea..000000000 --- a/_docs_use-cases/use-case-cr1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-cr1 -published: true -title: "Create Profile with new Identity" -type: use-case -toc: true -properties: - - id: CR1 - - layer: Device - - facade: ConnectorRuntime - - function: create - - description: An account needs to be created in order to use the Connector. - - feature category: - - tech category: Bootstrap - - status: DONE - - comments: - - actor: Device - - component: ConnectorRuntime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-cr1.md %} diff --git a/_docs_use-cases/use-case-cr2.md b/_docs_use-cases/use-case-cr2.md deleted file mode 100644 index 75e223d8b..000000000 --- a/_docs_use-cases/use-case-cr2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-cr2 -published: true -title: "Get the Connector health status" -type: use-case -toc: true -properties: - - id: CR2 - - layer: Device - - facade: ConnectorRuntime - - function: getHealth - - description: - - feature category: - - tech category: Bootstrap - - status: DONE - - comments: - - actor: Integrator - - component: ConnectorRuntime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-cr2.md %} diff --git a/_docs_use-cases/use-case-cr3.md b/_docs_use-cases/use-case-cr3.md deleted file mode 100644 index da6830c83..000000000 --- a/_docs_use-cases/use-case-cr3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-cr3 -published: true -title: "Get support Information" -type: use-case -toc: true -properties: - - id: CR3 - - layer: Device - - facade: ConnectorRuntime - - function: getSupportInformation - - description: - - feature category: - - tech category: Monitoring - - status: DONE - - comments: - - actor: Integrator - - component: ConnectorRuntime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-cr3.md %} diff --git a/_docs_use-cases/use-case-cr4.md b/_docs_use-cases/use-case-cr4.md deleted file mode 100644 index ce91ddab7..000000000 --- a/_docs_use-cases/use-case-cr4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-cr4 -published: true -title: "Set up global exception handling" -type: use-case -toc: true -properties: - - id: CR4 - - layer: Device - - facade: ConnectorRuntime - - function: setupGlobalExceptionHandling - - description: - - feature category: - - tech category: Bootstrap - - status: QUESTIONS - - comments: - - actor: Device - - component: ConnectorRuntime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-cr4.md %} diff --git a/_docs_use-cases/use-case-device-clear-all-profiles.md b/_docs_use-cases/use-case-device-clear-all-profiles.md new file mode 100644 index 000000000..b911b4fff --- /dev/null +++ b/_docs_use-cases/use-case-device-clear-all-profiles.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-clear-all-profiles +published: false +title: "Clear all profiles" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARP5 + - layer: Device + - facade: AccountServices + - function: clearAccounts + - description: + - feature category: Multi-profile + - tech category: Profiles + - status: CHANGES REQUIRED + - comments: + - actor: User + - component: AppRuntime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: + - size: + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/clear-all-profiles +require: +required_by: +--- + +{% include use-cases/use-case-device-clear-all-profiles.md %} diff --git a/_docs_use-cases/use-case-device-configure_-config-property.md b/_docs_use-cases/use-case-device-configure_-config-property.md new file mode 100644 index 000000000..bd56e490b --- /dev/null +++ b/_docs_use-cases/use-case-device-configure_-config-property.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-configure_-config-property +published: true +title: "Configure Config Property" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: C03 + - layer: Device + - facade: Connector + - function: + - description: + - feature category: + - tech category: Configuration + - status: DONE + - comments: + - actor: Integrator + - component: Connector + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/configure-config-property +require: +required_by: +--- + +{% include use-cases/use-case-device-configure_-config-property.md %} diff --git a/_docs_use-cases/use-case-device-create-profile-with-new-identity.md b/_docs_use-cases/use-case-device-create-profile-with-new-identity.md new file mode 100644 index 000000000..98d7d9d0e --- /dev/null +++ b/_docs_use-cases/use-case-device-create-profile-with-new-identity.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-create-profile-with-new-identity +published: true +title: "Create Profile with new Identity" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: CR1 + - layer: Device + - facade: ConnectorRuntime + - function: create + - description: An account needs to be created in order to use the Connector. + - feature category: + - tech category: Bootstrap + - status: DONE + - comments: + - actor: Device + - component: ConnectorRuntime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/create-profile-with-new-identity +require: +required_by: +--- + +{% include use-cases/use-case-device-create-profile-with-new-identity.md %} diff --git a/_docs_use-cases/use-case-device-delete_-rest-endpoint.md b/_docs_use-cases/use-case-device-delete_-rest-endpoint.md new file mode 100644 index 000000000..c5850cc6c --- /dev/null +++ b/_docs_use-cases/use-case-device-delete_-rest-endpoint.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-delete_-rest-endpoint +published: true +title: "DELETE REST Endpoint" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: C07 + - layer: Device + - facade: Connector + - function: + - description: + - feature category: + - tech category: Integration + - status: DONE + - comments: + - actor: Integrator + - component: Connector + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/delete-rest-endpoint +require: +required_by: +--- + +{% include use-cases/use-case-device-delete_-rest-endpoint.md %} diff --git a/_docs_use-cases/use-case-device-get-appruntime-health-status.md b/_docs_use-cases/use-case-device-get-appruntime-health-status.md new file mode 100644 index 000000000..1d68fa58c --- /dev/null +++ b/_docs_use-cases/use-case-device-get-appruntime-health-status.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-get-appruntime-health-status +published: false +title: "Get AppRuntime health status" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: AR1 + - layer: Device + - facade: AppRuntime + - function: getHealth + - description: + - feature category: + - tech category: AppRuntime + - status: CHANGES REQUIRED + - comments: Only returning true - could be offline/online indication? + - actor: App + - component: AppRuntime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: + - size: + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/get-appruntime-health-status +require: +required_by: +--- + +{% include use-cases/use-case-device-get-appruntime-health-status.md %} diff --git a/_docs_use-cases/use-case-device-get-appruntime-version-information.md b/_docs_use-cases/use-case-device-get-appruntime-version-information.md new file mode 100644 index 000000000..fb69cac10 --- /dev/null +++ b/_docs_use-cases/use-case-device-get-appruntime-version-information.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-get-appruntime-version-information +published: true +title: "Get AppRuntime version information" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: AR2 + - layer: Device + - facade: AppRuntime + - function: + - description: + - feature category: + - tech category: AppRuntime + - status: DONE + - comments: + - actor: App + - component: AppRuntime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/get-appruntime-version-information +require: +required_by: +--- + +{% include use-cases/use-case-device-get-appruntime-version-information.md %} diff --git a/_docs_use-cases/use-case-device-get-profile-by-enmeshed-address.md b/_docs_use-cases/use-case-device-get-profile-by-enmeshed-address.md new file mode 100644 index 000000000..1fa99eb36 --- /dev/null +++ b/_docs_use-cases/use-case-device-get-profile-by-enmeshed-address.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-get-profile-by-enmeshed-address +published: true +title: "Get Profile by Enmeshed Address" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARP4 + - layer: Device + - facade: AccountServices + - function: getProfileByAddress + - description: + - feature category: Multi-profile + - tech category: Profiles + - status: DONE + - comments: + - actor: App + - component: AppRuntime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/get-profile-by-enmeshed-address +require: +required_by: +--- + +{% include use-cases/use-case-device-get-profile-by-enmeshed-address.md %} diff --git a/_docs_use-cases/use-case-device-get-profile.md b/_docs_use-cases/use-case-device-get-profile.md new file mode 100644 index 000000000..f22bb8448 --- /dev/null +++ b/_docs_use-cases/use-case-device-get-profile.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-get-profile +published: true +title: "Get Profile" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARP3 + - layer: Device + - facade: AccountServices + - function: getProfile + - description: + - feature category: Multi-profile + - tech category: Profiles + - status: DONE + - comments: + - actor: App + - component: AppRuntime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/get-profile +require: +required_by: +--- + +{% include use-cases/use-case-device-get-profile.md %} diff --git a/_docs_use-cases/use-case-device-get-profiles.md b/_docs_use-cases/use-case-device-get-profiles.md new file mode 100644 index 000000000..e920ed7b4 --- /dev/null +++ b/_docs_use-cases/use-case-device-get-profiles.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-get-profiles +published: true +title: "Get Profiles" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARP2 + - layer: Device + - facade: AccountServices + - function: getAccounts + - description: The User needs to get all Profiles on the Device and their metadata. + - feature category: Multi-profile + - tech category: Profiles + - status: DONE + - comments: No Queries? + - actor: App + - component: AppRuntime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/get-profiles +require: +required_by: +--- + +{% include use-cases/use-case-device-get-profiles.md %} diff --git a/_docs_use-cases/use-case-device-get-support-information.md b/_docs_use-cases/use-case-device-get-support-information.md new file mode 100644 index 000000000..a06be68e3 --- /dev/null +++ b/_docs_use-cases/use-case-device-get-support-information.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-get-support-information +published: true +title: "Get support Information" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: CR3 + - layer: Device + - facade: ConnectorRuntime + - function: getSupportInformation + - description: + - feature category: + - tech category: Monitoring + - status: DONE + - comments: + - actor: Integrator + - component: ConnectorRuntime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/get-support-information +require: +required_by: +--- + +{% include use-cases/use-case-device-get-support-information.md %} diff --git a/_docs_use-cases/use-case-device-get-the-connector-health-status.md b/_docs_use-cases/use-case-device-get-the-connector-health-status.md new file mode 100644 index 000000000..405ba8a40 --- /dev/null +++ b/_docs_use-cases/use-case-device-get-the-connector-health-status.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-get-the-connector-health-status +published: true +title: "Get the Connector health status" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: CR2 + - layer: Device + - facade: ConnectorRuntime + - function: getHealth + - description: + - feature category: + - tech category: Bootstrap + - status: DONE + - comments: + - actor: Integrator + - component: ConnectorRuntime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/get-the-connector-health-status +require: +required_by: +--- + +{% include use-cases/use-case-device-get-the-connector-health-status.md %} diff --git a/_docs_use-cases/use-case-device-get-the-connector-version-information.md b/_docs_use-cases/use-case-device-get-the-connector-version-information.md new file mode 100644 index 000000000..29c795c28 --- /dev/null +++ b/_docs_use-cases/use-case-device-get-the-connector-version-information.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-get-the-connector-version-information +published: true +title: "Get the Connector version information" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: C01 + - layer: Device + - facade: Connector + - function: + - description: + - feature category: + - tech category: Monitoring + - status: DONE + - comments: + - actor: Integrator + - component: Connector + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/get-the-connector-version-information +require: +required_by: +--- + +{% include use-cases/use-case-device-get-the-connector-version-information.md %} diff --git a/_docs_use-cases/use-case-device-get-the-number-of-requests-and-the-status-codes-that-were-returned-by-the-connector.md b/_docs_use-cases/use-case-device-get-the-number-of-requests-and-the-status-codes-that-were-returned-by-the-connector.md new file mode 100644 index 000000000..e63d2465b --- /dev/null +++ b/_docs_use-cases/use-case-device-get-the-number-of-requests-and-the-status-codes-that-were-returned-by-the-connector.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-get-the-number-of-requests-and-the-status-codes-that-were-returned-by-the-connector +published: true +title: "Get the number of requests and the status codes that were returned by the Connector." +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: C02 + - layer: Device + - facade: Connector + - function: + - description: + - feature category: + - tech category: Monitoring + - status: DONE + - comments: + - actor: Integrator + - component: Connector + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/get-the-number-of-requests-and-the-status-codes-that-were-returned-by-the-connector +require: +required_by: +--- + +{% include use-cases/use-case-device-get-the-number-of-requests-and-the-status-codes-that-were-returned-by-the-connector.md %} diff --git a/_docs_use-cases/use-case-device-get_-rest-endpoint.md b/_docs_use-cases/use-case-device-get_-rest-endpoint.md new file mode 100644 index 000000000..5ad419afd --- /dev/null +++ b/_docs_use-cases/use-case-device-get_-rest-endpoint.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-get_-rest-endpoint +published: true +title: "GET REST Endpoint" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: C05 + - layer: Device + - facade: Connector + - function: + - description: + - feature category: + - tech category: Integration + - status: DONE + - comments: + - actor: Integrator + - component: Connector + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/get-rest-endpoint +require: +required_by: +--- + +{% include use-cases/use-case-device-get_-rest-endpoint.md %} diff --git a/_docs_use-cases/use-case-device-onboard-device-by-device-onboarding-token.md b/_docs_use-cases/use-case-device-onboard-device-by-device-onboarding-token.md new file mode 100644 index 000000000..69025e4b9 --- /dev/null +++ b/_docs_use-cases/use-case-device-onboard-device-by-device-onboarding-token.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-onboard-device-by-device-onboarding-token +published: false +title: "Onboard Device by Device Onboarding Token" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARP6 + - layer: Device + - facade: AccountServices + - function: onboardAccount + - description: + - feature category: Multi-device + - tech category: Profiles + - status: QUESTIONS + - comments: Naming + - actor: User + - component: AppRuntime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/onboard-device-by-device-onboarding-token +require: +required_by: +--- + +{% include use-cases/use-case-device-onboard-device-by-device-onboarding-token.md %} diff --git a/_docs_use-cases/use-case-device-post_-rest-endpoint.md b/_docs_use-cases/use-case-device-post_-rest-endpoint.md new file mode 100644 index 000000000..5e84a4eca --- /dev/null +++ b/_docs_use-cases/use-case-device-post_-rest-endpoint.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-post_-rest-endpoint +published: true +title: "POST REST Endpoint" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: C04 + - layer: Device + - facade: Connector + - function: + - description: + - feature category: + - tech category: Integration + - status: DONE + - comments: + - actor: Integrator + - component: Connector + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/post-rest-endpoint +require: +required_by: +--- + +{% include use-cases/use-case-device-post_-rest-endpoint.md %} diff --git a/_docs_use-cases/use-case-device-put_-rest-endpoint.md b/_docs_use-cases/use-case-device-put_-rest-endpoint.md new file mode 100644 index 000000000..e8e31c5a8 --- /dev/null +++ b/_docs_use-cases/use-case-device-put_-rest-endpoint.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-put_-rest-endpoint +published: true +title: "PUT REST Endpoint" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: C06 + - layer: Device + - facade: Connector + - function: + - description: + - feature category: + - tech category: Integration + - status: DONE + - comments: + - actor: Integrator + - component: Connector + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/put-rest-endpoint +require: +required_by: +--- + +{% include use-cases/use-case-device-put_-rest-endpoint.md %} diff --git a/_docs_use-cases/use-case-device-rename-profile.md b/_docs_use-cases/use-case-device-rename-profile.md new file mode 100644 index 000000000..7e2d08879 --- /dev/null +++ b/_docs_use-cases/use-case-device-rename-profile.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-rename-profile +published: true +title: "Rename Profile" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARS7 + - layer: Device + - facade: AccountServices + - function: renameAccount + - description: Profiles can be renamed by the User to an arbitrary name in order to distinguish them. + - feature category: Multi-profile + - tech category: Profile + - status: DONE + - comments: + - actor: User + - component: AppRuntime + - trigger: + - precondition: + - result: The Profile has been renamed + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/rename-profile +require: +required_by: +--- + +{% include use-cases/use-case-device-rename-profile.md %} diff --git a/_docs_use-cases/use-case-device-restore-identity-by-revovery-data.md b/_docs_use-cases/use-case-device-restore-identity-by-revovery-data.md new file mode 100644 index 000000000..45d88aae3 --- /dev/null +++ b/_docs_use-cases/use-case-device-restore-identity-by-revovery-data.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-restore-identity-by-revovery-data +published: false +title: "Restore Identity by revovery data" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARP7 + - layer: Device + - facade: + - function: + - description: + - feature category: Identity Hardening + - tech category: Profiles + - status: OPEN + - comments: + - actor: User + - component: AppRuntime + - trigger: + - precondition: A backup has been created for this Profile + - result: The Profile has been restored by the backup + - priority: LOW + - complexity: LOW + - size: M + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/restore-identity-by-revovery-data +require: +required_by: +--- + +{% include use-cases/use-case-device-restore-identity-by-revovery-data.md %} diff --git a/_docs_use-cases/use-case-device-select-profile---profile-login---create-profile-session.md b/_docs_use-cases/use-case-device-select-profile---profile-login---create-profile-session.md new file mode 100644 index 000000000..1ec96a6ca --- /dev/null +++ b/_docs_use-cases/use-case-device-select-profile---profile-login---create-profile-session.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-select-profile---profile-login---create-profile-session +published: false +title: "Select Profile / Profile Login / Create Profile Session" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARS1 + - layer: Device + - facade: AppRuntime + - function: selectAccount + - description: + - feature category: Multi-profile + - tech category: Profiles + - status: CHANGES REQUIRED + - comments: Why is this not within AccountServices? Password needs to be taken into consideration + - actor: User + - component: AppRuntime + - trigger: + - precondition: A pin / password has been set up for this Profile + - result: The Device knows which Profile should be used for the user interface or any action. If a specific action was triggered to select the Profile, the action is now executed If not, the User is redirected to the Profile's Start Screen + - priority: LOW + - complexity: + - size: + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/select-profile-/-profile-login-/-create-profile-session +require: +required_by: +--- + +{% include use-cases/use-case-device-select-profile---profile-login---create-profile-session.md %} diff --git a/_docs_use-cases/use-case-device-set-up-global-exception-handling.md b/_docs_use-cases/use-case-device-set-up-global-exception-handling.md new file mode 100644 index 000000000..62153ce03 --- /dev/null +++ b/_docs_use-cases/use-case-device-set-up-global-exception-handling.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-set-up-global-exception-handling +published: false +title: "Set up global exception handling" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: CR4 + - layer: Device + - facade: ConnectorRuntime + - function: setupGlobalExceptionHandling + - description: + - feature category: + - tech category: Bootstrap + - status: QUESTIONS + - comments: + - actor: Device + - component: ConnectorRuntime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/set-up-global-exception-handling +require: +required_by: +--- + +{% include use-cases/use-case-device-set-up-global-exception-handling.md %} diff --git a/_docs_use-cases/use-case-device-set-up-or-change-auto-logout-of-profile.md b/_docs_use-cases/use-case-device-set-up-or-change-auto-logout-of-profile.md new file mode 100644 index 000000000..5c8026e0c --- /dev/null +++ b/_docs_use-cases/use-case-device-set-up-or-change-auto-logout-of-profile.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-set-up-or-change-auto-logout-of-profile +published: false +title: "Set-up or change auto logout of Profile" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARS7 + - layer: Device + - facade: + - function: + - description: If a password for a Profile has been set up, an auto logout can be enabled. + - feature category: Identity Hardening + - tech category: Profile + - status: IDEA + - comments: + - actor: User + - component: AppRuntime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: MEDIUM + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/set-up-or-change-auto-logout-of-profile +require: +required_by: +--- + +{% include use-cases/use-case-device-set-up-or-change-auto-logout-of-profile.md %} diff --git a/_docs_use-cases/use-case-device-set-up-or-change-password-of-profile.md b/_docs_use-cases/use-case-device-set-up-or-change-password-of-profile.md new file mode 100644 index 000000000..77422f6dd --- /dev/null +++ b/_docs_use-cases/use-case-device-set-up-or-change-password-of-profile.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-device-set-up-or-change-password-of-profile +published: false +title: "Set-up or change password of Profile" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARS3 + - layer: Device + - facade: + - function: + - description: A password for a Profile can be set up or changed by the User. Additionally, a password hint can be entered to help the User remembering the password. + - feature category: Identity Hardening + - tech category: Profile + - status: IDEA + - comments: + - actor: User + - component: AppRuntime + - trigger: + - precondition: Profile has been selected (and has been logged into) + - result: A (new) password for this Profile is stored + - priority: LOW + - complexity: HIGH + - size: L + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: device/set-up-or-change-password-of-profile +require: +required_by: +--- + +{% include use-cases/use-case-device-set-up-or-change-password-of-profile.md %} diff --git a/_docs_use-cases/use-case-human-cancel_-action.md b/_docs_use-cases/use-case-human-cancel_-action.md new file mode 100644 index 000000000..9ce79c9e9 --- /dev/null +++ b/_docs_use-cases/use-case-human-cancel_-action.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-human-cancel_-action +published: true +title: "Cancel Action" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A18 + - layer: Human + - facade: Screen + - function: + - description: The user triggers a cancel action on the current screen, e.g. to postpone a decision. There should be a show/navigation use case before using this use case (to define the screen). + - feature category: + - tech category: User Action + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: human/cancel-action +require: +required_by: +--- + +{% include use-cases/use-case-human-cancel_-action.md %} diff --git a/_docs_use-cases/use-case-human-device_-external-usecase.md b/_docs_use-cases/use-case-human-device_-external-usecase.md new file mode 100644 index 000000000..7aaab579d --- /dev/null +++ b/_docs_use-cases/use-case-human-device_-external-usecase.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-human-device_-external-usecase +published: true +title: "Device External UseCase" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A15 + - layer: Human + - facade: Screen + - function: + - description: The user processes an external use case on the device, e.g. share something by another app or select a file to upload. + - feature category: + - tech category: User Action + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: human/device-external-usecase +require: +required_by: +--- + +{% include use-cases/use-case-human-device_-external-usecase.md %} diff --git a/_docs_use-cases/use-case-human-enter_-data-on-screen.md b/_docs_use-cases/use-case-human-enter_-data-on-screen.md new file mode 100644 index 000000000..78bb86bb6 --- /dev/null +++ b/_docs_use-cases/use-case-human-enter_-data-on-screen.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-human-enter_-data-on-screen +published: true +title: "Enter Data (on screen)" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A13 + - layer: Human + - facade: Screen + - function: + - description: The user enters data into the current screen. There should be a show/navigation use case before using this use case (to define the screen). + - feature category: + - tech category: User Action + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: human/enter-data-on-screen +require: +required_by: +--- + +{% include use-cases/use-case-human-enter_-data-on-screen.md %} diff --git a/_docs_use-cases/use-case-human-navigate-to-screen_-screen.md b/_docs_use-cases/use-case-human-navigate-to-screen_-screen.md new file mode 100644 index 000000000..d30f4ea75 --- /dev/null +++ b/_docs_use-cases/use-case-human-navigate-to-screen_-screen.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-human-navigate-to-screen_-screen +published: true +title: "Navigate to (screen) Screen" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A11 + - layer: Human + - facade: Screen + - function: + - description: The user navigates manually to the desired screen. If the screen has preconditions, these preconditions are considered to be fulfilled (e.g. a Profile has been selected and authenticated first). + - feature category: + - tech category: User Action + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: human/navigate-to-screen-screen +require: +required_by: +--- + +{% include use-cases/use-case-human-navigate-to-screen_-screen.md %} diff --git a/_docs_use-cases/use-case-human-negative_-action.md b/_docs_use-cases/use-case-human-negative_-action.md new file mode 100644 index 000000000..6acd68e08 --- /dev/null +++ b/_docs_use-cases/use-case-human-negative_-action.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-human-negative_-action +published: true +title: "Negative Action" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A17 + - layer: Human + - facade: Screen + - function: + - description: The user triggers a negative action on the current screen, i.e. a reject. There should be a show/navigation use case before using this use case (to define the screen). + - feature category: + - tech category: User Action + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: human/negative-action +require: +required_by: +--- + +{% include use-cases/use-case-human-negative_-action.md %} diff --git a/_docs_use-cases/use-case-human-positive_-action.md b/_docs_use-cases/use-case-human-positive_-action.md new file mode 100644 index 000000000..0cbefb73f --- /dev/null +++ b/_docs_use-cases/use-case-human-positive_-action.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-human-positive_-action +published: true +title: "Positive Action" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A16 + - layer: Human + - facade: Screen + - function: + - description: The user triggers a positive action on the current screen, i.e. a submit or approval . There should be a show/navigation use case before using this use case (to define the screen). + - feature category: + - tech category: User Action + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: human/positive-action +require: +required_by: +--- + +{% include use-cases/use-case-human-positive_-action.md %} diff --git a/_docs_use-cases/use-case-human-scan_-qr-code-on-different-device.md b/_docs_use-cases/use-case-human-scan_-qr-code-on-different-device.md new file mode 100644 index 000000000..7c3d216ba --- /dev/null +++ b/_docs_use-cases/use-case-human-scan_-qr-code-on-different-device.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-human-scan_-qr-code-on-different-device +published: true +title: "Scan QR-Code (on different device)" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A14 + - layer: Human + - facade: Screen + - function: + - description: The user scans a QR-Code from a different device by the app. + - feature category: + - tech category: User Action + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: human/scan-qr-code-on-different-device +require: +required_by: +--- + +{% include use-cases/use-case-human-scan_-qr-code-on-different-device.md %} diff --git a/_docs_use-cases/use-case-human-select_-item-on-screen.md b/_docs_use-cases/use-case-human-select_-item-on-screen.md new file mode 100644 index 000000000..863bf187e --- /dev/null +++ b/_docs_use-cases/use-case-human-select_-item-on-screen.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-human-select_-item-on-screen +published: true +title: "Select Item (on screen)" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A12 + - layer: Human + - facade: Screen + - function: + - description: The user selects an item or action from the current screen. There should be a show/navigation use case before using this use case (to define the screen). + - feature category: + - tech category: User Action + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: human/select-item-on-screen +require: +required_by: +--- + +{% include use-cases/use-case-human-select_-item-on-screen.md %} diff --git a/_docs_use-cases/use-case-iar1.md b/_docs_use-cases/use-case-iar1.md deleted file mode 100644 index 91a609ee0..000000000 --- a/_docs_use-cases/use-case-iar1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-iar1 -published: true -title: "Create Automation Rule" -type: use-case -toc: true -properties: - - id: IAR1 - - layer: Consumption - - facade: AutomationRuleFacade - - function: - - description: - - feature category: - - tech category: Automation Rules - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: HIGH - - size: L - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-iar1.md %} diff --git a/_docs_use-cases/use-case-iar2.md b/_docs_use-cases/use-case-iar2.md deleted file mode 100644 index c6cc7a1d1..000000000 --- a/_docs_use-cases/use-case-iar2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-iar2 -published: true -title: "Query Automation Rules" -type: use-case -toc: true -properties: - - id: IAR2 - - layer: Consumption - - facade: AutomationRuleFacade - - function: - - description: - - feature category: - - tech category: Automation Rules - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-iar2.md %} diff --git a/_docs_use-cases/use-case-iar3.md b/_docs_use-cases/use-case-iar3.md deleted file mode 100644 index 545ecb858..000000000 --- a/_docs_use-cases/use-case-iar3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-iar3 -published: true -title: "Get Automation Rule" -type: use-case -toc: true -properties: - - id: IAR3 - - layer: Consumption - - facade: AutomationRuleFacade - - function: - - description: - - feature category: - - tech category: Automation Rules - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-iar3.md %} diff --git a/_docs_use-cases/use-case-iar4.md b/_docs_use-cases/use-case-iar4.md deleted file mode 100644 index 32d7a5759..000000000 --- a/_docs_use-cases/use-case-iar4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-iar4 -published: true -title: "Update Automation Rule" -type: use-case -toc: true -properties: - - id: IAR4 - - layer: Consumption - - facade: AutomationRuleFacade - - function: - - description: - - feature category: - - tech category: Automation Rules - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-iar4.md %} diff --git a/_docs_use-cases/use-case-iar5.md b/_docs_use-cases/use-case-iar5.md deleted file mode 100644 index ccb7254aa..000000000 --- a/_docs_use-cases/use-case-iar5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-iar5 -published: true -title: "Delete Automation Rule" -type: use-case -toc: true -properties: - - id: IAR5 - - layer: Consumption - - facade: AutomationRuleFacade - - function: - - description: - - feature category: - - tech category: Automation Rules - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-iar5.md %} diff --git a/_docs_use-cases/use-case-ra1.md b/_docs_use-cases/use-case-ra1.md deleted file mode 100644 index 53504cd1d..000000000 --- a/_docs_use-cases/use-case-ra1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra1 -published: true -title: "Create an Attribute" -type: use-case -toc: true -properties: - - id: RA1 - - layer: Consumption - - facade: AttributesFacade - - function: createAttribute - - description: - - feature category: Normalized attributes - - tech category: Attributes - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra1.md %} diff --git a/_docs_use-cases/use-case-ra10.md b/_docs_use-cases/use-case-ra10.md deleted file mode 100644 index 2d469a262..000000000 --- a/_docs_use-cases/use-case-ra10.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra10 -published: true -title: "Execute a ThirdPartyAttributeQuery" -type: use-case -toc: true -properties: - - id: RA10 - - layer: Consumption - - facade: AttributesFacade - - function: executeThirdpartyAttributeQuery - - description: - - feature category: Cross-identity attribute sharing - - tech category: Attributes - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra10.md %} diff --git a/_docs_use-cases/use-case-ra11.md b/_docs_use-cases/use-case-ra11.md deleted file mode 100644 index 49cb501cb..000000000 --- a/_docs_use-cases/use-case-ra11.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra11 -published: true -title: "Succeed Attribute" -type: use-case -toc: true -properties: - - id: RA11 - - layer: Consumption - - facade: AttributesFacade - - function: succeedAttribute - - description: - - feature category: Cross-identity attribute sharing - - tech category: Attributes - - status: QUESTIONS - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: HIGH - - complexity: MEDIUM - - size: M - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra11.md %} diff --git a/_docs_use-cases/use-case-ra12.md b/_docs_use-cases/use-case-ra12.md deleted file mode 100644 index 4e5211752..000000000 --- a/_docs_use-cases/use-case-ra12.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra12 -published: true -title: "Update Attribute" -type: use-case -toc: true -properties: - - id: RA12 - - layer: Consumption - - facade: AttributesFacade - - function: updateAttribute - - description: - - feature category: Normalized attributes - - tech category: Attributes - - status: QUESTIONS - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: HIGH - - complexity: MEDIUM - - size: M - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra12.md %} diff --git a/_docs_use-cases/use-case-ra13.md b/_docs_use-cases/use-case-ra13.md deleted file mode 100644 index c9aed5218..000000000 --- a/_docs_use-cases/use-case-ra13.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra13 -published: true -title: "Share Attribute" -type: use-case -toc: true -properties: - - id: RA13 - - layer: Consumption - - facade: AttributesFacade - - function: shareAttribute - - description: - - feature category: Cross-identity attribute sharing - - tech category: Attributes - - status: QUESTIONS - - comments: Shouldn't we create requestItems here? - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: - - complexity: - - size: - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra13.md %} diff --git a/_docs_use-cases/use-case-ra14.md b/_docs_use-cases/use-case-ra14.md deleted file mode 100644 index bc6f9be21..000000000 --- a/_docs_use-cases/use-case-ra14.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra14 -published: true -title: "Delete shared Attribute" -type: use-case -toc: true -properties: - - id: RA14 - - layer: Consumption - - facade: AttributesFacade - - function: - - description: - - feature category: - - tech category: Attributes - - status: OPEN - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: HIGH - - complexity: MEDIUM - - size: M - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra14.md %} diff --git a/_docs_use-cases/use-case-ra15.md b/_docs_use-cases/use-case-ra15.md deleted file mode 100644 index 08dbc1f69..000000000 --- a/_docs_use-cases/use-case-ra15.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra15 -published: true -title: "Create requestItem to delete shared Attribute" -type: use-case -toc: true -properties: - - id: RA15 - - layer: Consumption - - facade: - - function: - - description: - - feature category: - - tech category: Attributes - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra15.md %} diff --git a/_docs_use-cases/use-case-ra2.md b/_docs_use-cases/use-case-ra2.md deleted file mode 100644 index e8c4e143f..000000000 --- a/_docs_use-cases/use-case-ra2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra2 -published: true -title: "Query Attributes" -type: use-case -toc: true -properties: - - id: RA2 - - layer: Consumption - - facade: AttributesFacade - - function: getAttributes - - description: - - feature category: Normalized attributes - - tech category: Attributes - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra2.md %} diff --git a/_docs_use-cases/use-case-ra3.md b/_docs_use-cases/use-case-ra3.md deleted file mode 100644 index 2faf9624c..000000000 --- a/_docs_use-cases/use-case-ra3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra3 -published: true -title: "Get Attributes of peer" -type: use-case -toc: true -properties: - - id: RA3 - - layer: Consumption - - facade: AttributesFacade - - function: getPeerAttributes - - description: - - feature category: Normalized attributes - - tech category: Attributes - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra3.md %} diff --git a/_docs_use-cases/use-case-ra4.md b/_docs_use-cases/use-case-ra4.md deleted file mode 100644 index c26a0921a..000000000 --- a/_docs_use-cases/use-case-ra4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra4 -published: true -title: "Get Attributes shared to peer" -type: use-case -toc: true -properties: - - id: RA4 - - layer: Consumption - - facade: AttributesFacade - - function: getSharedToPeerAttributes - - description: - - feature category: Cross-identity attribute sharing - - tech category: Attributes - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra4.md %} diff --git a/_docs_use-cases/use-case-ra5.md b/_docs_use-cases/use-case-ra5.md deleted file mode 100644 index 7d56e6c06..000000000 --- a/_docs_use-cases/use-case-ra5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra5 -published: true -title: "Get Attribute" -type: use-case -toc: true -properties: - - id: RA5 - - layer: Consumption - - facade: AttributesFacade - - function: getAttribute - - description: Fetches the attribute with the given 'id'. - - feature category: Normalized attributes - - tech category: Attributes - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra5.md %} diff --git a/_docs_use-cases/use-case-ra6.md b/_docs_use-cases/use-case-ra6.md deleted file mode 100644 index 3e30b9a68..000000000 --- a/_docs_use-cases/use-case-ra6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra6 -published: true -title: "Create a shared Attribute copy" -type: use-case -toc: true -properties: - - id: RA6 - - layer: Consumption - - facade: AttributesFacade - - function: createSharedAttributeCopy - - description: - - feature category: Cross-identity attribute sharing - - tech category: Attributes - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra6.md %} diff --git a/_docs_use-cases/use-case-ra7.md b/_docs_use-cases/use-case-ra7.md deleted file mode 100644 index b7ec4aaf7..000000000 --- a/_docs_use-cases/use-case-ra7.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra7 -published: true -title: "Delete Attribute" -type: use-case -toc: true -properties: - - id: RA7 - - layer: Consumption - - facade: AttributesFacade - - function: deleteAttribute - - description: - - feature category: Normalized attributes - - tech category: Attributes - - status: QUESTIONS - - comments: What exactly is implemented here? - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: HIGH - - complexity: MEDIUM - - size: M - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra7.md %} diff --git a/_docs_use-cases/use-case-ra8.md b/_docs_use-cases/use-case-ra8.md deleted file mode 100644 index 57a4fce04..000000000 --- a/_docs_use-cases/use-case-ra8.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra8 -published: true -title: "Execute an IdentityAttributeQuery" -type: use-case -toc: true -properties: - - id: RA8 - - layer: Consumption - - facade: AttributesFacade - - function: executeIdentityAttributeQuery - - description: - - feature category: Cross-identity attribute sharing - - tech category: Attributes - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra8.md %} diff --git a/_docs_use-cases/use-case-ra9.md b/_docs_use-cases/use-case-ra9.md deleted file mode 100644 index 41f677cae..000000000 --- a/_docs_use-cases/use-case-ra9.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ra9 -published: true -title: "Execute a RelationshipAttributeQuery" -type: use-case -toc: true -properties: - - id: RA9 - - layer: Consumption - - facade: AttributesFacade - - function: executeRelationshipAttributeQuery - - description: - - feature category: Cross-identity attribute sharing - - tech category: Attributes - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ra9.md %} diff --git a/_docs_use-cases/use-case-ral1.md b/_docs_use-cases/use-case-ral1.md deleted file mode 100644 index dd1bfa8e6..000000000 --- a/_docs_use-cases/use-case-ral1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ral1 -published: true -title: "Query AttributeListeners" -type: use-case -toc: true -properties: - - id: RAL1 - - layer: Consumption - - facade: AttributeListenersFacade - - function: getAttributeListeners - - description: - - feature category: Attribute automation - - tech category: AttributeListeners - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ral1.md %} diff --git a/_docs_use-cases/use-case-ral2.md b/_docs_use-cases/use-case-ral2.md deleted file mode 100644 index 5b689ca8e..000000000 --- a/_docs_use-cases/use-case-ral2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ral2 -published: true -title: "Get AttributeListener" -type: use-case -toc: true -properties: - - id: RAL2 - - layer: Consumption - - facade: AttributeListenersFacade - - function: getAttributeListener - - description: - - feature category: Attribute automation - - tech category: AttributeListeners - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ral2.md %} diff --git a/_docs_use-cases/use-case-ral3.md b/_docs_use-cases/use-case-ral3.md deleted file mode 100644 index c543df01a..000000000 --- a/_docs_use-cases/use-case-ral3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ral3 -published: true -title: "Delete AttributeListener" -type: use-case -toc: true -properties: - - id: RAL3 - - layer: Consumption - - facade: - - function: - - description: - - feature category: Attribute automation - - tech category: AttributeListeners - - status: OPEN - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ral3.md %} diff --git a/_docs_use-cases/use-case-rb1.md b/_docs_use-cases/use-case-rb1.md deleted file mode 100644 index 868aa8124..000000000 --- a/_docs_use-cases/use-case-rb1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rb1 -published: true -title: "Create a Blueprint of a Relationship Template" -type: use-case -toc: true -properties: - - id: RB1 - - layer: Consumption - - facade: - - function: - - description: Create a parametrizable Blueprint to create Relationship Templates with. This is used for creating specific business cards for Users. - - feature category: - - tech category: Blueprint - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: HIGH - - size: HIGH - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rb1.md %} diff --git a/_docs_use-cases/use-case-rb2.md b/_docs_use-cases/use-case-rb2.md deleted file mode 100644 index 44cc790b8..000000000 --- a/_docs_use-cases/use-case-rb2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rb2 -published: true -title: "Query Blueprints" -type: use-case -toc: true -properties: - - id: RB2 - - layer: Consumption - - facade: - - function: - - description: - - feature category: - - tech category: Blueprint - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rb2.md %} diff --git a/_docs_use-cases/use-case-rb3.md b/_docs_use-cases/use-case-rb3.md deleted file mode 100644 index 925bca426..000000000 --- a/_docs_use-cases/use-case-rb3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rb3 -published: true -title: "Get Blueprint" -type: use-case -toc: true -properties: - - id: RB3 - - layer: Consumption - - facade: - - function: - - description: - - feature category: - - tech category: Blueprint - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rb3.md %} diff --git a/_docs_use-cases/use-case-rb4.md b/_docs_use-cases/use-case-rb4.md deleted file mode 100644 index e516f0bf9..000000000 --- a/_docs_use-cases/use-case-rb4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rb4 -published: true -title: "Update Blueprint" -type: use-case -toc: true -properties: - - id: RB4 - - layer: Consumption - - facade: - - function: - - description: - - feature category: - - tech category: Blueprint - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rb4.md %} diff --git a/_docs_use-cases/use-case-rb5.md b/_docs_use-cases/use-case-rb5.md deleted file mode 100644 index 3cab95275..000000000 --- a/_docs_use-cases/use-case-rb5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rb5 -published: true -title: "Delete Blueprint" -type: use-case -toc: true -properties: - - id: RB5 - - layer: Consumption - - facade: - - function: - - description: - - feature category: - - tech category: Blueprint - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rb5.md %} diff --git a/_docs_use-cases/use-case-rb6.md b/_docs_use-cases/use-case-rb6.md deleted file mode 100644 index 0d5adc7f9..000000000 --- a/_docs_use-cases/use-case-rb6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rb6 -published: true -title: "Create Relationship Template out of Blueprint" -type: use-case -toc: true -properties: - - id: RB6 - - layer: Consumption - - facade: - - function: - - description: - - feature category: - - tech category: Blueprint - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: MEDIUM - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rb6.md %} diff --git a/_docs_use-cases/use-case-rc1.md b/_docs_use-cases/use-case-rc1.md deleted file mode 100644 index 527435719..000000000 --- a/_docs_use-cases/use-case-rc1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rc1 -published: true -title: "Create Challenge" -type: use-case -toc: true -properties: - - id: RC1 - - layer: Transport - - facade: ChallengesFacade - - function: createChallenge - - description: Create a signed challenge. - - feature category: - - tech category: Challenges - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rc1.md %} diff --git a/_docs_use-cases/use-case-rc2.md b/_docs_use-cases/use-case-rc2.md deleted file mode 100644 index 61c15809d..000000000 --- a/_docs_use-cases/use-case-rc2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rc2 -published: true -title: "Validate Challenge" -type: use-case -toc: true -properties: - - id: RC2 - - layer: Transport - - facade: ChallengesFacade - - function: validateChallenge - - description: Validate a challenge. - - feature category: - - tech category: Challenges - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rc2.md %} diff --git a/_docs_use-cases/use-case-rd1.md b/_docs_use-cases/use-case-rd1.md deleted file mode 100644 index 647028fd9..000000000 --- a/_docs_use-cases/use-case-rd1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rd1 -published: true -title: "Create Device" -type: use-case -toc: true -properties: - - id: RD1 - - layer: Transport - - facade: DevicesFacade - - function: createDevice - - description: - - feature category: Multi-device - - tech category: Devices - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rd1.md %} diff --git a/_docs_use-cases/use-case-rd2.md b/_docs_use-cases/use-case-rd2.md deleted file mode 100644 index dc46b53a4..000000000 --- a/_docs_use-cases/use-case-rd2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rd2 -published: true -title: "Query Devices" -type: use-case -toc: true -properties: - - id: RD2 - - layer: Transport - - facade: DevicesFacade - - function: getDevices - - description: - - feature category: Multi-device - - tech category: Devices - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rd2.md %} diff --git a/_docs_use-cases/use-case-rd3.md b/_docs_use-cases/use-case-rd3.md deleted file mode 100644 index 334821a96..000000000 --- a/_docs_use-cases/use-case-rd3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rd3 -published: true -title: "Get Device" -type: use-case -toc: true -properties: - - id: RD3 - - layer: Transport - - facade: DevicesFacade - - function: getDevice - - description: - - feature category: Multi-device - - tech category: Devices - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rd3.md %} diff --git a/_docs_use-cases/use-case-rd4.md b/_docs_use-cases/use-case-rd4.md deleted file mode 100644 index 262d86f9a..000000000 --- a/_docs_use-cases/use-case-rd4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rd4 -published: true -title: "Get Device Onboarding Info" -type: use-case -toc: true -properties: - - id: RD4 - - layer: Transport - - facade: DevicesFacade - - function: getDeviceOnboardingInfo - - description: - - feature category: Multi-device - - tech category: Devices - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rd4.md %} diff --git a/_docs_use-cases/use-case-rd5.md b/_docs_use-cases/use-case-rd5.md deleted file mode 100644 index 5b7f2daa9..000000000 --- a/_docs_use-cases/use-case-rd5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rd5 -published: true -title: "Get Device Onboarding Token" -type: use-case -toc: true -properties: - - id: RD5 - - layer: Transport - - facade: DevicesFacade - - function: getdeviceOnboardingToken - - description: - - feature category: Multi-device - - tech category: Devices - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rd5.md %} diff --git a/_docs_use-cases/use-case-rd6.md b/_docs_use-cases/use-case-rd6.md deleted file mode 100644 index 7120cd556..000000000 --- a/_docs_use-cases/use-case-rd6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rd6 -published: true -title: "Update Device" -type: use-case -toc: true -properties: - - id: RD6 - - layer: Transport - - facade: DevicesFacade - - function: updateDevice - - description: - - feature category: Multi-device - - tech category: Devices - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rd6.md %} diff --git a/_docs_use-cases/use-case-rd7.md b/_docs_use-cases/use-case-rd7.md deleted file mode 100644 index 06ec5eef4..000000000 --- a/_docs_use-cases/use-case-rd7.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rd7 -published: true -title: "Delete Device which is not onboarded yet" -type: use-case -toc: true -properties: - - id: RD7 - - layer: Transport - - facade: DevicesFacade - - function: deleteDevice - - description: - - feature category: Multi-device - - tech category: Devices - - status: QUESTIONS - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rd7.md %} diff --git a/_docs_use-cases/use-case-rd8.md b/_docs_use-cases/use-case-rd8.md deleted file mode 100644 index 7a2b44e7d..000000000 --- a/_docs_use-cases/use-case-rd8.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rd8 -published: true -title: "Trigger Device deletion of onboarded Device" -type: use-case -toc: true -properties: - - id: RD8 - - layer: Transport - - facade: DevicesFacade - - function: - - description: - - feature category: Multi-device - - tech category: Devices - - status: QUESTIONS - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: MEDIUM - - size: L - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rd8.md %} diff --git a/_docs_use-cases/use-case-rdr1.md b/_docs_use-cases/use-case-rdr1.md deleted file mode 100644 index 2bf5b650c..000000000 --- a/_docs_use-cases/use-case-rdr1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rdr1 -published: true -title: "Create Draft" -type: use-case -toc: true -properties: - - id: RDR1 - - layer: Consumption - - facade: DraftFacade - - function: createDraft - - description: - - feature category: Cross-device draft handling - - tech category: Drafts - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rdr1.md %} diff --git a/_docs_use-cases/use-case-rdr2.md b/_docs_use-cases/use-case-rdr2.md deleted file mode 100644 index 01a913c3d..000000000 --- a/_docs_use-cases/use-case-rdr2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rdr2 -published: true -title: "Query Drafts" -type: use-case -toc: true -properties: - - id: RDR2 - - layer: Consumption - - facade: DraftFacade - - function: getDrafts - - description: - - feature category: Cross-device draft handling - - tech category: Drafts - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rdr2.md %} diff --git a/_docs_use-cases/use-case-rdr3.md b/_docs_use-cases/use-case-rdr3.md deleted file mode 100644 index e72c702a4..000000000 --- a/_docs_use-cases/use-case-rdr3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rdr3 -published: true -title: "Get Draft" -type: use-case -toc: true -properties: - - id: RDR3 - - layer: Consumption - - facade: DraftFacade - - function: getDraft - - description: - - feature category: Cross-device draft handling - - tech category: Drafts - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rdr3.md %} diff --git a/_docs_use-cases/use-case-rdr4.md b/_docs_use-cases/use-case-rdr4.md deleted file mode 100644 index 304270e0b..000000000 --- a/_docs_use-cases/use-case-rdr4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rdr4 -published: true -title: "Update Draft" -type: use-case -toc: true -properties: - - id: RDR4 - - layer: Consumption - - facade: DraftFacade - - function: updateDraft - - description: - - feature category: Cross-device draft handling - - tech category: Drafts - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rdr4.md %} diff --git a/_docs_use-cases/use-case-rdr5.md b/_docs_use-cases/use-case-rdr5.md deleted file mode 100644 index 85df7460b..000000000 --- a/_docs_use-cases/use-case-rdr5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rdr5 -published: true -title: "Delete Draft" -type: use-case -toc: true -properties: - - id: RDR5 - - layer: Consumption - - facade: DraftFacade - - function: deleteDraft - - description: - - feature category: Cross-device draft handling - - tech category: Drafts - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rdr5.md %} diff --git a/_docs_use-cases/use-case-rf1.md b/_docs_use-cases/use-case-rf1.md deleted file mode 100644 index 66b7d388a..000000000 --- a/_docs_use-cases/use-case-rf1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rf1 -published: true -title: "Upload own File" -type: use-case -toc: true -properties: - - id: RF1 - - layer: Transport - - facade: FilesFacade - - function: uploadOwnFile - - description: Uploads a new own file with metadata. - - feature category: Arbitrary large data support - - tech category: Files - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rf1.md %} diff --git a/_docs_use-cases/use-case-rf2.md b/_docs_use-cases/use-case-rf2.md deleted file mode 100644 index 7a660b999..000000000 --- a/_docs_use-cases/use-case-rf2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rf2 -published: true -title: "Query Files" -type: use-case -toc: true -properties: - - id: RF2 - - layer: Transport - - facade: FilesFacade - - function: getFiles - - description: Queries metadata of files owned by this Connector. - - feature category: - - tech category: Files - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rf2.md %} diff --git a/_docs_use-cases/use-case-rf3.md b/_docs_use-cases/use-case-rf3.md deleted file mode 100644 index e8f1d86ed..000000000 --- a/_docs_use-cases/use-case-rf3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rf3 -published: true -title: "Get own File" -type: use-case -toc: true -properties: - - id: RF3 - - layer: Transport - - facade: FilesFacade - - function: getFile - - description: - - feature category: Arbitrary large data support - - tech category: Files - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rf3.md %} diff --git a/_docs_use-cases/use-case-rf4.md b/_docs_use-cases/use-case-rf4.md deleted file mode 100644 index 37ad957d7..000000000 --- a/_docs_use-cases/use-case-rf4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rf4 -published: true -title: "Get or load File" -type: use-case -toc: true -properties: - - id: RF4 - - layer: Transport - - facade: FilesFacade - - function: getOrLoadFile - - description: Loads a file of another identity. After it is loaded once, you can retrieve it without the need for the secret key by calling one of the GET-routes. - - feature category: Arbitrary large data support - - tech category: Files - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rf4.md %} diff --git a/_docs_use-cases/use-case-rf5.md b/_docs_use-cases/use-case-rf5.md deleted file mode 100644 index 086559675..000000000 --- a/_docs_use-cases/use-case-rf5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rf5 -published: true -title: "Download File" -type: use-case -toc: true -properties: - - id: RF5 - - layer: Transport - - facade: FilesFacade - - function: downloadFile - - description: Downloads the file with the given 'id'. - - feature category: Arbitrary large data support - - tech category: Files - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rf5.md %} diff --git a/_docs_use-cases/use-case-rf6.md b/_docs_use-cases/use-case-rf6.md deleted file mode 100644 index ad1ed5e34..000000000 --- a/_docs_use-cases/use-case-rf6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rf6 -published: true -title: "Create Token for File" -type: use-case -toc: true -properties: - - id: RF6 - - layer: Transport - - facade: FilesFacade - - function: createTokenForFile - - description: Creates a 'Token' for the 'File' with the given 'id'. - - feature category: Arbitrary large data support - - tech category: Files - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rf6.md %} diff --git a/_docs_use-cases/use-case-rf7.md b/_docs_use-cases/use-case-rf7.md deleted file mode 100644 index c1e34d10d..000000000 --- a/_docs_use-cases/use-case-rf7.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rf7 -published: true -title: "Create QRCode for File" -type: use-case -toc: true -properties: - - id: RF7 - - layer: Transport - - facade: FilesFacade - - function: createQrCodeForFile - - description: - - feature category: Arbitrary large data support - - tech category: Files - - status: QUESTIONS - - comments: QR vs Qr, QR vs Tr - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rf7.md %} diff --git a/_docs_use-cases/use-case-rf8.md b/_docs_use-cases/use-case-rf8.md deleted file mode 100644 index 1e97d84da..000000000 --- a/_docs_use-cases/use-case-rf8.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rf8 -published: true -title: "Create Token QRCode for File" -type: use-case -toc: true -properties: - - id: RF8 - - layer: Transport - - facade: FilesFacade - - function: createTokenQrCodeForFile - - description: - - feature category: Arbitrary large data support - - tech category: Files - - status: QUESTIONS - - comments: QR vs Qr, QR vs Tr - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rf8.md %} diff --git a/_docs_use-cases/use-case-ri1.md b/_docs_use-cases/use-case-ri1.md deleted file mode 100644 index aa877d490..000000000 --- a/_docs_use-cases/use-case-ri1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ri1 -published: true -title: "Check Identity by Address" -type: use-case -toc: true -properties: - - id: RI1 - - layer: Transport - - facade: IdentityFacade - - function: checkIdentity - - description: - - feature category: - - tech category: Identities - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ri1.md %} diff --git a/_docs_use-cases/use-case-rir1.md b/_docs_use-cases/use-case-rir1.md deleted file mode 100644 index 80ac3435b..000000000 --- a/_docs_use-cases/use-case-rir1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rir1 -published: true -title: "Query incoming Requests" -type: use-case -toc: true -properties: - - id: RIR1 - - layer: Consumption - - facade: IncomingRequestsFacade - - function: getRequests - - description: Queries incoming 'Requests'. - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rir1.md %} diff --git a/_docs_use-cases/use-case-rir10.md b/_docs_use-cases/use-case-rir10.md deleted file mode 100644 index a282642e4..000000000 --- a/_docs_use-cases/use-case-rir10.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rir10 -published: true -title: "Reject incoming Request" -type: use-case -toc: true -properties: - - id: RIR10 - - layer: Consumption - - facade: IncomingRequestsFacade - - function: reject - - description: Rejects the incoming 'Request' with the given 'id'. - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rir10.md %} diff --git a/_docs_use-cases/use-case-rir2.md b/_docs_use-cases/use-case-rir2.md deleted file mode 100644 index 243f06c02..000000000 --- a/_docs_use-cases/use-case-rir2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rir2 -published: true -title: "Get incoming Request" -type: use-case -toc: true -properties: - - id: RIR2 - - layer: Consumption - - facade: IncomingRequestsFacade - - function: getRequest - - description: Fetches the incoming 'Request' with the given 'id'. - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rir2.md %} diff --git a/_docs_use-cases/use-case-rir3.md b/_docs_use-cases/use-case-rir3.md deleted file mode 100644 index 565889c47..000000000 --- a/_docs_use-cases/use-case-rir3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rir3 -published: true -title: "Set status of incoming Request to received" -type: use-case -toc: true -properties: - - id: RIR3 - - layer: Consumption - - facade: IncomingRequestsFacade - - function: received - - description: - - feature category: Request automation - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rir3.md %} diff --git a/_docs_use-cases/use-case-rir4.md b/_docs_use-cases/use-case-rir4.md deleted file mode 100644 index cf2cb9ec5..000000000 --- a/_docs_use-cases/use-case-rir4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rir4 -published: true -title: "Set status of incoming Request to check prerequisites" -type: use-case -toc: true -properties: - - id: RIR4 - - layer: Consumption - - facade: IncomingRequestsFacade - - function: checkPrerequisites - - description: - - feature category: Request automation - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rir4.md %} diff --git a/_docs_use-cases/use-case-rir5.md b/_docs_use-cases/use-case-rir5.md deleted file mode 100644 index 52e55f6a5..000000000 --- a/_docs_use-cases/use-case-rir5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rir5 -published: true -title: "Set status of incoming Request to require manual decision" -type: use-case -toc: true -properties: - - id: RIR5 - - layer: Consumption - - facade: IncomingRequestsFacade - - function: requireManualDecision - - description: - - feature category: Request automation - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rir5.md %} diff --git a/_docs_use-cases/use-case-rir6.md b/_docs_use-cases/use-case-rir6.md deleted file mode 100644 index e02804e7a..000000000 --- a/_docs_use-cases/use-case-rir6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rir6 -published: true -title: "Set status of incoming Request to complete" -type: use-case -toc: true -properties: - - id: RIR6 - - layer: Consumption - - facade: IncomingRequestsFacade - - function: complete - - description: - - feature category: Request automation - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rir6.md %} diff --git a/_docs_use-cases/use-case-rir7.md b/_docs_use-cases/use-case-rir7.md deleted file mode 100644 index 837fb7a35..000000000 --- a/_docs_use-cases/use-case-rir7.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rir7 -published: true -title: "Check if incoming Request can be accepted" -type: use-case -toc: true -properties: - - id: RIR7 - - layer: Consumption - - facade: IncomingRequestsFacade - - function: canAccept - - description: Checks if the 'Request' with the given 'id' can be accepted. - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rir7.md %} diff --git a/_docs_use-cases/use-case-rir8.md b/_docs_use-cases/use-case-rir8.md deleted file mode 100644 index 44368cb9f..000000000 --- a/_docs_use-cases/use-case-rir8.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rir8 -published: true -title: "Accept incoming Request" -type: use-case -toc: true -properties: - - id: RIR8 - - layer: Consumption - - facade: IncomingRequestsFacade - - function: accept - - description: Accepts the incoming 'Request' with the given 'id'. - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rir8.md %} diff --git a/_docs_use-cases/use-case-rir9.md b/_docs_use-cases/use-case-rir9.md deleted file mode 100644 index 26ac83fd3..000000000 --- a/_docs_use-cases/use-case-rir9.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rir9 -published: true -title: "Check if incoming Request can be rejected" -type: use-case -toc: true -properties: - - id: RIR9 - - layer: Consumption - - facade: IncomingRequestsFacade - - function: canReject - - description: Checks if the 'Request' with the given 'id' can be rejected. - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rir9.md %} diff --git a/_docs_use-cases/use-case-rk1.md b/_docs_use-cases/use-case-rk1.md deleted file mode 100644 index 1d29ebe51..000000000 --- a/_docs_use-cases/use-case-rk1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rk1 -published: true -title: "Create own Token" -type: use-case -toc: true -properties: - - id: RK1 - - layer: Transport - - facade: TokensFacade - - function: createOwnToken - - description: - - feature category: Normalized requests/responses to and from users - - tech category: Tokens - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rk1.md %} diff --git a/_docs_use-cases/use-case-rk2.md b/_docs_use-cases/use-case-rk2.md deleted file mode 100644 index c6b751b49..000000000 --- a/_docs_use-cases/use-case-rk2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rk2 -published: true -title: "Load Token created by others" -type: use-case -toc: true -properties: - - id: RK2 - - layer: Transport - - facade: TokensFacade - - function: loadPeerToken - - description: - - feature category: Share structured information over side-channel - - tech category: Tokens - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rk2.md %} diff --git a/_docs_use-cases/use-case-rk3.md b/_docs_use-cases/use-case-rk3.md deleted file mode 100644 index bcd9982d6..000000000 --- a/_docs_use-cases/use-case-rk3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rk3 -published: true -title: "Get Token by TokenID" -type: use-case -toc: true -properties: - - id: RK3 - - layer: Transport - - facade: TokensFacade - - function: getToken - - description: - - feature category: Share structured information over side-channel - - tech category: Tokens - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rk3.md %} diff --git a/_docs_use-cases/use-case-rk4.md b/_docs_use-cases/use-case-rk4.md deleted file mode 100644 index eade3a070..000000000 --- a/_docs_use-cases/use-case-rk4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rk4 -published: true -title: "Query Tokens by parameters" -type: use-case -toc: true -properties: - - id: RK4 - - layer: Transport - - facade: TokensFacade - - function: getTokens - - description: - - feature category: Share structured information over side-channel - - tech category: Tokens - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rk4.md %} diff --git a/_docs_use-cases/use-case-rk5.md b/_docs_use-cases/use-case-rk5.md deleted file mode 100644 index 8d6d3a410..000000000 --- a/_docs_use-cases/use-case-rk5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rk5 -published: true -title: "Get QRCode for single Token" -type: use-case -toc: true -properties: - - id: RK5 - - layer: Transport - - facade: TokensFacade - - function: getQRCodeForToken - - description: - - feature category: Share structured information over side-channel - - tech category: Tokens - - status: QUESTIONS - - comments: QR vs Qr, QR vs Tr - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rk5.md %} diff --git a/_docs_use-cases/use-case-rm1.md b/_docs_use-cases/use-case-rm1.md deleted file mode 100644 index 3f888efe8..000000000 --- a/_docs_use-cases/use-case-rm1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rm1 -published: true -title: "Send message to recipient(s)" -type: use-case -toc: true -properties: - - id: RM1 - - layer: Transport - - facade: MessagesFacade - - function: sendMessage - - description: - - feature category: Bidirectional (un-)structured communication - - tech category: Messages - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rm1.md %} diff --git a/_docs_use-cases/use-case-rm2.md b/_docs_use-cases/use-case-rm2.md deleted file mode 100644 index 19a073890..000000000 --- a/_docs_use-cases/use-case-rm2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rm2 -published: true -title: "Query Messages" -type: use-case -toc: true -properties: - - id: RM2 - - layer: Transport - - facade: MessagesFacade - - function: getMessages - - description: - - feature category: Bidirectional (un-)structured communication - - tech category: Messages - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rm2.md %} diff --git a/_docs_use-cases/use-case-rm3.md b/_docs_use-cases/use-case-rm3.md deleted file mode 100644 index f2efd148a..000000000 --- a/_docs_use-cases/use-case-rm3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rm3 -published: true -title: "Get Message by MessageId" -type: use-case -toc: true -properties: - - id: RM3 - - layer: Transport - - facade: MessagesFacade - - function: getMessage - - description: - - feature category: Bidirectional (un-)structured communication - - tech category: Messages - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rm3.md %} diff --git a/_docs_use-cases/use-case-rm4.md b/_docs_use-cases/use-case-rm4.md deleted file mode 100644 index 60a7e78e8..000000000 --- a/_docs_use-cases/use-case-rm4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rm4 -published: true -title: "Get File Metadata of Attachment" -type: use-case -toc: true -properties: - - id: RM4 - - layer: Transport - - facade: MessagesFacade - - function: getAttachmentMetadata - - description: Returns the attachment's metadata of the given 'attachmentId' of message with 'messageId'. - - feature category: Bidirectional (un-)structured communication - - tech category: Messages - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rm4.md %} diff --git a/_docs_use-cases/use-case-rm5.md b/_docs_use-cases/use-case-rm5.md deleted file mode 100644 index 94fb03fe9..000000000 --- a/_docs_use-cases/use-case-rm5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rm5 -published: true -title: "Download File of Attachment" -type: use-case -toc: true -properties: - - id: RM5 - - layer: Transport - - facade: MessagesFacade - - function: downloadAttachment - - description: Downloads the file of the given 'attachmentId' of message with 'messageId'. - - feature category: Bidirectional (un-)structured communication - - tech category: Messages - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rm5.md %} diff --git a/_docs_use-cases/use-case-ror1.md b/_docs_use-cases/use-case-ror1.md deleted file mode 100644 index 17ed76206..000000000 --- a/_docs_use-cases/use-case-ror1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ror1 -published: true -title: "Check if outgoing Request can be created" -type: use-case -toc: true -properties: - - id: ROR1 - - layer: Consumption - - facade: OutgoingRequestsFacade - - function: canCreate - - description: Validates the given 'OutgoingRequest' before creating it - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ror1.md %} diff --git a/_docs_use-cases/use-case-ror2.md b/_docs_use-cases/use-case-ror2.md deleted file mode 100644 index 3a70fc37d..000000000 --- a/_docs_use-cases/use-case-ror2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ror2 -published: true -title: "Create outgoing Request" -type: use-case -toc: true -properties: - - id: ROR2 - - layer: Consumption - - facade: OutgoingRequestsFacade - - function: create - - description: Creates a new outgoing 'Request'. - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ror2.md %} diff --git a/_docs_use-cases/use-case-ror3.md b/_docs_use-cases/use-case-ror3.md deleted file mode 100644 index 19669ac3c..000000000 --- a/_docs_use-cases/use-case-ror3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ror3 -published: true -title: "Query outgoing Requests" -type: use-case -toc: true -properties: - - id: ROR3 - - layer: Consumption - - facade: OutgoingRequestsFacade - - function: getRequests - - description: Queries outgoing 'Requests'. - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ror3.md %} diff --git a/_docs_use-cases/use-case-ror4.md b/_docs_use-cases/use-case-ror4.md deleted file mode 100644 index 1f1132759..000000000 --- a/_docs_use-cases/use-case-ror4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ror4 -published: true -title: "Get outgoing Request" -type: use-case -toc: true -properties: - - id: ROR4 - - layer: Consumption - - facade: OutgoingRequestsFacade - - function: getRequest - - description: - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ror4.md %} diff --git a/_docs_use-cases/use-case-ror5.md b/_docs_use-cases/use-case-ror5.md deleted file mode 100644 index a8216748b..000000000 --- a/_docs_use-cases/use-case-ror5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ror5 -published: true -title: "Create and complete outgoing Request from Relationship Template Response" -type: use-case -toc: true -properties: - - id: ROR5 - - layer: Consumption - - facade: OutgoingRequestsFacade - - function: createAndCompleteFromRelationshipTemplateResponse - - description: - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ror5.md %} diff --git a/_docs_use-cases/use-case-ror6.md b/_docs_use-cases/use-case-ror6.md deleted file mode 100644 index af51e9cb6..000000000 --- a/_docs_use-cases/use-case-ror6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ror6 -published: true -title: "Set status of outgoing Request to sent" -type: use-case -toc: true -properties: - - id: ROR6 - - layer: Consumption - - facade: OutgoingRequestsFacade - - function: sent - - description: - - feature category: Request automation - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ror6.md %} diff --git a/_docs_use-cases/use-case-ror7.md b/_docs_use-cases/use-case-ror7.md deleted file mode 100644 index b521f91f5..000000000 --- a/_docs_use-cases/use-case-ror7.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ror7 -published: true -title: "Set status of outgoing Request to complete" -type: use-case -toc: true -properties: - - id: ROR7 - - layer: Consumption - - facade: OutgoingRequestsFacade - - function: complete - - description: - - feature category: Request automation - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ror7.md %} diff --git a/_docs_use-cases/use-case-ror8.md b/_docs_use-cases/use-case-ror8.md deleted file mode 100644 index c3c7439bf..000000000 --- a/_docs_use-cases/use-case-ror8.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ror8 -published: true -title: "Discards outgoing Request" -type: use-case -toc: true -properties: - - id: ROR8 - - layer: Consumption - - facade: OutgoingRequestsFacade - - function: discard - - description: - - feature category: Normalized requests/responses to and from users - - tech category: Requests - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ror8.md %} diff --git a/_docs_use-cases/use-case-rr1.md b/_docs_use-cases/use-case-rr1.md deleted file mode 100644 index fae1b46e9..000000000 --- a/_docs_use-cases/use-case-rr1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rr1 -published: true -title: "Create Relationship with RelationshipTemplate" -type: use-case -toc: true -properties: - - id: RR1 - - layer: Transport - - facade: RelationshipsFacade - - function: createRelationship - - description: Creates a 'Relationship' to the creator of a given relationshipTemplateId. The 'RelationshipTemplate' of the given 'relationshipTemplateId' must come from another identity and must be loaded by 'POST /RelationshipTemplates/Peer' first. - - feature category: Mutual peer-to-peer relationships - - tech category: Relationships - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rr1.md %} diff --git a/_docs_use-cases/use-case-rr10.md b/_docs_use-cases/use-case-rr10.md deleted file mode 100644 index 343d5271a..000000000 --- a/_docs_use-cases/use-case-rr10.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rr10 -published: true -title: "Pin/mark as favorite relationship" -type: use-case -toc: true -properties: - - id: RR10 - - layer: Consumption - - facade: - - function: - - description: - - feature category: - - tech category: Relationships - - status: IDEA - - comments: - - actor: User - - component: AppRuntime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: MEDIUM - - size: M - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rr10.md %} diff --git a/_docs_use-cases/use-case-rr2.md b/_docs_use-cases/use-case-rr2.md deleted file mode 100644 index 7196bcc8e..000000000 --- a/_docs_use-cases/use-case-rr2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rr2 -published: true -title: "Query Relationships" -type: use-case -toc: true -properties: - - id: RR2 - - layer: Transport - - facade: RelationshipsFacade - - function: getRelationships - - description: - - feature category: Mutual peer-to-peer relationships - - tech category: Relationships - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rr2.md %} diff --git a/_docs_use-cases/use-case-rr3.md b/_docs_use-cases/use-case-rr3.md deleted file mode 100644 index bcacdb6c0..000000000 --- a/_docs_use-cases/use-case-rr3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rr3 -published: true -title: "Get Relationship by RelationshipId" -type: use-case -toc: true -properties: - - id: RR3 - - layer: Transport - - facade: RelationshipsFacade - - function: getRelationship - - description: - - feature category: Mutual peer-to-peer relationships - - tech category: Relationships - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rr3.md %} diff --git a/_docs_use-cases/use-case-rr4.md b/_docs_use-cases/use-case-rr4.md deleted file mode 100644 index 7a26d93e7..000000000 --- a/_docs_use-cases/use-case-rr4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rr4 -published: true -title: "Get Relationship by Address" -type: use-case -toc: true -properties: - - id: RR4 - - layer: Transport - - facade: RelationshipsFacade - - function: getRelationshipByAddress - - description: - - feature category: Mutual peer-to-peer relationships - - tech category: Relationships - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rr4.md %} diff --git a/_docs_use-cases/use-case-rr5.md b/_docs_use-cases/use-case-rr5.md deleted file mode 100644 index 1afaa4e84..000000000 --- a/_docs_use-cases/use-case-rr5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rr5 -published: true -title: "Get Attributes for Relationship" -type: use-case -toc: true -properties: - - id: RR5 - - layer: Transport - - facade: RelationshipsFacade - - function: getAttributesForRelationship - - description: Queries attributes that are related to the given relationship. - - feature category: Mutual peer-to-peer relationships - - tech category: Relationships - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rr5.md %} diff --git a/_docs_use-cases/use-case-rr6.md b/_docs_use-cases/use-case-rr6.md deleted file mode 100644 index e3754cc57..000000000 --- a/_docs_use-cases/use-case-rr6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rr6 -published: true -title: "Accept Relationship Change" -type: use-case -toc: true -properties: - - id: RR6 - - layer: Transport - - facade: RelationshipsFacade - - function: acceptRelationshipChange - - description: Accepts the change with the given 'changeId'. If the change exists but belongs to another relationship, this call will fail and return status 404. - - feature category: Mutual peer-to-peer relationships - - tech category: Relationships - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rr6.md %} diff --git a/_docs_use-cases/use-case-rr7.md b/_docs_use-cases/use-case-rr7.md deleted file mode 100644 index d79c5007b..000000000 --- a/_docs_use-cases/use-case-rr7.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rr7 -published: true -title: "Reject Relationship Change" -type: use-case -toc: true -properties: - - id: RR7 - - layer: Transport - - facade: RelationshipsFacade - - function: rejectRelationshipChange - - description: Rejects the change with the given 'changeId'. If the change exists but belongs to another relationship, this call will fail and return status 404. - - feature category: Mutual peer-to-peer relationships - - tech category: Relationships - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rr7.md %} diff --git a/_docs_use-cases/use-case-rr8.md b/_docs_use-cases/use-case-rr8.md deleted file mode 100644 index 24f77e0b2..000000000 --- a/_docs_use-cases/use-case-rr8.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rr8 -published: true -title: "Revoke Relationship Change" -type: use-case -toc: true -properties: - - id: RR8 - - layer: Transport - - facade: RelationshipsFacade - - function: revokeRelationshipChange - - description: - - feature category: Mutual peer-to-peer relationships - - tech category: Relationships - - status: QUESTIONS - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: - - complexity: - - size: - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rr8.md %} diff --git a/_docs_use-cases/use-case-rr9.md b/_docs_use-cases/use-case-rr9.md deleted file mode 100644 index c47734303..000000000 --- a/_docs_use-cases/use-case-rr9.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rr9 -published: true -title: "Set categorization of relationship" -type: use-case -toc: true -properties: - - id: RR9 - - layer: Consumption - - facade: - - function: - - description: - - feature category: - - tech category: Relationships - - status: IDEA - - comments: - - actor: User - - component: AppRuntime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: MEDIUM - - size: M - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rr9.md %} diff --git a/_docs_use-cases/use-case-rri1.md b/_docs_use-cases/use-case-rri1.md deleted file mode 100644 index cdeb3ee5d..000000000 --- a/_docs_use-cases/use-case-rri1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rri1 -published: true -title: "Create requestItem to delete Relationship" -type: use-case -toc: true -properties: - - id: RRI1 - - layer: Consumption - - facade: RequestItemFacade - - function: - - description: - - feature category: - - tech category: RequestItems - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rri1.md %} diff --git a/_docs_use-cases/use-case-rri2.md b/_docs_use-cases/use-case-rri2.md deleted file mode 100644 index dba5f8806..000000000 --- a/_docs_use-cases/use-case-rri2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rri2 -published: true -title: "Create requestItem to inform about forced Relationship deletion" -type: use-case -toc: true -properties: - - id: RRI2 - - layer: Consumption - - facade: RequestItemFacade - - function: - - description: - - feature category: - - tech category: RequestItems - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rri2.md %} diff --git a/_docs_use-cases/use-case-rri3.md b/_docs_use-cases/use-case-rri3.md deleted file mode 100644 index 80caf565c..000000000 --- a/_docs_use-cases/use-case-rri3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rri3 -published: true -title: "Create requestItem to inform about forced Attribute deletion" -type: use-case -toc: true -properties: - - id: RRI3 - - layer: Consumption - - facade: RequestItemFacade - - function: - - description: - - feature category: - - tech category: RequestItems - - status: IDEA - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: LOW - - complexity: LOW - - size: S - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rri3.md %} diff --git a/_docs_use-cases/use-case-rs1.md b/_docs_use-cases/use-case-rs1.md deleted file mode 100644 index a231608ba..000000000 --- a/_docs_use-cases/use-case-rs1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rs1 -published: true -title: "Create Setting" -type: use-case -toc: true -properties: - - id: RS1 - - layer: Consumption - - facade: SettingFacade - - function: createSetting - - description: - - feature category: Cross-device configuration - - tech category: Settings - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rs1.md %} diff --git a/_docs_use-cases/use-case-rs2.md b/_docs_use-cases/use-case-rs2.md deleted file mode 100644 index 6fcb67123..000000000 --- a/_docs_use-cases/use-case-rs2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rs2 -published: true -title: "Query Settings" -type: use-case -toc: true -properties: - - id: RS2 - - layer: Consumption - - facade: SettingFacade - - function: getSettings - - description: - - feature category: Cross-device configuration - - tech category: Settings - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rs2.md %} diff --git a/_docs_use-cases/use-case-rs3.md b/_docs_use-cases/use-case-rs3.md deleted file mode 100644 index e018af189..000000000 --- a/_docs_use-cases/use-case-rs3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rs3 -published: true -title: "Get Setting" -type: use-case -toc: true -properties: - - id: RS3 - - layer: Consumption - - facade: SettingFacade - - function: getSetting - - description: - - feature category: Cross-device configuration - - tech category: Settings - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rs3.md %} diff --git a/_docs_use-cases/use-case-rs4.md b/_docs_use-cases/use-case-rs4.md deleted file mode 100644 index 16337a55b..000000000 --- a/_docs_use-cases/use-case-rs4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rs4 -published: true -title: "Delete Setting" -type: use-case -toc: true -properties: - - id: RS4 - - layer: Consumption - - facade: SettingFacade - - function: deleteSetting - - description: - - feature category: Cross-device configuration - - tech category: Settings - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rs4.md %} diff --git a/_docs_use-cases/use-case-rs5.md b/_docs_use-cases/use-case-rs5.md deleted file mode 100644 index d0dc47aba..000000000 --- a/_docs_use-cases/use-case-rs5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rs5 -published: true -title: "Update Setting" -type: use-case -toc: true -properties: - - id: RS5 - - layer: Consumption - - facade: SettingFacade - - function: updateSetting - - description: - - feature category: Cross-device configuration - - tech category: Settings - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rs5.md %} diff --git a/_docs_use-cases/use-case-rt1.md b/_docs_use-cases/use-case-rt1.md deleted file mode 100644 index 33d535bac..000000000 --- a/_docs_use-cases/use-case-rt1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rt1 -published: true -title: "Create own RelationshipTemplate" -type: use-case -toc: true -properties: - - id: RT1 - - layer: Transport - - facade: RelationshipTemplatesFacade - - function: createOwnRelationshipTemplate - - description: - - feature category: Consent required before any data is shared - - tech category: RelationshipTemplates - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rt1.md %} diff --git a/_docs_use-cases/use-case-rt2.md b/_docs_use-cases/use-case-rt2.md deleted file mode 100644 index fc89e0193..000000000 --- a/_docs_use-cases/use-case-rt2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rt2 -published: true -title: "Load Relationship Template created by others" -type: use-case -toc: true -properties: - - id: RT2 - - layer: Transport - - facade: RelationshipTemplatesFacade - - function: loadPeerRelationshipTemplate - - description: Loads a 'RelationshipTemplate' created by others. This is a prerequisite for using the template while creating a new 'Relationship'. - - feature category: Consent required before any data is shared - - tech category: RelationshipTemplates - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rt2.md %} diff --git a/_docs_use-cases/use-case-rt3.md b/_docs_use-cases/use-case-rt3.md deleted file mode 100644 index 2c6b5e41e..000000000 --- a/_docs_use-cases/use-case-rt3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rt3 -published: true -title: "Query Relationship Templates" -type: use-case -toc: true -properties: - - id: RT3 - - layer: Transport - - facade: RelationshipTemplatesFacade - - function: getRelationshipTemplates - - description: - - feature category: Consent required before any data is shared - - tech category: RelationshipTemplates - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rt3.md %} diff --git a/_docs_use-cases/use-case-rt4.md b/_docs_use-cases/use-case-rt4.md deleted file mode 100644 index 53e8c4d9a..000000000 --- a/_docs_use-cases/use-case-rt4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rt4 -published: true -title: "Get Relationship Template" -type: use-case -toc: true -properties: - - id: RT4 - - layer: Transport - - facade: RelationshipTemplatesFacade - - function: getRelationshipTemplate - - description: - - feature category: Consent required before any data is shared - - tech category: RelationshipTemplates - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rt4.md %} diff --git a/_docs_use-cases/use-case-rt5.md b/_docs_use-cases/use-case-rt5.md deleted file mode 100644 index f30ae9966..000000000 --- a/_docs_use-cases/use-case-rt5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rt5 -published: true -title: "Create QRCode for own Relationship Template" -type: use-case -toc: true -properties: - - id: RT5 - - layer: Transport - - facade: RelationshipTemplatesFacade - - function: createQrCodeForOwnTemplate - - description: - - feature category: Consent required before any data is shared - - tech category: RelationshipTemplates - - status: QUESTIONS - - comments: QR vs Qr, QR vs Tr - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rt5.md %} diff --git a/_docs_use-cases/use-case-rt6.md b/_docs_use-cases/use-case-rt6.md deleted file mode 100644 index 6b9f608d2..000000000 --- a/_docs_use-cases/use-case-rt6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rt6 -published: true -title: "Create Token QRCode for own Relationship Template" -type: use-case -toc: true -properties: - - id: RT6 - - layer: Transport - - facade: RelationshipTemplatesFacade - - function: createTokenQrCodeForOwnTemplate - - description: - - feature category: Consent required before any data is shared - - tech category: RelationshipTemplates - - status: QUESTIONS - - comments: QR vs Qr, QR vs Tr - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rt6.md %} diff --git a/_docs_use-cases/use-case-rt7.md b/_docs_use-cases/use-case-rt7.md deleted file mode 100644 index d3be84bfd..000000000 --- a/_docs_use-cases/use-case-rt7.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-rt7 -published: true -title: "Create Token for own Relationship Template" -type: use-case -toc: true -properties: - - id: RT7 - - layer: Transport - - facade: RelationshipTemplatesFacade - - function: createTokenForOwnTemplate - - description: Creates a 'Token' for the own 'RelationshipTemplate' with the given 'id' - - feature category: Consent required before any data is shared - - tech category: RelationshipTemplates - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-rt7.md %} diff --git a/_docs_use-cases/use-case-ru1.md b/_docs_use-cases/use-case-ru1.md deleted file mode 100644 index eb8c9506f..000000000 --- a/_docs_use-cases/use-case-ru1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ru1 -published: true -title: "Get currently used Identity" -type: use-case -toc: true -properties: - - id: RU1 - - layer: Transport - - facade: AccountFacade - - function: getIdentityInfo - - description: - - feature category: Multi-profile - - tech category: Account - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ru1.md %} diff --git a/_docs_use-cases/use-case-ru2.md b/_docs_use-cases/use-case-ru2.md deleted file mode 100644 index 4068095fd..000000000 --- a/_docs_use-cases/use-case-ru2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ru2 -published: true -title: "Get currently used Device" -type: use-case -toc: true -properties: - - id: RU2 - - layer: Transport - - facade: AccountFacade - - function: getDeviceInfo - - description: - - feature category: Multi-device - - tech category: Account - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ru2.md %} diff --git a/_docs_use-cases/use-case-ru3.md b/_docs_use-cases/use-case-ru3.md deleted file mode 100644 index dd092df12..000000000 --- a/_docs_use-cases/use-case-ru3.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ru3 -published: true -title: "Register PushNotificationToken at Backbone" -type: use-case -toc: true -properties: - - id: RU3 - - layer: Transport - - facade: AccountFacade - - function: registerPushNotificationToken - - description: - - feature category: Multi-device - - tech category: Account - - status: QUESTIONS - - comments: rather AppRuntime? - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ru3.md %} diff --git a/_docs_use-cases/use-case-ru4.md b/_docs_use-cases/use-case-ru4.md deleted file mode 100644 index c8cbdb6f6..000000000 --- a/_docs_use-cases/use-case-ru4.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ru4 -published: true -title: "Synchronize updates of Backbone" -type: use-case -toc: true -properties: - - id: RU4 - - layer: Transport - - facade: AccountFacade - - function: syncEverything - - description: Syncs the Identity's Messages and Relationships with the Backbone. Checks for new Relationships as well as incoming changes of existing ones. Checks for new or updated Messages. Returns all affected Relationships and Messages. - - feature category: Synchronization - - tech category: Account - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ru4.md %} diff --git a/_docs_use-cases/use-case-ru5.md b/_docs_use-cases/use-case-ru5.md deleted file mode 100644 index b2164c4e7..000000000 --- a/_docs_use-cases/use-case-ru5.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ru5 -published: true -title: "Synchronize Datawallet updates to Backbone" -type: use-case -toc: true -properties: - - id: RU5 - - layer: Transport - - facade: AccountFacade - - function: syncDatawallet - - description: - - feature category: Multi-device synchronization - - tech category: Account - - status: QUESTIONS - - comments: rather AppRuntime? - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ru5.md %} diff --git a/_docs_use-cases/use-case-ru6.md b/_docs_use-cases/use-case-ru6.md deleted file mode 100644 index 65623842a..000000000 --- a/_docs_use-cases/use-case-ru6.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ru6 -published: true -title: "Get synchronization status with Backbone" -type: use-case -toc: true -properties: - - id: RU6 - - layer: Transport - - facade: AccountFacade - - function: getSyncInfo - - description: - - feature category: Multi-device synchronization - - tech category: Account - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ru6.md %} diff --git a/_docs_use-cases/use-case-ru7.md b/_docs_use-cases/use-case-ru7.md deleted file mode 100644 index 06cdd533d..000000000 --- a/_docs_use-cases/use-case-ru7.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ru7 -published: true -title: "Enable automated Datawallet synchronization with Backbone" -type: use-case -toc: true -properties: - - id: RU7 - - layer: Transport - - facade: AccountFacade - - function: enableAutoSync - - description: - - feature category: Multi-device synchronization - - tech category: Account - - status: QUESTIONS - - comments: rather AppRuntime? - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ru7.md %} diff --git a/_docs_use-cases/use-case-ru8.md b/_docs_use-cases/use-case-ru8.md deleted file mode 100644 index 5e0ade970..000000000 --- a/_docs_use-cases/use-case-ru8.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ru8 -published: true -title: "Disable automated Datawallet synchronization with Backbone" -type: use-case -toc: true -properties: - - id: RU8 - - layer: Transport - - facade: AccountFacade - - function: disableAutoSync - - description: - - feature category: Multi-device synchronization - - tech category: Account - - status: QUESTIONS - - comments: rather AppRuntime? - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ru8.md %} diff --git a/_docs_use-cases/use-case-ru9.md b/_docs_use-cases/use-case-ru9.md deleted file mode 100644 index 9c6bc9177..000000000 --- a/_docs_use-cases/use-case-ru9.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ru9 -published: true -title: "Load item from truncated reference" -type: use-case -toc: true -properties: - - id: RU9 - - layer: Transport - - facade: AccountFacade - - function: loadItemFromTruncatedReference - - description: - - feature category: Share information over side-channel - - tech category: Account - - status: QUESTIONS - - comments: rather somewhere else? - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ru9.md %} diff --git a/_docs_use-cases/use-case-ry1.md b/_docs_use-cases/use-case-ry1.md deleted file mode 100644 index 8867add49..000000000 --- a/_docs_use-cases/use-case-ry1.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ry1 -published: true -title: "Load Token by truncated reference (without having an account)" -type: use-case -toc: true -properties: - - id: RY1 - - layer: Anonymous - - facade: AnonymousFacade - - function: loadPeerTokenByTruncatedReference - - description: - - feature category: Share information over side-channel - - tech category: AnonymousTokens - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ry1.md %} diff --git a/_docs_use-cases/use-case-ry2.md b/_docs_use-cases/use-case-ry2.md deleted file mode 100644 index a85b86948..000000000 --- a/_docs_use-cases/use-case-ry2.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /use-case-ry2 -published: true -title: "Load Token by id and key (without having an account)" -type: use-case -toc: true -properties: - - id: RY2 - - layer: Anonymous - - facade: AnonymousFacade - - function: loadPeerTokenByIdAndKey - - description: - - feature category: Share information over side-channel - - tech category: AnonymousTokens - - status: DONE - - comments: - - actor: Identity - - component: Runtime - - trigger: - - precondition: - - result: - - priority: n/a - - complexity: n/a - - size: n/a - - created_at: - - changed_at: - - link auf testcode: - - published: default - - link auf demo: -require: -required_by: ---- - -{% include use-cases/use-case-ry2.md %} diff --git a/_docs_use-cases/use-case-transport-accept-relationship-change.md b/_docs_use-cases/use-case-transport-accept-relationship-change.md new file mode 100644 index 000000000..68ab6acae --- /dev/null +++ b/_docs_use-cases/use-case-transport-accept-relationship-change.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-accept-relationship-change +published: true +title: "Accept Relationship Change" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RR6 + - layer: Transport + - facade: RelationshipsFacade + - function: acceptRelationshipChange + - description: Accepts the change with the given 'changeId'. If the change exists but belongs to another relationship, this call will fail and return status 404. + - feature category: Mutual peer-to-peer relationships + - tech category: Relationships + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/accept-relationship-change +require: +required_by: +--- + +{% include use-cases/use-case-transport-accept-relationship-change.md %} diff --git a/_docs_use-cases/use-case-transport-check-identity-by-address.md b/_docs_use-cases/use-case-transport-check-identity-by-address.md new file mode 100644 index 000000000..2b57de6df --- /dev/null +++ b/_docs_use-cases/use-case-transport-check-identity-by-address.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-check-identity-by-address +published: true +title: "Check Identity by Address" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RI1 + - layer: Transport + - facade: IdentityFacade + - function: checkIdentity + - description: + - feature category: + - tech category: Identities + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/check-identity-by-address +require: +required_by: +--- + +{% include use-cases/use-case-transport-check-identity-by-address.md %} diff --git a/_docs_use-cases/use-case-transport-create-challenge.md b/_docs_use-cases/use-case-transport-create-challenge.md new file mode 100644 index 000000000..71c209929 --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-challenge.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-challenge +published: true +title: "Create Challenge" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RC1 + - layer: Transport + - facade: ChallengesFacade + - function: createChallenge + - description: Create a signed challenge. + - feature category: + - tech category: Challenges + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-challenge +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-challenge.md %} diff --git a/_docs_use-cases/use-case-transport-create-device.md b/_docs_use-cases/use-case-transport-create-device.md new file mode 100644 index 000000000..d27228ea9 --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-device.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-device +published: true +title: "Create Device" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RD1 + - layer: Transport + - facade: DevicesFacade + - function: createDevice + - description: + - feature category: Multi-device + - tech category: Devices + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-device +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-device.md %} diff --git a/_docs_use-cases/use-case-transport-create-identity-recovery-data.md b/_docs_use-cases/use-case-transport-create-identity-recovery-data.md new file mode 100644 index 000000000..56114a907 --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-identity-recovery-data.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-identity-recovery-data +published: false +title: "Create Identity recovery data" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARS6 + - layer: Transport + - facade: + - function: + - description: The User can (and should) create a local and offline backup of the selected Profile. The backup contains enough information to restore the complete Identity on a future Device and thus needs to be exported to the current Device in order to be shared, printed out or stored on a secure media. The backup contains very sensitive data and thus needs to be kept secret and securely stored. It should be explained to the User how the backup should be handled and that it only keeps private information about a single Profile. + - feature category: Identity Hardening + - tech category: Profile + - status: OPEN + - comments: + - actor: User + - component: AppRuntime + - trigger: + - precondition: Profile has been selected (and has been logged into) + - result: A backup has been created + - priority: LOW + - complexity: HIGH + - size: L + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-identity-recovery-data +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-identity-recovery-data.md %} diff --git a/_docs_use-cases/use-case-transport-create-own-relationshiptemplate.md b/_docs_use-cases/use-case-transport-create-own-relationshiptemplate.md new file mode 100644 index 000000000..109798687 --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-own-relationshiptemplate.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-own-relationshiptemplate +published: true +title: "Create own RelationshipTemplate" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RT1 + - layer: Transport + - facade: RelationshipTemplatesFacade + - function: createOwnRelationshipTemplate + - description: + - feature category: Consent required before any data is shared + - tech category: RelationshipTemplates + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-own-relationshiptemplate +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-own-relationshiptemplate.md %} diff --git a/_docs_use-cases/use-case-transport-create-own-token.md b/_docs_use-cases/use-case-transport-create-own-token.md new file mode 100644 index 000000000..4dfb46890 --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-own-token.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-own-token +published: true +title: "Create own Token" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RK1 + - layer: Transport + - facade: TokensFacade + - function: createOwnToken + - description: + - feature category: Normalized requests/responses to and from users + - tech category: Tokens + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-own-token +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-own-token.md %} diff --git a/_docs_use-cases/use-case-transport-create-qrcode-for-file.md b/_docs_use-cases/use-case-transport-create-qrcode-for-file.md new file mode 100644 index 000000000..0b70a0d82 --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-qrcode-for-file.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-qrcode-for-file +published: false +title: "Create QRCode for File" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RF7 + - layer: Transport + - facade: FilesFacade + - function: createQrCodeForFile + - description: + - feature category: Arbitrary large data support + - tech category: Files + - status: QUESTIONS + - comments: QR vs Qr, QR vs Tr + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-qrcode-for-file +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-qrcode-for-file.md %} diff --git a/_docs_use-cases/use-case-transport-create-qrcode-for-own-relationship-template.md b/_docs_use-cases/use-case-transport-create-qrcode-for-own-relationship-template.md new file mode 100644 index 000000000..a162fd485 --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-qrcode-for-own-relationship-template.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-qrcode-for-own-relationship-template +published: false +title: "Create QRCode for own Relationship Template" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RT5 + - layer: Transport + - facade: RelationshipTemplatesFacade + - function: createQrCodeForOwnTemplate + - description: + - feature category: Consent required before any data is shared + - tech category: RelationshipTemplates + - status: QUESTIONS + - comments: QR vs Qr, QR vs Tr + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-qrcode-for-own-relationship-template +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-qrcode-for-own-relationship-template.md %} diff --git a/_docs_use-cases/use-case-transport-create-relationship-with-relationshiptemplate.md b/_docs_use-cases/use-case-transport-create-relationship-with-relationshiptemplate.md new file mode 100644 index 000000000..64c89e53a --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-relationship-with-relationshiptemplate.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-relationship-with-relationshiptemplate +published: true +title: "Create Relationship with RelationshipTemplate" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RR1 + - layer: Transport + - facade: RelationshipsFacade + - function: createRelationship + - description: Creates a 'Relationship' to the creator of a given relationshipTemplateId. The 'RelationshipTemplate' of the given 'relationshipTemplateId' must come from another identity and must be loaded by 'POST /RelationshipTemplates/Peer' first. + - feature category: Mutual peer-to-peer relationships + - tech category: Relationships + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-relationship-with-relationshiptemplate +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-relationship-with-relationshiptemplate.md %} diff --git a/_docs_use-cases/use-case-transport-create-token-for-file.md b/_docs_use-cases/use-case-transport-create-token-for-file.md new file mode 100644 index 000000000..86627927c --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-token-for-file.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-token-for-file +published: true +title: "Create Token for File" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RF6 + - layer: Transport + - facade: FilesFacade + - function: createTokenForFile + - description: Creates a 'Token' for the 'File' with the given 'id'. + - feature category: Arbitrary large data support + - tech category: Files + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-token-for-file +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-token-for-file.md %} diff --git a/_docs_use-cases/use-case-transport-create-token-for-own-relationship-template.md b/_docs_use-cases/use-case-transport-create-token-for-own-relationship-template.md new file mode 100644 index 000000000..49d3fade1 --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-token-for-own-relationship-template.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-token-for-own-relationship-template +published: true +title: "Create Token for own Relationship Template" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RT7 + - layer: Transport + - facade: RelationshipTemplatesFacade + - function: createTokenForOwnTemplate + - description: Creates a 'Token' for the own 'RelationshipTemplate' with the given 'id' + - feature category: Consent required before any data is shared + - tech category: RelationshipTemplates + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-token-for-own-relationship-template +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-token-for-own-relationship-template.md %} diff --git a/_docs_use-cases/use-case-transport-create-token-qrcode-for-file.md b/_docs_use-cases/use-case-transport-create-token-qrcode-for-file.md new file mode 100644 index 000000000..458d812d5 --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-token-qrcode-for-file.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-token-qrcode-for-file +published: false +title: "Create Token QRCode for File" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RF8 + - layer: Transport + - facade: FilesFacade + - function: createTokenQrCodeForFile + - description: + - feature category: Arbitrary large data support + - tech category: Files + - status: QUESTIONS + - comments: QR vs Qr, QR vs Tr + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-token-qrcode-for-file +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-token-qrcode-for-file.md %} diff --git a/_docs_use-cases/use-case-transport-create-token-qrcode-for-own-relationship-template.md b/_docs_use-cases/use-case-transport-create-token-qrcode-for-own-relationship-template.md new file mode 100644 index 000000000..1d021043e --- /dev/null +++ b/_docs_use-cases/use-case-transport-create-token-qrcode-for-own-relationship-template.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-create-token-qrcode-for-own-relationship-template +published: false +title: "Create Token QRCode for own Relationship Template" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RT6 + - layer: Transport + - facade: RelationshipTemplatesFacade + - function: createTokenQrCodeForOwnTemplate + - description: + - feature category: Consent required before any data is shared + - tech category: RelationshipTemplates + - status: QUESTIONS + - comments: QR vs Qr, QR vs Tr + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/create-token-qrcode-for-own-relationship-template +require: +required_by: +--- + +{% include use-cases/use-case-transport-create-token-qrcode-for-own-relationship-template.md %} diff --git a/_docs_use-cases/use-case-transport-delete-device-which-is-not-onboarded-yet.md b/_docs_use-cases/use-case-transport-delete-device-which-is-not-onboarded-yet.md new file mode 100644 index 000000000..8f7492e49 --- /dev/null +++ b/_docs_use-cases/use-case-transport-delete-device-which-is-not-onboarded-yet.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-delete-device-which-is-not-onboarded-yet +published: false +title: "Delete Device which is not onboarded yet" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RD7 + - layer: Transport + - facade: DevicesFacade + - function: deleteDevice + - description: + - feature category: Multi-device + - tech category: Devices + - status: QUESTIONS + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/delete-device-which-is-not-onboarded-yet +require: +required_by: +--- + +{% include use-cases/use-case-transport-delete-device-which-is-not-onboarded-yet.md %} diff --git a/_docs_use-cases/use-case-transport-delete-identity-from-backbone.md b/_docs_use-cases/use-case-transport-delete-identity-from-backbone.md new file mode 100644 index 000000000..6a6d71d09 --- /dev/null +++ b/_docs_use-cases/use-case-transport-delete-identity-from-backbone.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-delete-identity-from-backbone +published: false +title: "Delete Identity from Backbone" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARS5 + - layer: Transport + - facade: + - function: + - description: An Identity can be deleted from the Backbone completely. + - feature category: + - tech category: Profile + - status: OPEN + - comments: + - actor: User + - component: AppRuntime + - trigger: + - precondition: Profile has been selected (and has been logged into) + - result: The Identity has been removed from the Identity + - priority: HIGH + - complexity: HIGH + - size: L + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/delete-identity-from-backbone +require: +required_by: +--- + +{% include use-cases/use-case-transport-delete-identity-from-backbone.md %} diff --git a/_docs_use-cases/use-case-transport-disable-automated-datawallet-synchronization-with-backbone.md b/_docs_use-cases/use-case-transport-disable-automated-datawallet-synchronization-with-backbone.md new file mode 100644 index 000000000..d36ac8c6c --- /dev/null +++ b/_docs_use-cases/use-case-transport-disable-automated-datawallet-synchronization-with-backbone.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-disable-automated-datawallet-synchronization-with-backbone +published: false +title: "Disable automated Datawallet synchronization with Backbone" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RU8 + - layer: Transport + - facade: AccountFacade + - function: disableAutoSync + - description: + - feature category: Multi-device synchronization + - tech category: Account + - status: QUESTIONS + - comments: rather AppRuntime? + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/disable-automated-datawallet-synchronization-with-backbone +require: +required_by: +--- + +{% include use-cases/use-case-transport-disable-automated-datawallet-synchronization-with-backbone.md %} diff --git a/_docs_use-cases/use-case-transport-download-file-of-attachment.md b/_docs_use-cases/use-case-transport-download-file-of-attachment.md new file mode 100644 index 000000000..e86ec9d82 --- /dev/null +++ b/_docs_use-cases/use-case-transport-download-file-of-attachment.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-download-file-of-attachment +published: true +title: "Download File of Attachment" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RM5 + - layer: Transport + - facade: MessagesFacade + - function: downloadAttachment + - description: Downloads the file of the given 'attachmentId' of message with 'messageId'. + - feature category: Bidirectional (un-)structured communication + - tech category: Messages + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/download-file-of-attachment +require: +required_by: +--- + +{% include use-cases/use-case-transport-download-file-of-attachment.md %} diff --git a/_docs_use-cases/use-case-transport-download-file.md b/_docs_use-cases/use-case-transport-download-file.md new file mode 100644 index 000000000..26a46ec53 --- /dev/null +++ b/_docs_use-cases/use-case-transport-download-file.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-download-file +published: true +title: "Download File" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RF5 + - layer: Transport + - facade: FilesFacade + - function: downloadFile + - description: Downloads the file with the given 'id'. + - feature category: Arbitrary large data support + - tech category: Files + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/download-file +require: +required_by: +--- + +{% include use-cases/use-case-transport-download-file.md %} diff --git a/_docs_use-cases/use-case-transport-enable-automated-datawallet-synchronization-with-backbone.md b/_docs_use-cases/use-case-transport-enable-automated-datawallet-synchronization-with-backbone.md new file mode 100644 index 000000000..02f55d711 --- /dev/null +++ b/_docs_use-cases/use-case-transport-enable-automated-datawallet-synchronization-with-backbone.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-enable-automated-datawallet-synchronization-with-backbone +published: false +title: "Enable automated Datawallet synchronization with Backbone" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RU7 + - layer: Transport + - facade: AccountFacade + - function: enableAutoSync + - description: + - feature category: Multi-device synchronization + - tech category: Account + - status: QUESTIONS + - comments: rather AppRuntime? + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/enable-automated-datawallet-synchronization-with-backbone +require: +required_by: +--- + +{% include use-cases/use-case-transport-enable-automated-datawallet-synchronization-with-backbone.md %} diff --git a/_docs_use-cases/use-case-transport-get-attributes-for-relationship.md b/_docs_use-cases/use-case-transport-get-attributes-for-relationship.md new file mode 100644 index 000000000..cc67cf13e --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-attributes-for-relationship.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-attributes-for-relationship +published: true +title: "Get Attributes for Relationship" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RR5 + - layer: Transport + - facade: RelationshipsFacade + - function: getAttributesForRelationship + - description: Queries attributes that are related to the given relationship. + - feature category: Mutual peer-to-peer relationships + - tech category: Relationships + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-attributes-for-relationship +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-attributes-for-relationship.md %} diff --git a/_docs_use-cases/use-case-transport-get-currently-used-device.md b/_docs_use-cases/use-case-transport-get-currently-used-device.md new file mode 100644 index 000000000..677a23828 --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-currently-used-device.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-currently-used-device +published: true +title: "Get currently used Device" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RU2 + - layer: Transport + - facade: AccountFacade + - function: getDeviceInfo + - description: + - feature category: Multi-device + - tech category: Account + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-currently-used-device +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-currently-used-device.md %} diff --git a/_docs_use-cases/use-case-transport-get-currently-used-identity.md b/_docs_use-cases/use-case-transport-get-currently-used-identity.md new file mode 100644 index 000000000..06f34be2c --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-currently-used-identity.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-currently-used-identity +published: true +title: "Get currently used Identity" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RU1 + - layer: Transport + - facade: AccountFacade + - function: getIdentityInfo + - description: + - feature category: Multi-profile + - tech category: Account + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-currently-used-identity +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-currently-used-identity.md %} diff --git a/_docs_use-cases/use-case-transport-get-device-onboarding-info.md b/_docs_use-cases/use-case-transport-get-device-onboarding-info.md new file mode 100644 index 000000000..e90a97ca6 --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-device-onboarding-info.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-device-onboarding-info +published: true +title: "Get Device Onboarding Info" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RD4 + - layer: Transport + - facade: DevicesFacade + - function: getDeviceOnboardingInfo + - description: + - feature category: Multi-device + - tech category: Devices + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-device-onboarding-info +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-device-onboarding-info.md %} diff --git a/_docs_use-cases/use-case-transport-get-device-onboarding-token.md b/_docs_use-cases/use-case-transport-get-device-onboarding-token.md new file mode 100644 index 000000000..7b46434e4 --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-device-onboarding-token.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-device-onboarding-token +published: true +title: "Get Device Onboarding Token" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RD5 + - layer: Transport + - facade: DevicesFacade + - function: getdeviceOnboardingToken + - description: + - feature category: Multi-device + - tech category: Devices + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-device-onboarding-token +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-device-onboarding-token.md %} diff --git a/_docs_use-cases/use-case-transport-get-device.md b/_docs_use-cases/use-case-transport-get-device.md new file mode 100644 index 000000000..1b4e09d8f --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-device.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-device +published: true +title: "Get Device" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RD3 + - layer: Transport + - facade: DevicesFacade + - function: getDevice + - description: + - feature category: Multi-device + - tech category: Devices + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-device +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-device.md %} diff --git a/_docs_use-cases/use-case-transport-get-file-metadata-of-attachment.md b/_docs_use-cases/use-case-transport-get-file-metadata-of-attachment.md new file mode 100644 index 000000000..783114cec --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-file-metadata-of-attachment.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-file-metadata-of-attachment +published: true +title: "Get File Metadata of Attachment" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RM4 + - layer: Transport + - facade: MessagesFacade + - function: getAttachmentMetadata + - description: Returns the attachment's metadata of the given 'attachmentId' of message with 'messageId'. + - feature category: Bidirectional (un-)structured communication + - tech category: Messages + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-file-metadata-of-attachment +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-file-metadata-of-attachment.md %} diff --git a/_docs_use-cases/use-case-transport-get-message-by-messageid.md b/_docs_use-cases/use-case-transport-get-message-by-messageid.md new file mode 100644 index 000000000..fc68c00dc --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-message-by-messageid.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-message-by-messageid +published: true +title: "Get Message by MessageId" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RM3 + - layer: Transport + - facade: MessagesFacade + - function: getMessage + - description: + - feature category: Bidirectional (un-)structured communication + - tech category: Messages + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-message-by-messageid +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-message-by-messageid.md %} diff --git a/_docs_use-cases/use-case-transport-get-or-load-file.md b/_docs_use-cases/use-case-transport-get-or-load-file.md new file mode 100644 index 000000000..ea1f4f4e9 --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-or-load-file.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-or-load-file +published: true +title: "Get or load File" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RF4 + - layer: Transport + - facade: FilesFacade + - function: getOrLoadFile + - description: Loads a file of another identity. After it is loaded once, you can retrieve it without the need for the secret key by calling one of the GET-routes. + - feature category: Arbitrary large data support + - tech category: Files + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-or-load-file +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-or-load-file.md %} diff --git a/_docs_use-cases/use-case-transport-get-own-file.md b/_docs_use-cases/use-case-transport-get-own-file.md new file mode 100644 index 000000000..9aca3272f --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-own-file.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-own-file +published: true +title: "Get own File" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RF3 + - layer: Transport + - facade: FilesFacade + - function: getFile + - description: + - feature category: Arbitrary large data support + - tech category: Files + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-own-file +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-own-file.md %} diff --git a/_docs_use-cases/use-case-transport-get-qrcode-for-single-token.md b/_docs_use-cases/use-case-transport-get-qrcode-for-single-token.md new file mode 100644 index 000000000..8cc392ed7 --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-qrcode-for-single-token.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-qrcode-for-single-token +published: false +title: "Get QRCode for single Token" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RK5 + - layer: Transport + - facade: TokensFacade + - function: getQRCodeForToken + - description: + - feature category: Share structured information over side-channel + - tech category: Tokens + - status: QUESTIONS + - comments: QR vs Qr, QR vs Tr + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-qrcode-for-single-token +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-qrcode-for-single-token.md %} diff --git a/_docs_use-cases/use-case-transport-get-relationship-by-address.md b/_docs_use-cases/use-case-transport-get-relationship-by-address.md new file mode 100644 index 000000000..2a5d19ce8 --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-relationship-by-address.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-relationship-by-address +published: true +title: "Get Relationship by Address" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RR4 + - layer: Transport + - facade: RelationshipsFacade + - function: getRelationshipByAddress + - description: + - feature category: Mutual peer-to-peer relationships + - tech category: Relationships + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-relationship-by-address +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-relationship-by-address.md %} diff --git a/_docs_use-cases/use-case-transport-get-relationship-by-relationshipid.md b/_docs_use-cases/use-case-transport-get-relationship-by-relationshipid.md new file mode 100644 index 000000000..ffab0cb28 --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-relationship-by-relationshipid.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-relationship-by-relationshipid +published: true +title: "Get Relationship by RelationshipId" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RR3 + - layer: Transport + - facade: RelationshipsFacade + - function: getRelationship + - description: + - feature category: Mutual peer-to-peer relationships + - tech category: Relationships + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-relationship-by-relationshipid +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-relationship-by-relationshipid.md %} diff --git a/_docs_use-cases/use-case-transport-get-relationship-template.md b/_docs_use-cases/use-case-transport-get-relationship-template.md new file mode 100644 index 000000000..77cf07dca --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-relationship-template.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-relationship-template +published: true +title: "Get Relationship Template" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RT4 + - layer: Transport + - facade: RelationshipTemplatesFacade + - function: getRelationshipTemplate + - description: + - feature category: Consent required before any data is shared + - tech category: RelationshipTemplates + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-relationship-template +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-relationship-template.md %} diff --git a/_docs_use-cases/use-case-transport-get-synchronization-status-with-backbone.md b/_docs_use-cases/use-case-transport-get-synchronization-status-with-backbone.md new file mode 100644 index 000000000..81e605b46 --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-synchronization-status-with-backbone.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-synchronization-status-with-backbone +published: true +title: "Get synchronization status with Backbone" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RU6 + - layer: Transport + - facade: AccountFacade + - function: getSyncInfo + - description: + - feature category: Multi-device synchronization + - tech category: Account + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-synchronization-status-with-backbone +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-synchronization-status-with-backbone.md %} diff --git a/_docs_use-cases/use-case-transport-get-token-by-tokenid.md b/_docs_use-cases/use-case-transport-get-token-by-tokenid.md new file mode 100644 index 000000000..3a366e97e --- /dev/null +++ b/_docs_use-cases/use-case-transport-get-token-by-tokenid.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-get-token-by-tokenid +published: true +title: "Get Token by TokenID" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RK3 + - layer: Transport + - facade: TokensFacade + - function: getToken + - description: + - feature category: Share structured information over side-channel + - tech category: Tokens + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/get-token-by-tokenid +require: +required_by: +--- + +{% include use-cases/use-case-transport-get-token-by-tokenid.md %} diff --git a/_docs_use-cases/use-case-transport-load-item-from-truncated-reference.md b/_docs_use-cases/use-case-transport-load-item-from-truncated-reference.md new file mode 100644 index 000000000..31f3fc79f --- /dev/null +++ b/_docs_use-cases/use-case-transport-load-item-from-truncated-reference.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-load-item-from-truncated-reference +published: false +title: "Load item from truncated reference" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RU9 + - layer: Transport + - facade: AccountFacade + - function: loadItemFromTruncatedReference + - description: + - feature category: Share information over side-channel + - tech category: Account + - status: QUESTIONS + - comments: rather somewhere else? + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/load-item-from-truncated-reference +require: +required_by: +--- + +{% include use-cases/use-case-transport-load-item-from-truncated-reference.md %} diff --git a/_docs_use-cases/use-case-transport-load-relationship-template-created-by-others.md b/_docs_use-cases/use-case-transport-load-relationship-template-created-by-others.md new file mode 100644 index 000000000..79b21df1b --- /dev/null +++ b/_docs_use-cases/use-case-transport-load-relationship-template-created-by-others.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-load-relationship-template-created-by-others +published: true +title: "Load Relationship Template created by others" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RT2 + - layer: Transport + - facade: RelationshipTemplatesFacade + - function: loadPeerRelationshipTemplate + - description: Loads a 'RelationshipTemplate' created by others. This is a prerequisite for using the template while creating a new 'Relationship'. + - feature category: Consent required before any data is shared + - tech category: RelationshipTemplates + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/load-relationship-template-created-by-others +require: +required_by: +--- + +{% include use-cases/use-case-transport-load-relationship-template-created-by-others.md %} diff --git a/_docs_use-cases/use-case-transport-load-token-created-by-others.md b/_docs_use-cases/use-case-transport-load-token-created-by-others.md new file mode 100644 index 000000000..787418769 --- /dev/null +++ b/_docs_use-cases/use-case-transport-load-token-created-by-others.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-load-token-created-by-others +published: true +title: "Load Token created by others" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RK2 + - layer: Transport + - facade: TokensFacade + - function: loadPeerToken + - description: + - feature category: Share structured information over side-channel + - tech category: Tokens + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/load-token-created-by-others +require: +required_by: +--- + +{% include use-cases/use-case-transport-load-token-created-by-others.md %} diff --git a/_docs_use-cases/use-case-transport-notify-backbone-of-unauthorized-profile-access.md b/_docs_use-cases/use-case-transport-notify-backbone-of-unauthorized-profile-access.md new file mode 100644 index 000000000..af0695102 --- /dev/null +++ b/_docs_use-cases/use-case-transport-notify-backbone-of-unauthorized-profile-access.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-notify-backbone-of-unauthorized-profile-access +published: false +title: "Notify Backbone of unauthorized Profile access" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARS2 + - layer: Transport + - facade: + - function: + - description: Possible other Devices of the Identity should be notified, if the pin or password has been wrongly entered multiple times. This notification could happen by the use of the Backbone, in addition to a possible central tracking of failed login attempts on Devices. + - feature category: Identity Hardening + - tech category: Profiles + - status: QUESTIONS + - comments: + - actor: AppRuntime + - component: AppRuntime + - trigger: A wrong pin / password in the Profile Login has been entered multiple times + - precondition: A pin / password has been set up for this Profile + - result: + - priority: LOW + - complexity: MEDIUM + - size: L + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/notify-backbone-of-unauthorized-profile-access +require: +required_by: +--- + +{% include use-cases/use-case-transport-notify-backbone-of-unauthorized-profile-access.md %} diff --git a/_docs_use-cases/use-case-transport-query-devices.md b/_docs_use-cases/use-case-transport-query-devices.md new file mode 100644 index 000000000..30f65aae7 --- /dev/null +++ b/_docs_use-cases/use-case-transport-query-devices.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-query-devices +published: true +title: "Query Devices" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RD2 + - layer: Transport + - facade: DevicesFacade + - function: getDevices + - description: + - feature category: Multi-device + - tech category: Devices + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/query-devices +require: +required_by: +--- + +{% include use-cases/use-case-transport-query-devices.md %} diff --git a/_docs_use-cases/use-case-transport-query-files.md b/_docs_use-cases/use-case-transport-query-files.md new file mode 100644 index 000000000..e41cfe110 --- /dev/null +++ b/_docs_use-cases/use-case-transport-query-files.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-query-files +published: true +title: "Query Files" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RF2 + - layer: Transport + - facade: FilesFacade + - function: getFiles + - description: Queries metadata of files owned by this Connector. + - feature category: + - tech category: Files + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/query-files +require: +required_by: +--- + +{% include use-cases/use-case-transport-query-files.md %} diff --git a/_docs_use-cases/use-case-transport-query-messages.md b/_docs_use-cases/use-case-transport-query-messages.md new file mode 100644 index 000000000..9ceef0f66 --- /dev/null +++ b/_docs_use-cases/use-case-transport-query-messages.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-query-messages +published: true +title: "Query Messages" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RM2 + - layer: Transport + - facade: MessagesFacade + - function: getMessages + - description: + - feature category: Bidirectional (un-)structured communication + - tech category: Messages + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/query-messages +require: +required_by: +--- + +{% include use-cases/use-case-transport-query-messages.md %} diff --git a/_docs_use-cases/use-case-transport-query-relationship-templates.md b/_docs_use-cases/use-case-transport-query-relationship-templates.md new file mode 100644 index 000000000..359e01e9a --- /dev/null +++ b/_docs_use-cases/use-case-transport-query-relationship-templates.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-query-relationship-templates +published: true +title: "Query Relationship Templates" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RT3 + - layer: Transport + - facade: RelationshipTemplatesFacade + - function: getRelationshipTemplates + - description: + - feature category: Consent required before any data is shared + - tech category: RelationshipTemplates + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/query-relationship-templates +require: +required_by: +--- + +{% include use-cases/use-case-transport-query-relationship-templates.md %} diff --git a/_docs_use-cases/use-case-transport-query-relationships.md b/_docs_use-cases/use-case-transport-query-relationships.md new file mode 100644 index 000000000..0ff661b09 --- /dev/null +++ b/_docs_use-cases/use-case-transport-query-relationships.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-query-relationships +published: true +title: "Query Relationships" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RR2 + - layer: Transport + - facade: RelationshipsFacade + - function: getRelationships + - description: + - feature category: Mutual peer-to-peer relationships + - tech category: Relationships + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/query-relationships +require: +required_by: +--- + +{% include use-cases/use-case-transport-query-relationships.md %} diff --git a/_docs_use-cases/use-case-transport-query-tokens-by-parameters.md b/_docs_use-cases/use-case-transport-query-tokens-by-parameters.md new file mode 100644 index 000000000..d76f9515b --- /dev/null +++ b/_docs_use-cases/use-case-transport-query-tokens-by-parameters.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-query-tokens-by-parameters +published: true +title: "Query Tokens by parameters" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RK4 + - layer: Transport + - facade: TokensFacade + - function: getTokens + - description: + - feature category: Share structured information over side-channel + - tech category: Tokens + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/query-tokens-by-parameters +require: +required_by: +--- + +{% include use-cases/use-case-transport-query-tokens-by-parameters.md %} diff --git a/_docs_use-cases/use-case-transport-register-pushnotificationtoken-at-backbone.md b/_docs_use-cases/use-case-transport-register-pushnotificationtoken-at-backbone.md new file mode 100644 index 000000000..9aff5bf67 --- /dev/null +++ b/_docs_use-cases/use-case-transport-register-pushnotificationtoken-at-backbone.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-register-pushnotificationtoken-at-backbone +published: false +title: "Register PushNotificationToken at Backbone" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RU3 + - layer: Transport + - facade: AccountFacade + - function: registerPushNotificationToken + - description: + - feature category: Multi-device + - tech category: Account + - status: QUESTIONS + - comments: rather AppRuntime? + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/register-pushnotificationtoken-at-backbone +require: +required_by: +--- + +{% include use-cases/use-case-transport-register-pushnotificationtoken-at-backbone.md %} diff --git a/_docs_use-cases/use-case-transport-reject-relationship-change.md b/_docs_use-cases/use-case-transport-reject-relationship-change.md new file mode 100644 index 000000000..4edb5e652 --- /dev/null +++ b/_docs_use-cases/use-case-transport-reject-relationship-change.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-reject-relationship-change +published: true +title: "Reject Relationship Change" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RR7 + - layer: Transport + - facade: RelationshipsFacade + - function: rejectRelationshipChange + - description: Rejects the change with the given 'changeId'. If the change exists but belongs to another relationship, this call will fail and return status 404. + - feature category: Mutual peer-to-peer relationships + - tech category: Relationships + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/reject-relationship-change +require: +required_by: +--- + +{% include use-cases/use-case-transport-reject-relationship-change.md %} diff --git a/_docs_use-cases/use-case-transport-remove-profile-from-device.md b/_docs_use-cases/use-case-transport-remove-profile-from-device.md new file mode 100644 index 000000000..598d46b86 --- /dev/null +++ b/_docs_use-cases/use-case-transport-remove-profile-from-device.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-remove-profile-from-device +published: false +title: "Remove Profile from Device" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: ARS4 + - layer: Transport + - facade: + - function: + - description: An Identity can be removed from the current Device (but will be kept for other Devices, e.g. to offboard one Device). Additionally, a Profile can be removed from another onboarded Device (e.g. for wiping another Device). If no other Device has been set up for the Profile, removing the Profile would trigger the Delete Identity from Backbone use case. + - feature category: Multi-profile + - tech category: Profile + - status: OPEN + - comments: + - actor: User + - component: AppRuntime + - trigger: + - precondition: Profile has been selected (and has been logged into) Other Devices has been onboarded for this Identity + - result: The Profile is removed from the Device + - priority: HIGH + - complexity: LOW + - size: S + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/remove-profile-from-device +require: +required_by: +--- + +{% include use-cases/use-case-transport-remove-profile-from-device.md %} diff --git a/_docs_use-cases/use-case-transport-revoke-relationship-change.md b/_docs_use-cases/use-case-transport-revoke-relationship-change.md new file mode 100644 index 000000000..b77420c71 --- /dev/null +++ b/_docs_use-cases/use-case-transport-revoke-relationship-change.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-revoke-relationship-change +published: false +title: "Revoke Relationship Change" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RR8 + - layer: Transport + - facade: RelationshipsFacade + - function: revokeRelationshipChange + - description: + - feature category: Mutual peer-to-peer relationships + - tech category: Relationships + - status: QUESTIONS + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: + - complexity: + - size: + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/revoke-relationship-change +require: +required_by: +--- + +{% include use-cases/use-case-transport-revoke-relationship-change.md %} diff --git a/_docs_use-cases/use-case-transport-send-message-to-recipients.md b/_docs_use-cases/use-case-transport-send-message-to-recipients.md new file mode 100644 index 000000000..eadffbc65 --- /dev/null +++ b/_docs_use-cases/use-case-transport-send-message-to-recipients.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-send-message-to-recipients +published: true +title: "Send message to recipient(s)" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RM1 + - layer: Transport + - facade: MessagesFacade + - function: sendMessage + - description: + - feature category: Bidirectional (un-)structured communication + - tech category: Messages + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/send-message-to-recipients +require: +required_by: +--- + +{% include use-cases/use-case-transport-send-message-to-recipients.md %} diff --git a/_docs_use-cases/use-case-transport-synchronize-datawallet-updates-to-backbone.md b/_docs_use-cases/use-case-transport-synchronize-datawallet-updates-to-backbone.md new file mode 100644 index 000000000..72d7447a3 --- /dev/null +++ b/_docs_use-cases/use-case-transport-synchronize-datawallet-updates-to-backbone.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-synchronize-datawallet-updates-to-backbone +published: false +title: "Synchronize Datawallet updates to Backbone" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RU5 + - layer: Transport + - facade: AccountFacade + - function: syncDatawallet + - description: + - feature category: Multi-device synchronization + - tech category: Account + - status: QUESTIONS + - comments: rather AppRuntime? + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/synchronize-datawallet-updates-to-backbone +require: +required_by: +--- + +{% include use-cases/use-case-transport-synchronize-datawallet-updates-to-backbone.md %} diff --git a/_docs_use-cases/use-case-transport-synchronize-updates-of-backbone.md b/_docs_use-cases/use-case-transport-synchronize-updates-of-backbone.md new file mode 100644 index 000000000..b6a93fdfd --- /dev/null +++ b/_docs_use-cases/use-case-transport-synchronize-updates-of-backbone.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-synchronize-updates-of-backbone +published: true +title: "Synchronize updates of Backbone" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RU4 + - layer: Transport + - facade: AccountFacade + - function: syncEverything + - description: Syncs the Identity's Messages and Relationships with the Backbone. Checks for new Relationships as well as incoming changes of existing ones. Checks for new or updated Messages. Returns all affected Relationships and Messages. + - feature category: Synchronization + - tech category: Account + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/synchronize-updates-of-backbone +require: +required_by: +--- + +{% include use-cases/use-case-transport-synchronize-updates-of-backbone.md %} diff --git a/_docs_use-cases/use-case-transport-trigger-device-deletion-of-onboarded-device.md b/_docs_use-cases/use-case-transport-trigger-device-deletion-of-onboarded-device.md new file mode 100644 index 000000000..751273370 --- /dev/null +++ b/_docs_use-cases/use-case-transport-trigger-device-deletion-of-onboarded-device.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-trigger-device-deletion-of-onboarded-device +published: false +title: "Trigger Device deletion of onboarded Device" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RD8 + - layer: Transport + - facade: DevicesFacade + - function: + - description: + - feature category: Multi-device + - tech category: Devices + - status: QUESTIONS + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: LOW + - complexity: MEDIUM + - size: L + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/trigger-device-deletion-of-onboarded-device +require: +required_by: +--- + +{% include use-cases/use-case-transport-trigger-device-deletion-of-onboarded-device.md %} diff --git a/_docs_use-cases/use-case-transport-update-device.md b/_docs_use-cases/use-case-transport-update-device.md new file mode 100644 index 000000000..c383117ef --- /dev/null +++ b/_docs_use-cases/use-case-transport-update-device.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-update-device +published: true +title: "Update Device" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RD6 + - layer: Transport + - facade: DevicesFacade + - function: updateDevice + - description: + - feature category: Multi-device + - tech category: Devices + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/update-device +require: +required_by: +--- + +{% include use-cases/use-case-transport-update-device.md %} diff --git a/_docs_use-cases/use-case-transport-upload-own-file.md b/_docs_use-cases/use-case-transport-upload-own-file.md new file mode 100644 index 000000000..cd869fbc7 --- /dev/null +++ b/_docs_use-cases/use-case-transport-upload-own-file.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-upload-own-file +published: true +title: "Upload own File" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RF1 + - layer: Transport + - facade: FilesFacade + - function: uploadOwnFile + - description: Uploads a new own file with metadata. + - feature category: Arbitrary large data support + - tech category: Files + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/upload-own-file +require: +required_by: +--- + +{% include use-cases/use-case-transport-upload-own-file.md %} diff --git a/_docs_use-cases/use-case-transport-validate-challenge.md b/_docs_use-cases/use-case-transport-validate-challenge.md new file mode 100644 index 000000000..133ff9db0 --- /dev/null +++ b/_docs_use-cases/use-case-transport-validate-challenge.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-transport-validate-challenge +published: true +title: "Validate Challenge" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: RC2 + - layer: Transport + - facade: ChallengesFacade + - function: validateChallenge + - description: Validate a challenge. + - feature category: + - tech category: Challenges + - status: DONE + - comments: + - actor: Identity + - component: Runtime + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: transport/validate-challenge +require: +required_by: +--- + +{% include use-cases/use-case-transport-validate-challenge.md %} diff --git a/_docs_use-cases/use-case-user_interface-get-app-version-information.md b/_docs_use-cases/use-case-user_interface-get-app-version-information.md new file mode 100644 index 000000000..c368592b3 --- /dev/null +++ b/_docs_use-cases/use-case-user_interface-get-app-version-information.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-user_interface-get-app-version-information +published: true +title: "Get app version information" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A01 + - layer: User Interface + - facade: + - function: + - description: + - feature category: + - tech category: App + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: user interface/get-app-version-information +require: +required_by: +--- + +{% include use-cases/use-case-user_interface-get-app-version-information.md %} diff --git a/_docs_use-cases/use-case-user_interface-refresh-screen-screen.md b/_docs_use-cases/use-case-user_interface-refresh-screen-screen.md new file mode 100644 index 000000000..cf51fe853 --- /dev/null +++ b/_docs_use-cases/use-case-user_interface-refresh-screen-screen.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-user_interface-refresh-screen-screen +published: true +title: "Refresh (screen) Screen" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A10 + - layer: User Interface + - facade: + - function: + - description: The app refreshes the current screen. + - feature category: + - tech category: App + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: user interface/refresh-screen-screen +require: +required_by: +--- + +{% include use-cases/use-case-user_interface-refresh-screen-screen.md %} diff --git a/_docs_use-cases/use-case-user_interface-show-screen-screen.md b/_docs_use-cases/use-case-user_interface-show-screen-screen.md new file mode 100644 index 000000000..a55ad9ae7 --- /dev/null +++ b/_docs_use-cases/use-case-user_interface-show-screen-screen.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-user_interface-show-screen-screen +published: true +title: "Show (screen) Screen" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A04 + - layer: User Interface + - facade: + - function: + - description: The app navigates to the desired screen by itself. + - feature category: + - tech category: App + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: user interface/show-screen-screen +require: +required_by: +--- + +{% include use-cases/use-case-user_interface-show-screen-screen.md %} diff --git a/_docs_use-cases/use-case-user_interface-start-app-with-parameters-by-using-link.md b/_docs_use-cases/use-case-user_interface-start-app-with-parameters-by-using-link.md new file mode 100644 index 000000000..48fa79d72 --- /dev/null +++ b/_docs_use-cases/use-case-user_interface-start-app-with-parameters-by-using-link.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-user_interface-start-app-with-parameters-by-using-link +published: true +title: "Start app with parameters by using link" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A03 + - layer: User Interface + - facade: + - function: + - description: + - feature category: + - tech category: App + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: user interface/start-app-with-parameters-by-using-link +require: +required_by: +--- + +{% include use-cases/use-case-user_interface-start-app-with-parameters-by-using-link.md %} diff --git a/_docs_use-cases/use-case-user_interface-start-app-without-parameters.md b/_docs_use-cases/use-case-user_interface-start-app-without-parameters.md new file mode 100644 index 000000000..90cef1029 --- /dev/null +++ b/_docs_use-cases/use-case-user_interface-start-app-without-parameters.md @@ -0,0 +1,37 @@ +--- +permalink: /use-case-user_interface-start-app-without-parameters +published: true +title: "Start app without parameters" +type: use-case +toc: true +sidebar: + - title: "Integrate Enmeshed" + nav: "docs_integrate" +properties: + - id: A02 + - layer: User Interface + - facade: + - function: + - description: + - feature category: + - tech category: App + - status: DONE + - comments: + - actor: User + - component: App + - trigger: + - precondition: + - result: + - priority: n/a + - complexity: n/a + - size: n/a + - created_at: + - changed_at: + - link auf testcode: + - published: default + - link: user interface/start-app-without-parameters +require: +required_by: +--- + +{% include use-cases/use-case-user_interface-start-app-without-parameters.md %} diff --git a/_docs_use/01-basics.md b/_docs_use/01-basics.md deleted file mode 100644 index 6984cd5c4..000000000 --- a/_docs_use/01-basics.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Basics" -permalink: /use/basics -published: true ---- - -You can get the Enmeshed App over your favorite app stores. Please find the links below: - -- [Enmeshed App on Apple AppStore](https://apps.apple.com/us/app/enmeshed/id1576693742#?platform=ipad) -- [Enmeshed App on Google PlayStore](https://play.google.com/store/apps/details?id=eu.enmeshed.app&hl=de&gl=US) - -Please drop us some feedback if you would like to see the Enmeshed App on different stores as well. diff --git a/_docs_use/02-security-recommendations.md b/_docs_use/02-security-recommendations.md deleted file mode 100644 index af1c04be6..000000000 --- a/_docs_use/02-security-recommendations.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "Security Recommendations for Apps and End-Users" -permalink: /use/security-recommendations -published: true ---- - -We've summarized some tips for end-user device usage on this site. A great resource for more in-depth information about those tips is the [website of the Federal Office for Information Security (BSI, Bundesamt für Sicherheit in der Informationstechnik).](https://www.bsi.bund.de/EN/Themen/Verbraucherinnen-und-Verbraucher/Informationen-und-Empfehlungen/Cyber-Sicherheitsempfehlungen/Basisschutz-fuer-Computer-Mobilgeraete/Schutz-fuer-Mobilgeraete/Sicherheit-bei-Apps/sicherheit-bei-apps_node.html) - -We do not know every security guideline and tip out there, so please also check security tips of your operating systems like ([Android](https://www.android.com/intl/safety/), or [iOS](https://support.apple.com/guide/security/welcome/web)). - -Please also understand, that we - as anybody else - cannot give you any security guaranty of your device or our system. With this page we are addressing the most common risks of end-user device usage. Even if you follow those guidances, it might happen that a security incident happens. - -## Enable PIN/Password Authentication of Device - -The first line of defense for your device is a strong password or PIN. It is essential to enable this feature on your device to prevent unauthorized access. A secure password should be at least between eight and twelve characters long and contain a mixture of upper and lower case letters, numbers and symbols. Additionally, you should avoid using easily guessable passwords, such as birthdays or names. - -## Only One Person Should Use the Device - -It is recommended that only one person uses the device, and they should not share their password with anyone. Sharing passwords can lead to unauthorized access and compromise the security of the device. - -## Update the Operating System Regularly - -Operating system updates are crucial to maintaining the security of your device. These updates often include security patches that address vulnerabilities and bugs that could compromise your device's security. Therefore, it is important to keep your device's operating system up-to-date with the latest patches and updates. - -## Enable Hard-Disk Encryption - -Hard-disk encryption is a security feature that encrypts the data stored on your device's hard disk. This feature adds an extra layer of security to your device, making it difficult for anyone to access your data if the device is lost or stolen. - -## Enable a Virus Scanner - -Viruses and malware pose a significant threat to your device's security. It is important to enable a virus scanner on your device to protect it from potential threats. The virus scanner will scan your device for viruses and malware and alert you if it detects any threats. - -## Expert Corner - -### Rooted Devices - -Rooting a device involves gaining access to the device's root or administrative privileges. While rooting a device provides greater control over the device, it also exposes the device to potential security risks. Rooted devices are more vulnerable to malware and other security threats. Therefore, it is recommended to avoid rooting your device unless you have a good reason to do so. - -### Developer-enabled Phones - -Developer-enabled phones are designed for developers and come with additional features that allow them to customize the device's software. However, these features also make the device more vulnerable to potential security risks. Therefore, it is important to be cautious when using developer-enabled phones and avoid installing apps from untrusted sources. diff --git a/_docs_use/03-app-scenarios.md b/_docs_use/03-app-scenarios.md deleted file mode 100644 index aaf8a6003..000000000 --- a/_docs_use/03-app-scenarios.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: "Scenarios" -permalink: /use/app-scenarios -published: true ---- - - - - - - -{% assign scenarios = site.pages | where: "type", "scenario" %} - - - - - - - - - {% for scenario in scenarios %} {% assign status = scenario.properties | map:"documentation status" %}{% if status contains "DONE" %}{% assign component = scenario.properties | map:"component" %}{% if component contains "App" %} - - - - - - - {%- endif -%} {%- endif -%} {% endfor %} -
                Title -
                -
                Category ⌄
                -
                  -
                  -
                  -
                  -
                  customer ⌄
                  -
                    -
                    -
                    -
                    -
                    Component ⌄
                    -
                      -
                      -
                      - {{ scenario.title }} - {{ scenario.properties | map:"category" }}{{ scenario.properties | map:"customer" }}{{ scenario.properties | map:"component" }}
                      - - diff --git a/_docs_use/03-use-scenarios.md b/_docs_use/03-use-scenarios.md new file mode 100644 index 000000000..bfbe73a87 --- /dev/null +++ b/_docs_use/03-use-scenarios.md @@ -0,0 +1,196 @@ +--- +title: "Use enmeshed" +permalink: /use +published: true +sidebar: + - title: "Use enmeshed" + nav: "docs_use" +--- + +This page is intended for app users. + +## Getting Started + +Install the app in a secure environment. + + + + + diff --git a/_docs_use/archive-stale-contacts.md b/_docs_use/archive-stale-contacts.md new file mode 100644 index 000000000..2f87be961 --- /dev/null +++ b/_docs_use/archive-stale-contacts.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/archive-stale-contacts +published: false +title: "Archive stale Contacts" +type: scenario +toc: true +properties: + - id: SC023 + - category: Organizing contacts + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: IDEA + - documentation status: OPEN + - published: + - link: use/archive-stale-contacts +require: +required_by: +--- + +{% include scenarios/use/archive-stale-contacts.md %} diff --git a/_docs_use/check-device-configuration.md b/_docs_use/check-device-configuration.md new file mode 100644 index 000000000..e2da1943d --- /dev/null +++ b/_docs_use/check-device-configuration.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/check-device-configuration +published: false +title: "Check Device configuration" +type: scenario +toc: true +properties: + - id: SC003 + - category: Secure Setup + - description: + - customer: All + - component: use + - level: Advanced + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: use/check-device-configuration +require: +required_by: +--- + +{% include scenarios/use/check-device-configuration.md %} diff --git a/_docs_use/cluster-contacts-into-your-phase-of-live-or-categories.md b/_docs_use/cluster-contacts-into-your-phase-of-live-or-categories.md new file mode 100644 index 000000000..48b5a0a13 --- /dev/null +++ b/_docs_use/cluster-contacts-into-your-phase-of-live-or-categories.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/cluster-contacts-into-your-phase-of-live-or-categories +published: false +title: "Cluster Contacts into your phase of live or categories" +type: scenario +toc: true +properties: + - id: SC021 + - category: Organizing contacts + - description: + - customer: All + - component: use + - level: Advanced + - implementation status: IDEA + - documentation status: OPEN + - published: + - link: use/cluster-contacts-into-your-phase-of-live-or-categories +require: +required_by: +--- + +{% include scenarios/use/cluster-contacts-into-your-phase-of-live-or-categories.md %} diff --git a/_docs_use/create-an-identity.md b/_docs_use/create-an-identity.md new file mode 100644 index 000000000..0bd02fbc2 --- /dev/null +++ b/_docs_use/create-an-identity.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/create-an-identity +published: false +title: "Create an Identity" +type: scenario +toc: true +properties: + - id: SC001 + - category: Identity Basics + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: use/create-an-identity +require: +required_by: +--- + +{% include scenarios/use/create-an-identity.md %} diff --git a/_docs_use/create-own-enmeshed-codes-to-share-with-your-peers.md b/_docs_use/create-own-enmeshed-codes-to-share-with-your-peers.md new file mode 100644 index 000000000..2ccae873e --- /dev/null +++ b/_docs_use/create-own-enmeshed-codes-to-share-with-your-peers.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/create-own-enmeshed-codes-to-share-with-your-peers +published: false +title: "Create own enmeshed codes to share with your peers" +type: scenario +toc: true +properties: + - id: SC018 + - category: Get in touch with other Identities + - description: + - customer: All + - component: use + - level: Advanced + - implementation status: DISABLED + - documentation status: OPEN + - published: + - link: use/create-own-enmeshed-codes-to-share-with-your-peers +require: +required_by: +--- + +{% include scenarios/use/create-own-enmeshed-codes-to-share-with-your-peers.md %} diff --git a/_docs_use/create-recovery-data-for-the-identity.md b/_docs_use/create-recovery-data-for-the-identity.md new file mode 100644 index 000000000..5022bd9fe --- /dev/null +++ b/_docs_use/create-recovery-data-for-the-identity.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/create-recovery-data-for-the-identity +published: false +title: "Create Recovery Data for the Identity" +type: scenario +toc: true +properties: + - id: SC004 + - category: Identity Basics + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: use/create-recovery-data-for-the-identity +require: +required_by: +--- + +{% include scenarios/use/create-recovery-data-for-the-identity.md %} diff --git a/_docs_use/delete-identity-from-enmeshed.md b/_docs_use/delete-identity-from-enmeshed.md new file mode 100644 index 000000000..1679b2712 --- /dev/null +++ b/_docs_use/delete-identity-from-enmeshed.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/delete-identity-from-enmeshed +published: false +title: "Delete Identity from enmeshed" +type: scenario +toc: true +properties: + - id: SC005 + - category: Identity Basics + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: use/delete-identity-from-enmeshed +require: +required_by: +--- + +{% include scenarios/use/delete-identity-from-enmeshed.md %} diff --git a/_docs_use/delete-profile-from-the-app.md b/_docs_use/delete-profile-from-the-app.md new file mode 100644 index 000000000..800e03f4b --- /dev/null +++ b/_docs_use/delete-profile-from-the-app.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/delete-profile-from-the-app +published: false +title: "Delete Profile from the App" +type: scenario +toc: true +properties: + - id: SC008 + - category: Working with multiple Identities + - description: + - customer: All + - component: use + - level: Advanced + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: use/delete-profile-from-the-app +require: +required_by: +--- + +{% include scenarios/use/delete-profile-from-the-app.md %} diff --git a/_docs_use/distinguish-personalized-and-non-personalized-codes.md b/_docs_use/distinguish-personalized-and-non-personalized-codes.md new file mode 100644 index 000000000..1f4b58283 --- /dev/null +++ b/_docs_use/distinguish-personalized-and-non-personalized-codes.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/distinguish-personalized-and-non-personalized-codes +published: false +title: "Distinguish personalized and non-personalized codes" +type: scenario +toc: true +properties: + - id: SC019 + - category: Get in touch with other Identities + - description: + - customer: All + - component: use + - level: Advanced + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: use/distinguish-personalized-and-non-personalized-codes +require: +required_by: +--- + +{% include scenarios/use/distinguish-personalized-and-non-personalized-codes.md %} diff --git a/_docs_use/enable-profile-authentication.md b/_docs_use/enable-profile-authentication.md new file mode 100644 index 000000000..c6eb0330f --- /dev/null +++ b/_docs_use/enable-profile-authentication.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/enable-profile-authentication +published: false +title: "Enable Profile authentication" +type: scenario +toc: true +properties: + - id: SC002 + - category: Secure Setup + - description: + - customer: All + - component: use + - level: Advanced + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: use/enable-profile-authentication +require: +required_by: +--- + +{% include scenarios/use/enable-profile-authentication.md %} diff --git a/_docs_use/get-overview-of-your-data.md b/_docs_use/get-overview-of-your-data.md new file mode 100644 index 000000000..3d910ccda --- /dev/null +++ b/_docs_use/get-overview-of-your-data.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/get-overview-of-your-data +published: false +title: "Get overview of your data" +type: scenario +toc: true +properties: + - id: SC012 + - category: Handling your personal data + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: use/get-overview-of-your-data +require: +required_by: +--- + +{% include scenarios/use/get-overview-of-your-data.md %} diff --git a/_docs_use/install-the-app.md b/_docs_use/install-the-app.md new file mode 100644 index 000000000..9d15d39d0 --- /dev/null +++ b/_docs_use/install-the-app.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/install-the-app +redirect_from: /use/basics +published: true +title: "Install the App" +type: scenario +toc: true +properties: + - id: SC026 + - category: 1Getting Started + - description: https//enmeshed.eu/use/basics + - customer: + - component: use + - level: Beginner + - implementation status: + - documentation status: + - published: true + - link: use/install-the-app +require: +required_by: +--- + +{% include scenarios/use/install-the-app.md %} diff --git a/_docs_use/manually-fill-attributes-of-your-identity.md b/_docs_use/manually-fill-attributes-of-your-identity.md new file mode 100644 index 000000000..7c3e717f8 --- /dev/null +++ b/_docs_use/manually-fill-attributes-of-your-identity.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/manually-fill-attributes-of-your-identity +published: false +title: "Manually fill Attributes of your Identity" +type: scenario +toc: true +properties: + - id: SC011 + - category: Handling your personal data + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: use/manually-fill-attributes-of-your-identity +require: +required_by: +--- + +{% include scenarios/use/manually-fill-attributes-of-your-identity.md %} diff --git a/_docs_use/manually-share-data-to-contact.md b/_docs_use/manually-share-data-to-contact.md new file mode 100644 index 000000000..6923ba0ef --- /dev/null +++ b/_docs_use/manually-share-data-to-contact.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/manually-share-data-to-contact +published: false +title: "Manually share data to contact" +type: scenario +toc: true +properties: + - id: SC013 + - category: Handling your personal data + - description: + - customer: All + - component: use + - level: Advanced + - implementation status: DONE + - documentation status: OPEN + - published: + - link: use/manually-share-data-to-contact +require: +required_by: +--- + +{% include scenarios/use/manually-share-data-to-contact.md %} diff --git a/_docs_use/onboard-an-additional-device.md b/_docs_use/onboard-an-additional-device.md new file mode 100644 index 000000000..60946c229 --- /dev/null +++ b/_docs_use/onboard-an-additional-device.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/onboard-an-additional-device +published: false +title: "Onboard an additional Device" +type: scenario +toc: true +properties: + - id: SC009 + - category: Use multiple Devices to access one Identity + - description: + - customer: All + - component: use + - level: Advanced + - implementation status: DONE + - documentation status: OPEN + - published: + - link: use/onboard-an-additional-device +require: +required_by: +--- + +{% include scenarios/use/onboard-an-additional-device.md %} diff --git a/_docs_use/pin-contacts-to-have-the-most-prominent-contacts-at-hand.md b/_docs_use/pin-contacts-to-have-the-most-prominent-contacts-at-hand.md new file mode 100644 index 000000000..198d6792b --- /dev/null +++ b/_docs_use/pin-contacts-to-have-the-most-prominent-contacts-at-hand.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/pin-contacts-to-have-the-most-prominent-contacts-at-hand +published: false +title: "Pin Contacts to have the most prominent Contacts at hand" +type: scenario +toc: true +properties: + - id: SC022 + - category: Organizing contacts + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: IDEA + - documentation status: OPEN + - published: + - link: use/pin-contacts-to-have-the-most-prominent-contacts-at-hand +require: +required_by: +--- + +{% include scenarios/use/pin-contacts-to-have-the-most-prominent-contacts-at-hand.md %} diff --git a/_docs_use/process-received-enmeshed-onboarding-package-and-create-relationship.md b/_docs_use/process-received-enmeshed-onboarding-package-and-create-relationship.md new file mode 100644 index 000000000..48faeef62 --- /dev/null +++ b/_docs_use/process-received-enmeshed-onboarding-package-and-create-relationship.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/process-received-enmeshed-onboarding-package-and-create-relationship +published: false +title: "Process received enmeshed onboarding package and create relationship" +type: scenario +toc: true +properties: + - id: SC071 + - category: Get in touch with other Identities + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: use/process-received-enmeshed-onboarding-package-and-create-relationship +require: +required_by: +--- + +{% include scenarios/use/process-received-enmeshed-onboarding-package-and-create-relationship.md %} diff --git a/_docs_use/process-requests-of-contact.md b/_docs_use/process-requests-of-contact.md new file mode 100644 index 000000000..a1fbb2afe --- /dev/null +++ b/_docs_use/process-requests-of-contact.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/process-requests-of-contact +published: false +title: "Process requests of contact" +type: scenario +toc: true +properties: + - id: SC072 + - category: Manage Requests + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: DONE + - documentation status: OPEN + - published: + - link: use/process-requests-of-contact +require: +required_by: +--- + +{% include scenarios/use/process-requests-of-contact.md %} diff --git a/_docs_use/recover-an-existing-identity.md b/_docs_use/recover-an-existing-identity.md new file mode 100644 index 000000000..bccfcd7bc --- /dev/null +++ b/_docs_use/recover-an-existing-identity.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/recover-an-existing-identity +published: false +title: "Recover an existing Identity" +type: scenario +toc: true +properties: + - id: SC006 + - category: Identity Basics + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: use/recover-an-existing-identity +require: +required_by: +--- + +{% include scenarios/use/recover-an-existing-identity.md %} diff --git a/_docs_use/register-new-online-account-with-enmeshed.md b/_docs_use/register-new-online-account-with-enmeshed.md new file mode 100644 index 000000000..712c26576 --- /dev/null +++ b/_docs_use/register-new-online-account-with-enmeshed.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/register-new-online-account-with-enmeshed +published: false +title: "Register new online account with enmeshed" +type: scenario +toc: true +properties: + - id: SC015 + - category: Get in touch with other Identities + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: use/register-new-online-account-with-enmeshed +require: +required_by: +--- + +{% include scenarios/use/register-new-online-account-with-enmeshed.md %} diff --git a/_docs_use/remove-an-onboarded-device.md b/_docs_use/remove-an-onboarded-device.md new file mode 100644 index 000000000..3d5104e6d --- /dev/null +++ b/_docs_use/remove-an-onboarded-device.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/remove-an-onboarded-device +published: false +title: "Remove an onboarded Device" +type: scenario +toc: true +properties: + - id: SC010 + - category: Use multiple Devices to access one Identity + - description: + - customer: All + - component: use + - level: Advanced + - implementation status: IDEA + - documentation status: OPEN + - published: + - link: use/remove-an-onboarded-device +require: +required_by: +--- + +{% include scenarios/use/remove-an-onboarded-device.md %} diff --git a/_docs_use/rename-contacts-to-your-needs.md b/_docs_use/rename-contacts-to-your-needs.md new file mode 100644 index 000000000..7b088d59c --- /dev/null +++ b/_docs_use/rename-contacts-to-your-needs.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/rename-contacts-to-your-needs +published: false +title: "Rename Contacts to your needs" +type: scenario +toc: true +properties: + - id: SC020 + - category: Organizing contacts + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: IDEA + - documentation status: OPEN + - published: + - link: use/rename-contacts-to-your-needs +require: +required_by: +--- + +{% include scenarios/use/rename-contacts-to-your-needs.md %} diff --git a/_docs_use/rename-profile-to-distinguish-multiple-profiles.md b/_docs_use/rename-profile-to-distinguish-multiple-profiles.md new file mode 100644 index 000000000..9b3f580eb --- /dev/null +++ b/_docs_use/rename-profile-to-distinguish-multiple-profiles.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/rename-profile-to-distinguish-multiple-profiles +published: false +title: "Rename Profile to distinguish multiple Profiles" +type: scenario +toc: true +properties: + - id: SC007 + - category: Working with multiple Identities + - description: + - customer: All + - component: use + - level: Advanced + - implementation status: DONE + - documentation status: OPEN + - published: + - link: use/rename-profile-to-distinguish-multiple-profiles +require: +required_by: +--- + +{% include scenarios/use/rename-profile-to-distinguish-multiple-profiles.md %} diff --git a/_docs_use/scan-qr-codes-to-set-up-digital-communication-by-printouts.md b/_docs_use/scan-qr-codes-to-set-up-digital-communication-by-printouts.md new file mode 100644 index 000000000..62737bc4c --- /dev/null +++ b/_docs_use/scan-qr-codes-to-set-up-digital-communication-by-printouts.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/scan-qr-codes-to-set-up-digital-communication-by-printouts +published: false +title: "Scan QR Codes to set up digital communication by printouts" +type: scenario +toc: true +properties: + - id: SC016 + - category: Get in touch with other Identities + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: use/scan-qr-codes-to-set-up-digital-communication-by-printouts +require: +required_by: +--- + +{% include scenarios/use/scan-qr-codes-to-set-up-digital-communication-by-printouts.md %} diff --git a/_docs_use/secure-device-setup.md b/_docs_use/secure-device-setup.md new file mode 100644 index 000000000..87e6a9ce5 --- /dev/null +++ b/_docs_use/secure-device-setup.md @@ -0,0 +1,24 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/secure-device-setup +redirect_from: /use/security-recommendations +published: true +title: "Secure device setup" +type: scenario +toc: true +properties: + - id: SC094 + - category: 1Getting Started + - description: https//enmeshed.eu/use/security-recommendations + - customer: + - component: use + - level: Beginner + - implementation status: + - documentation status: + - published: true + - link: use/secure-device-setup +require: +required_by: +--- + +{% include scenarios/use/secure-device-setup.md %} diff --git a/_docs_use/send-prefabricated-request-to-contact.md b/_docs_use/send-prefabricated-request-to-contact.md new file mode 100644 index 000000000..0812329c7 --- /dev/null +++ b/_docs_use/send-prefabricated-request-to-contact.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/send-prefabricated-request-to-contact +published: false +title: "Send prefabricated request to contact" +type: scenario +toc: true +properties: + - id: SC073 + - category: Manage Requests + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: OPEN + - documentation status: OPEN + - published: + - link: use/send-prefabricated-request-to-contact +require: +required_by: +--- + +{% include scenarios/use/send-prefabricated-request-to-contact.md %} diff --git a/_docs_use/upgrade-existing-online-account-to-enmeshed.md b/_docs_use/upgrade-existing-online-account-to-enmeshed.md new file mode 100644 index 000000000..ba31a221b --- /dev/null +++ b/_docs_use/upgrade-existing-online-account-to-enmeshed.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/upgrade-existing-online-account-to-enmeshed +published: false +title: "Upgrade existing online account to enmeshed" +type: scenario +toc: true +properties: + - id: SC014 + - category: Get in touch with other Identities + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: use/upgrade-existing-online-account-to-enmeshed +require: +required_by: +--- + +{% include scenarios/use/upgrade-existing-online-account-to-enmeshed.md %} diff --git a/_docs_use/use-nmshd-links-to-trigger-enmeshed-on-the-same-device.md b/_docs_use/use-nmshd-links-to-trigger-enmeshed-on-the-same-device.md new file mode 100644 index 000000000..682fc802e --- /dev/null +++ b/_docs_use/use-nmshd-links-to-trigger-enmeshed-on-the-same-device.md @@ -0,0 +1,23 @@ +--- +# !!! Warning: Do not edit this file; any changes must be replicated in Excel !!! +permalink: use/use-nmshd-links-to-trigger-enmeshed-on-the-same-device +published: false +title: "Use nmshd links to trigger enmeshed on the same device" +type: scenario +toc: true +properties: + - id: SC017 + - category: Get in touch with other Identities + - description: + - customer: All + - component: use + - level: Beginner + - implementation status: DOCS ONLY + - documentation status: OPEN + - published: + - link: use/use-nmshd-links-to-trigger-enmeshed-on-the-same-device +require: +required_by: +--- + +{% include scenarios/use/use-nmshd-links-to-trigger-enmeshed-on-the-same-device.md %} diff --git a/_includes/head/custom.html b/_includes/head/custom.html index fd4c8e2c4..5f6b41e84 100644 --- a/_includes/head/custom.html +++ b/_includes/head/custom.html @@ -9,7 +9,7 @@ {% if site.baseurl %} {% endif %} diff --git a/_includes/post_pagination.html b/_includes/post_pagination.html new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/properties_list.html b/_includes/properties_list.html index 543f681ae..e14e50681 100644 --- a/_includes/properties_list.html +++ b/_includes/properties_list.html @@ -1,3 +1,4 @@ + diff --git a/_includes/scenarios/integrate/access-the-connector.md b/_includes/scenarios/integrate/access-the-connector.md new file mode 100644 index 000000000..9c7e6adb0 --- /dev/null +++ b/_includes/scenarios/integrate/access-the-connector.md @@ -0,0 +1,24 @@ +The primary integration capability of the Connector is the REST API. In order to use it, you should have received an API-Key for the respective Connector. An API-Key so far has all authorizations for accessing the API. + +## Interactive Documentation + +You can find the REST API documentation hosted on your Connector on the following HTTP endpoints. Swagger and Rapidoc are interactive websites hosted on the Connector with which you can try out the various APIs interactively. + +- /docs/swagger : The Swagger UI of the Connector's OpenAPI specification +- /docs/rapidoc : The Rapidoc UI of the Connector's OpenAPI specification + +**Note:** You have to authorize yourself first before using the Swagger or Rapidoc interactive documentations. For this, please use the API Key of the Connector and follow the authorization steps on the user interface. For Swagger this is on the top right (Authorize button with a lock symbol), for Rapidoc this is usually the third heading called "Authentication" and can also be found on the left navigation. +{: .notice--warning} + +### Open API Documentation + +To fetch the Open API documentation of the Connector's REST API, visit the following URIs: + +- /docs/yaml : The Connector's OpenAPI specification in YAML format +- /docs/json : The Connector's OpenAPI specification in JSON format + +You can view these files with the [Swagger Editor](https://editor.swagger.io/) or automatically import them within your favorite API Clients (e.g. Postman or Insomnia). + +## API Authentication + +X-API-Key header diff --git a/_includes/scenarios/integrate/attribute-values.md b/_includes/scenarios/integrate/attribute-values.md new file mode 100644 index 000000000..e190955a3 --- /dev/null +++ b/_includes/scenarios/integrate/attribute-values.md @@ -0,0 +1,913 @@ +Each [Attribute]({% link _docs_integrate/data-model-overview.md %}#attributes) 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`](#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`](#emailaddress), [`DisplayName`](#displayname), [`PhoneNumber`](#phonenumber)). But there are also more complex Attribute Value types which consist of multiple properties with a strong correlation (e.g. [`StreetAddress`](#streetaddress), [`PersonName`](#personname)). These properties can (but don't have to) contain other Attribute Values. + +# Identity Attributes + +The Attribute Values in this chapter can only be used in an [Identity Attribute]({% link _docs_integrate/data-model-overview.md %}#identityattribute). + +## 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` | ✗ | see [`AffiliationRole`](#affiliationrole) | +| organization | `string` | ✓ | see [`AffiliationOrganization`](#affiliationorganization) | +| unit | `string` | ✗ | see [`AffiliationUnit`](#affiliationunit) | + +## AffiliationOrganization + +The organization the person is affiliated to. + +It is not recommended to send an AffiliationOrganization to another Identity by its own. Instead, send an [`Affiliation`](#affiliation) with the `organization` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | --------------------------- | :------: | ---------------- | +| `@type` | `"AffiliationOrganization"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +**Validation** + +## AffiliationRole + +The role the person has in the organization. + +It is not recommended to send an AffiliationRole to another Identity by its own. Instead, send an [`Affiliation`](#affiliation) with the `role` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ------------------- | :------: | ---------------- | +| `@type` | `"AffiliationRole"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## AffiliationUnit + +The organization unit the person is affiliated to. + +It is not recommended to send an AffiliationUnit to another Identity by its own. Instead, send an [`Affiliation`](#affiliation) with the `unit` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ------------------- | :------: | ---------------- | +| `@type` | `"AffiliationUnit"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## BirthCity + +The city of birth. + +It is not recommended to send a BirthCity to another Identity by its own. Instead, send a [`BirthPlace`](#birthplace) with the `city` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ------------- | :------: | ---------------- | +| `@type` | `"BirthCity"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## BirthCountry + +The country of birth. + +It is not recommended to send a BirthCountry to another Identity by its own. Instead, send a [`BirthPlace`](#birthplace) with the `country` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ---------------- | :------: | --------------------------------------------------------------------------------------------------------------------------- | +| `@type` | `"BirthCountry"` | ✓ | | +| `value` | `string` | ✓ | only [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) country codes | + +## BirthDate + +The birth date of a natural person. + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ------------- | :------: | ------------------------------- | +| `@type` | `"BirthDate"` | ✓ | | +| `day` | `number` | ✓ | see [`BirthDay`](#birthday) | +| `month` | `number` | ✓ | see [`BirthMonth`](#birthmonth) | +| `year` | `number` | ✓ | see [`BirthYear`](#birthyear) | + +## BirthDay + +The day of birth. + +It is not recommended to send a BirthDay to another Identity by its own. Instead, send a [`BirthDate`](#birthdate) with the `day` property set. +{: .notice--warning} + +| Name | Type | Required | Validation | +| ------- | ------------ | :------: | --------------------------------------- | +| `@type` | `"BirthDay"` | ✓ | | +| `value` | `number` | ✓ | min: 1
                      max: 31
                      must be an integer | + +## BirthMonth + +The day of month. + +It is not recommended to send a BirthMonth to another Identity by its own. Instead, send a [`BirthDate`](#birthdate) with the `month` property set. +{: .notice--warning} + +| Name | Type | Required | Validation | +| ------- | -------------- | :------: | --------------------------------------- | +| `@type` | `"BirthMonth"` | ✓ | | +| `value` | `number` | ✓ | min: 1
                      max: 12
                      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 BirthCity and BirthCountry and can optionally include a BirthState (e.g. if the BirthCity is ambiguous within the BirthCountry). + +**Properties** + +| Name | Type | Required | Validation | +| --------- | -------------- | :------: | ------------------------------- | +| `@type` | `"BirthPlace"` | ✓ | | +| `city` | `string` | ✓ see | [`BirthCity`](#birthcity) | +| `country` | `string` | ✓ see | [`BirthCountry`](#birthcountry) | +| `state` | `string` | ✗ see | [`BirthState`](#birthstate) | + +## BirthState + +The state of birth. + +It is not recommended to send a BirthState to another Identity by its own. Instead, send a [`BirthPlace`](#birthplace) with the `state` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | -------------- | :------: | ---------------- | +| `@type` | `"BirthState"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## BirthYear + +The year of birth in the Gregorian calendar. + +It is not recommended to send a BirthYear to another Identity by its own. Instead, send a [`BirthDate`](#birthdate) with the `year` property set. +{: .notice--warning} + +| Name | Type | Required | Validation | +| ------- | ------------- | :------: | ----------------------------------------- | +| `@type` | `"BirthYear"` | ✓ | | +| `value` | `number` | ✓ | min: 1
                      max: 9999
                      must be an integer | + +## 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](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) country codes | + +## City + +The name of a city. This is usually used as part of a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress). + +It is not recommended to send a City to another Identity by its own. Instead, send a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress) with the `city` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | -------- | :------: | ---------------- | +| `@type` | `"City"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## 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](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) language codes | + +## Country + +A country code according to the standard "ISO 3166-1 alpha-2". This is usually used as part of a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress). + +It is not recommended to send a Country to another Identity by its own. Instead, send a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress) with the `country` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ----------- | :------: | --------------------------------------------------------------------------------------------------------------------------- | +| `@type` | `"Country"` | ✓ | | +| `value` | `string` | ✓ | only [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) country 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` | ✓ | see [`ZipCode`](#zipcode) | +| `city` | `string` | ✓ | see [`City`](#city) | +| `country` | `string` | ✓ | see [`Country`](#country) | +| `phoneNumber` | `string` | ✗ | see [`PhoneNumber`](#phonenumber) | +| `state` | `string` | ✗ | see [`State`](#state) | + +## 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: 100
                      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 + +A IdentityFileReference is a link to an enmeshed [`File`]({% link _docs_integrate/data-model-overview.md %}#files) 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. + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ------------------------- | :------: | ---------------- | +| `@type` | `"IdentityFileReference"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## 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. + +It is not recommended to send a GivenName to another Identity by its own. Instead, send a [`PersonName`](#personname) with the `givenName` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ------------- | :------: | ---------------- | +| `@type` | `"GivenName"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## HonorificPrefix + +The honorific prefix of a person, e.g. 'Sir'. + +It is not recommended to send a HonorificPrefix to another Identity by its own. Instead, send a [`PersonName`](#personname) with the `honorificPrefix` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ------------------- | :------: | ---------------- | +| `@type` | `"HonorificPrefix"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## HonorificSuffix + +The honorific suffix of a person, e.g. 'PhD' + +It is not recommended to send a HonorificSuffix to another Identity by its own. Instead, send a [`PersonName`](#personname) with the `honorificSuffix` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ------------------- | :------: | ---------------- | +| `@type` | `"HonorificSuffix"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## HouseNumber + +A house number. This is usually used as part of a [`StreetAddress`](#streetaddress). + +It is not recommended to send a HouseNumber to another Identity by its own. Instead, send a [`StreetAddress`](#streetaddress) with the `houseNumber` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | --------------- | :------: | ---------------- | +| `@type` | `"HouseNumber"` | ✓ | | +| `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. + +It is not recommended to send a MiddleName to another Identity by its own. Instead, send a [`PersonName`](#personname) with the `middleName` property set. +{: .notice--warning} + +**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](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) 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`](#givenname) | +| `middleName` | `string` | ✗ | see [`MiddleName`](#middlename) | +| `surname` | `string` | ✓ | see [`Surname`](#surname) | +| `honorificSuffix` | `string` | ✗ | see [`HonorificSuffix`](#honorificsuffix) | +| `honorificPrefix` | `string` | ✗ | see [`HonorificPrefix`](#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` | ✓ | see [`ZipCode`](#zipcode) | +| `city` | `string` | ✓ | see [`City`](#city) | +| `country` | `string` | ✓ | see [`Country`](#country) | +| `state` | `string` | ✗ | see [`State`](#state) | + +## 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`](#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 public gender of a natural person. + +Please be advised that the possible values are defined by the public laws and technical passport measures between countries.

                      +We embrace the person’s own definition of its/her/his sexual and gender orientations. Therefore we have no “Gender” AttributeValueType (yet). We look forward in hearing your comments about this. +{: .notice--info} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | -------- | :------: | ------------------------------------------ | +| `@type` | `"Sex"` | ✓ | | +| `value` | `string` | ✓ | one of: `"intersex"`, `"female"`, `"male"` | + +## State + +The name of a state. This is usually used as part of a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress). + +It is not recommended to send a State to another Identity by its own. Instead, send a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress) with the `state` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | --------- | :------: | ---------------- | +| `@type` | `"State"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## Statement + +The statement allows a very generic digital mapping of facts + +**Properties** + +| Name | Type | Required | Validation | +| ------------------ | ------------- | :------: | ----------------------------------------------------------------------- | +| `@type` | `"Statement"` | ✓ | | +| `value` | `string` | ✓ | see [`StatementSubject`](#statementsubject) | +| `predicate` | `string` | ✓ | see [`StatementPredicate`](#statementpredicate) | +| `object` | `string` | ✓ | see [`StatementObject`](#statementobject) | +| `issuer` | `string` | ✓ | see [`DigitalIdentityDescriptor`](#statement-digitalidentitydescriptor) | +| `issuerConditions` | `string` | ✓ | see [`StatementIssuerConditions`](#statementissuerconditions) | + +## Statement DigitalIdentitydescriptor + +The issuer of a [`statement`](#statement). + +It is not recommended to send a DigitalIdentityDescriptor to another Identity by its own. Instead, send a [`statement`](#statement) +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------------ | ----------------------------- | :------: | ---------------------------------------------------- | +| `@type` | `"DigitalIdentityDescriptor"` | ✓ | | +| `address` | `string` | ✓ | The address of the identity that owns the statement. | +| `attributes` | `string []` | ✗ | see [`Identity Attributes`](#identity-attributes) | + +## StatementAuthorityType + +The authority type in [`StatementIssuerConditions`](#statementissuerconditions) + +It is not recommended to send a StatementAuthorityType to another Identity by its own. Instead, send a [`statement`](#statement) +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ------------- | :------: | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `@type` | `"Statement"` | ✓ | | +| `value` | `string` | ✓ | one of: `"ownAuthority"`, `"trustedAuthority"`, `"publicAuthority"`,`"relayedOwnAuthority"`, `"relayedTrustedAuthority"`, `"relayedPublicAuthority"` | + +## StatementEvidence + +The evidence in [`StatementIssuerConditions`](#statementissuerconditions) + +It is not recommended to send a StatementEvidence to another Identity by its own. Instead, send a [`statement`](#statement) +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | --------------------- | :------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `@type` | `"StatementEvidence"` | ✓ | | +| `value` | `string` | ✓ | one of: `"ownFact"`, `"digitalPublicIDCard"`, `"digitalPublicDocument"`,`"digitalDocument"`, `"sightCheckOfPublicIDCard"`, `"sightCheckOfPublicDocument"`,`"sightCheckOfDocument"`, `"mediaOfPublicIDCard"`, `"mediaOfPublicDocument"`, `"mediaOfDocument"` | + +## StatementIssuerConditions + +The issuer conditions in a [`Statement`](#statement) + +It is not recommended to send a StatementIssuerConditions to another Identity by its own. Instead, send a [`statement`](#statement) +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| --------------- | ----------------------------- | :------: | ----------------------------------------------------------------------- | +| `@type` | `"StatementIssuerConditions"` | ✓ | | +| `validFrom` | `string` | ✓ | The date from which on the Attribute is valid. | +| `validTo` | `string` | ✓ | The date until this Attribute is valid | +| `evidence` | `string` | ✓ | see [`StatementEvidence`](#statementevidence) | +| `authorityType` | `string` | ✓ | see [`StatementAuthorityType`](#statementauthoritytype) | +| `relayedParty` | `string` | ✗ | see [`DigitalIdentityDescriptor`](#statement-digitalidentitydescriptor) | + +## StatementObject + +The object of a [`statement`](#statement). + +It is not recommended to send a object to another Identity by its own. Instead, send a [`statement`](#statement) +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------------ | ------------------- | :------: | ---------------------------------------------------- | +| `@type` | `"StatementObject"` | ✓ | | +| `address` | `string` | ✓ | The address of the identity that owns the statement. | +| `attributes` | `string []` | ✗ | see [`Identity Attributes`](#identity-attributes) | + +## StatementPredicate + +The predicate of a [`statement`](#statement). + +It is not recommended to send a predicate to another Identity by its own. Instead, send a [`statement`](#statement) +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ---------------------- | :------: | ----------------------------------------------------------------------------------------- | +| `@type` | `"StatementPredicate"` | ✓ | | +| `value` | `string` | ✓ | one of: `"hasAttribute"`, `"relatesTo"`, `"isRelatedTo"` or any string starting with "z-" | + +## StatementSubject + +The subject of a [`statement`](#statement). + +It is not recommended to send a subject to another Identity by its own. Instead, send a [`statement`](#statement) +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------------ | -------------------- | :------: | ---------------------------------------------------- | +| `@type` | `"StatementSubject"` | ✓ | | +| `address` | `string` | ✓ | The address of the identity that owns the statement. | +| `attributes` | `string []` | ✗ | see [`Identity Attributes`](#identity-attributes) | + +## Street + +A street name. This is usually used as part of a [`StreetAddress`](#streetaddress). + +It is not recommended to send a Street to another Identity by its own. Instead, send a [`StreetAddress`](#streetaddress) with the `street` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ---------- | :------: | ---------------- | +| `@type` | `"Street"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +## 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` | ✓ | see [`Street`](#street) | +| `houseNo` | `string` | ✓ | see [`HouseNumber`](#housenumber) | +| `zipCode` | `string` | ✓ | see [`ZipCode`](#zipcode) | +| `city` | `string` | ✓ | see [`City`](#city) | +| `country` | `string` | ✓ | see [`Country`](#country) | +| `state` | `string` \| `undefined` | ✓ | see [`State`](#state) | + +## Surname + +The Surname, also called family name or last name, is the portion of the personal name that indicates the family, tribe or community. + +It is not recommended to send a Surname to another Identity by its own. Instead, send a [`PersonName`](#personname) with the `surname` property set. +{: .notice--warning} + +**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 | + +## ZipCode + +A zip code. This is usually used as part of a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress). + +It is not recommended to send a ZipCode to another Identity by its own. Instead, send a [`DeliveryBoxAddress`](#deliveryboxaddress), [`PostOfficeBoxAddress`](#postofficeboxaddress) or [`StreetAddress`](#streetaddress) with the `zipCode` property set. +{: .notice--warning} + +**Properties** + +| Name | Type | Required | Validation | +| ------- | ----------- | :------: | ---------------- | +| `@type` | `"ZipCode"` | ✓ | | +| `value` | `string` | ✓ | max. length: 100 | + +# Relationship Attributes + +The Attribute Values in this chapter can only be used in a [Relationship Attribute]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute). 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`]({% link _docs_integrate/data-model-overview.md %}#valuehints). + +## Consent + +Represents the consent of a person to a specific topic. If you want to obtain a consent, you can send a [`ReadAttributeRequestItem`]({% link _docs_integrate/requests-and-requestitems.md %}#readattributerequestitem) with a Consent-[RelationshipAttribute]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute) where the owner is the peer. + +**Properties** + +| Name | Type | Required | Validation | +| -------------------- | -------------------------------------------------------------------------------------------- | :------: | ---------------------------------------------------------- | +| `@type` | `"Consent"` | ✓ | | +| `consent` | `string` | ✓ | max. length: 2000 | +| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/data-model-overview.md %}#valuehintsoverride) | ✗ | | +| `link` | `string` | ✗ | min. length: 3
                      max. length: 1024
                      must be a valid URL | + +## ProprietaryBoolean + +An arbitrary boolean value. + +**Properties** + +| Name | Type | Required | Validation | +| -------------------- | -------------------------------------------------------------------------------------------- | :------: | ----------------- | +| `@type` | `"ProprietaryBoolean"` | ✓ | | +| `title` | `string` | ✓ | max. length: 100 | +| `description` | `string` | ✗ | max. length: 1000 | +| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/data-model-overview.md %}#valuehintsoverride) | ✗ | | +| `value` | `boolean` | ✓ | | + +## ProprietaryCountry + +A two-letter country code according to [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements). + +**Properties** + +| Name | Type | Required | Validation | +| -------------------- | -------------------------------------------------------------------------------------------- | :------: | --------------------------------------------------------------------------------------------------------------------------- | +| `@type` | `"ProprietaryCountry"` | ✓ | | +| `title` | `string` | ✓ | max. length: 100 | +| `description` | `string` | ✗ | max. length: 1000 | +| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/data-model-overview.md %}#valuehintsoverride) | ✗ | | +| `value` | `string` | ✓ | only [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) 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`]({% link _docs_integrate/data-model-overview.md %}#valuehintsoverride) | ✗ | | +| `value` | `string` | ✓ | min. length: 3
                      max. length: 100
                      must match `^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,}$` | + +## ProprietaryFileReference + +A FileReference is a link to an enmeshed [`File`]({% link _docs_integrate/data-model-overview.md %}#files) and can be used to add a File as an Attribute of a Relationship. + +**Properties** + +| Name | Type | Required | Validation | +| -------------------- | -------------------------------------------------------------------------------------------- | :------: | ----------------- | +| `@type` | `"ProprietaryFileReference"` | ✓ | | +| `title` | `string` | ✓ | max. length: 100 | +| `description` | `string` | ✗ | max. length: 1000 | +| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/data-model-overview.md %}#valuehintsoverride) | ✗ | | +| `value` | `string` | ✓ | max. length: 100 | + +## 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`]({% link _docs_integrate/data-model-overview.md %}#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`]({% link _docs_integrate/data-model-overview.md %}#valuehintsoverride) | ✗ | | +| `value` | `string` | ✓ | min.length: 4
                      must match `^#([0-9A-F]{3}){1,2}$`
                      max. length: 100 | + +## ProprietaryInteger + +An arbitrary integer number. + +**Properties** + +| Name | Type | Required | Validation | +| -------------------- | -------------------------------------------------------------------------------------------- | :------: | ------------------ | +| `@type` | `"ProprietaryInteger"` | ✓ | | +| `title` | `string` | ✓ | max. length: 100 | +| `description` | `string` | ✗ | max. length: 1000 | +| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/data-model-overview.md %}#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** + +```jsonc +{ + "@type": "ProprietaryJSON", + "title": "My JSON", + // length: 94 + "value": { + "foo": "bar", + "baz": 123, + "qux": true, + "quux": { + "corge": "grault" + }, + "garply": ["waldo", "fred", "plugh"] + } +} +``` + +```jsonc +{ + "@type": "ProprietaryJSON", + "title": "My JSON", + // length: 8 + "value": "a string" +} +``` + +```jsonc +{ + "@type": "ProprietaryJSON", + "title": "My JSON", + // length: 28 + "value": ["a string", 1, { "foo": "bar" }] +} +``` + +## ProprietaryLanguage + +A two-letter [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) language code. + +**Properties** + +| Name | Type | Required | Validation | +| -------------------- | -------------------------------------------------------------------------------------------- | :------: | -------------------------------------------------------------------------------------- | +| `@type` | `"ProprietaryLanguage"` | ✓ | | +| `title` | `string` | ✓ | max. length: 100 | +| `description` | `string` | ✗ | max. length: 1000 | +| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/data-model-overview.md %}#valuehintsoverride) | ✗ | | +| `value` | `string` | ✓ | only [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) 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`]({% link _docs_integrate/data-model-overview.md %}#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`]({% link _docs_integrate/data-model-overview.md %}#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`]({% link _docs_integrate/data-model-overview.md %}#valuehintsoverride) | ✗ | | +| `value` | `string` | ✓ | min. length: 3
                      max. length: 1024
                      must be a valid URL | + +## ProprietaryXML + +A XML. + +**Properties** + +| Name | Type | Required | Validation | +| -------------------- | -------------------------------------------------------------------------------------------- | :------: | ---------------------------------------------------------- | +| `@type` | `"ProprietaryXML"` | ✓ | | +| `title` | `string` | ✓ | max. length: 100 | +| `description` | `string` | ✗ | max. length: 1000 | +| `valueHintsOverride` | [`ValueHintsOverride`]({% link _docs_integrate/data-model-overview.md %}#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 | diff --git a/_includes/scenarios/integrate/connector-events.md b/_includes/scenarios/integrate/connector-events.md new file mode 100644 index 000000000..a865c650c --- /dev/null +++ b/_includes/scenarios/integrate/connector-events.md @@ -0,0 +1,64 @@ +| Event | Data | Description (This event is triggered when ...) | +| ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| consumption.attributeCreated | [LocalAttribute]({% link _docs_integrate/data-model-overview.md %}#LocalAttribute) | ... an Attribute was created manually or through a Request. | +| consumption.attributeDeleted | [LocalAttribute]({% link _docs_integrate/data-model-overview.md %}#LocalAttribute) | ... an Attribute was deleted manually or through a Request. | +| consumption.attributeSucceded | [LocalAttribute]({% link _docs_integrate/data-model-overview.md %}#LocalAttribute) | ... an Attribute was succeeded manually or through a Request. | +| consumption.attributeUpdated | [LocalAttribute]({% link _docs_integrate/data-model-overview.md %}#LocalAttribute) | ... an Attribute was updated manually or through a Request. | +| consumption.incomingRequestReceived | [LocalRequest]({% link _docs_integrate/data-model-overview.md %}#LocalRequest) | ... an incoming Request was received either by loading a Relationship Template or by receiving a Message | +| consumption.incomingRequestStatusChanged | [RequestStatusChangedEventData](#requeststatuschangedeventdata) | ... the status of an incoming Request has changed. | +| consumption.messageProcessed | [MessageProcessedEventData](#messageprocessedeventdata) | ... a Message was processed by Modules like the `RequestModule` or `DeciderModule`. | +| consumption.outgoingRequestCreated | [LocalRequest]({% link _docs_integrate/data-model-overview.md %}#LocalRequest) | ... an outgoing Request was created. | +| consumption.
                      outgoingRequestFromRelationshipCreationChange
                      CreatedAndCompleted | [LocalRequest]({% link _docs_integrate/data-model-overview.md %}#LocalRequest) | ... an outgoing Request was created and directly completed.
                      This happens if the Response came in with a new Relationship. | +| consumption.outgoingRequestStatusChanged | [RequestStatusChangedEventData](#requeststatuschangedeventdata) | ... the status of an outgoing Request has changed. | +| consumption.relationshipTemplateProcessed | [RelationshipTemplateProcessedEventData](#relationshiptemplateprocessedeventdata) | ... a RelationshipTemplate was processed by Modules like the `RequestModule` or `DeciderModule`. | +| consumption.sharedAttributeCopyCreated | [LocalAttribute]({% link _docs_integrate/data-model-overview.md %}#LocalAttribute) | ... an Attribute is copied for sharing with another identity. | +| transport.messageReceived | [Message]({% link _docs_integrate/data-model-overview.md %}#Message) | ... a Message is received during synchronization. | +| transport.messageSent | [Message]({% link _docs_integrate/data-model-overview.md %}#Message) | ... a Message was sent. | +| transport.peerRelationshipTemplateLoaded | [RelationshipTemplate]({% link _docs_integrate/data-model-overview.md %}#RelationshipTemplate) | ... a Relationship Template was loaded that belongs to another identity. | +| transport.relationshipChanged | [Relationship]({% link _docs_integrate/data-model-overview.md %}#Relationship) | ... a Relationship has changed. This can be due to one of the following cases:
                      • you create a Relationship
                      • you accept, reject or revoke a Relationship Change
                      • a Relationship Change is received during synchronization | + +## Event structure + +Every event is structured as follows (TData depends on the actual event, e.g. `LocalAttribute`): + +```ts +interface Event { + namespace: string; + eventTargetAddress: string; + data: TData; +} +``` + +### RequestStatusChangedEventData + +> [LocalRequest]({% link _docs_integrate/data-model-overview.md %}#LocalRequest) + +```ts +export interface RequestStatusChangedEventData { + request: LocalRequest; + oldStatus: LocalRequestStatus; + newStatus: LocalRequestStatus; +} +``` + +### MessageProcessedEventData + +> [Message]({% link _docs_integrate/data-model-overview.md %}#Message) + +```ts +export interface MessageProcessedEventData { + message: MessageDTO; + result: "ManualRequestDecisionRequired" | "NoRequest" | "Error"; +} +``` + +### RelationshipTemplateProcessedEventData + +> [RelationshipTemplate]({% link _docs_integrate/data-model-overview.md %}#RelationshipTemplate) + +```ts +export interface RelationshipTemplateProcessedEventData { + template: RelationshipTemplateDTO; + result: "ManualRequestDecisionRequired" | "NonCompletedRequestExists" | "RelationshipExists" | "NoRequest" | "Error"; +} +``` diff --git a/_includes/scenarios/integrate/data-model-overview.md b/_includes/scenarios/integrate/data-model-overview.md new file mode 100644 index 000000000..f967167d4 --- /dev/null +++ b/_includes/scenarios/integrate/data-model-overview.md @@ -0,0 +1,515 @@ +The enmeshed data model can be divided into three parts: + +- Transport types +- Local types +- Content types + +The following diagram gives you an overview of all the existing types and how they are connected to each other. The subsequent chapters describe these types in more detail. + +
                      +(note that you can click on each type in order to navigate to the paragraph with the corresponding description) + +At a first glance the amount of types is overwhelming. But in the following chapters all of them are explained in detail. + +# Transport Types + +Transport types like `RelationshipTemplate`, `Token` or `File` are types that are "exchanged" between Identities via the Backbone. They are created and updated by the [Transport Layer]({% link _docs_explore/42-transport-layer.md %}). In most cases they have a `content` property, which contains the actual payload that should be transferred between the Identities. This payload is being encrypted when it is sent to the Backbone, and decrypted by the other Identity when it is received. The following sections describe the different Transport types and their properties. + +Note that the properties of the types are the ones that exist locally (aka on the Connector/in the App). The Backbone does not necessarily know about them. The properties that only exist locally are marked accordingly in the tables below. Further there are properties that are confidential and are therefore encrypted before sent to the Backbone, in order to enable end-to-end encryption. Both kinds of these properties are marked accordingly in the "Remarks" column of the property tables below. + +## Token + +Tokens can be used to save arbitrary structured data on the Backbone, which is encrypted with a random symmetric key. You can then pass the ID of the Token, together with the random key, to another Identity, which can then retrieve the token and decrypt it, e.g. inside of a QR Code, which you send to the recipient via letter. Tokens can be handy in a lot of scenarios, for example: + +- You want to share secret information with someone you don't have a Relationship with. +- The enmeshed App currently uses a Token to save a Backup of the Identity. ID and secret key are then encoded in a QR Code, which the user can print out and scan later in order to restore the Identity on a new device. + +A Token has the following properties: + +| Name | Type | Description | Remarks | +| ------------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | +| id | `string` | {% include descr_id class="Token" prefix="TOK" %} | +| createdBy | `string` | {% include descr_createdBy class="Token" %} | | +| createdByDevice | `string` | {% include descr_createdByDevice class="Token" %} | | +| content | `unknown` | The content of the Token. You can add whatever you want here. | will be encrypted before sent to the Backbone | +| createdAt | `string` | {% include descr_createdAt class="Token" %} | | +| expiresAt | `string` | {% include descr_expiresAt class="Token" %} | | +| secretKey | `string` | {% include descr_secretKey class="Token" %} | saved only locally | +| truncatedReference | `string` | {% include descr_truncatedReference class="Token" %} | saved only locally | +| isEphemeral | `boolean` | If set to `true` the Token will not be cached in the database and only displayed once. You will not be able to fetch this Token unless you remember its id and secretKey. | + +## RelationshipTemplate + +A Relationship Template serves two purposes: + +1. It represents the permission to establish a Relationship. When sending a Relationship request, the sender has to attach the ID of a valid Relationship Template created by the recipient. Otherwise the Backbone blocks the Relationship request. And since the IDs are randomly generated, you can only obtain such an ID from the recipient. +2. It can contain data which is of interest for the one who uses the Relationship Template. The enmeshed App for example expects a Relationship Template content which contains a `Request` which contains e.g. Attributes about the creator of the Template as well as queries for Attributes that the Template creator wants to receive together with the Relationship request. + +| Name | Type | Description | Remarks | +| ---------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------- | +| id | `string` | {% include descr_id class="Relationship Template" prefix="RLT" %} | | +| isOwn | `boolean` | {% include descr_isOwn class="Relationship Template" %} | saved only locally | +| createdBy | `string` | {% include descr_createdBy class="Relationship Template" %} | | +| createdByDevice | `string` | {% include descr_createdByDevice class="Relationship Template" %} | | +| createdAt | `string` | {% include descr_createdAt class="Token" %} | | +| content | [`RelationshipTemplateContent`](#relationshiptemplatecontent) \| `unknown` | The content of the Relationship Template. You can add whatever you want here. However, if it is intended for a User of the enmeshed App, `RelationshipTemplateContent` has to be used. Otherwise feel free to insert whatever you want or need. | | +| expiresAt | `string` | {% include descr_expiresAt class="Token" %} | will be encrypted before sent to the Backbone | +| maxNumberOfAllocations | `number` \| `undefined` | Can be set to limit the number of allocations of this template. A Relationship Template is allocated by another Identity when it is first retrieved by it from the Backbone. After this value is reached, the Backbone rejects each request of any new Identity that wants to retrieve it. Identities that already allocated it will still be able to retrieve it. | | +| truncatedReference | `string` | {% include descr_truncatedReference class="RelationshipTemplate" %} | | + +## Relationship + +A Relationship between two Identities is the prerequisite for them to exchange Messages. If there is no Relationship, the Backbone blocks all Messages that are tried to be sent. This ensures that you only receive Messages from Identities you know, so you are protected from any harmful Messages like spam or phishing mails. + +| Name | Type | Description | Remarks | +| -------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ | +| id | `string` | {% include descr_id class="Relationship" prefix="REL" %} | | +| template | `RelationshipTemplate` | The Relationship Template that was used to establish this Relationship. | | +| status | `"Pending"` \| `"Active"` \| `"Rejected"` \| `"Revoked"` | The status of this Relationship.
                      {::nomarkdown}
                      • Pending: the Relationship was created, but not yet accepted the recipient. In this state you cannot send Messages yet.
                      • Active: this means that the Relationship is active. As long as it is active, both participants can exchange Messages.
                      • Rejected: the Relationship was rejected by the recipient.
                      • Revoked: the Relationship was revoked by the sender.
                      {:/} | | +| changes | [`RelationshipChange`](#relationshipchange)`[]` | The history of changes made to this Relationship. You can find the definition of a Relationship Change below. | | +| peer | `string` | The Address of the Identity with which you have this Relationship. | saved only locally | + +### RelationshipChange + +Since a Relationship "belongs" to two Identities, each change on such a Relationship demands for the agreement of both parties. That's where Relationship Changes come into play. Whenever one party wants to make a change to the Relationship (like create or terminate it), it sends a Relationship Change to the other party, which has to accept it in order for the change to take effect. If the other party doesn't want to accept it, it can also reject it. And if the party that created the Relationship Change changes its mind, it can revoke the Relationship Change. The Backbone makes sure that a Relationship Change can only be completed in one of those three ways (accepted, rejected, revoked). So for example if you try to accept a Relationship Change that is already revoked, you will receive an error. + +| Name | Type | Description | Remarks | +| -------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| id | `string` | {% include descr_id class="Relationship Change" prefix="RCH" %} | | +| status | `"Pending"` \|`"Accepted"` \|`"Rejected"` \|`"Revoked"` | The current status of the Relationship Change. | | +| type | `"Creation"` | The type of the Relationship Change. Currently the only existing type is `Creation`. As soon as the termination of Relationships is supported, `Termination` will be a second Relationship Change type. | | +| request | [`RelationshipChangeRequest`](#relationshipchangerequest) | Information about the request of the Relationship Change. | | +| response | [`RelationshipChangeResponse`](#relationshipchangeresponse) \| `undefined` | Information about the response of the Relationship Change. | | + +Note that RelationshipChangeRequest and RelationshipChangeResponse have nothing to do with [Requests](#request) and [Responses](#response), which we will discuss later. + +### RelationshipChangeRequest + +| Name | Type | Description | Remarks | +| --------------- | ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | +| createdBy | `string` | {% include descr_createdBy class="Relationship Change Request" %} | | +| createdByDevice | `string` | {% include descr_createdByDevice class="Relationship Change Request" %} | | +| createdAt | `string` | {% include descr_createdAt class="Relationship Change Request" %} | | +| content | [`RelationshipCreationChangeRequestContent`](#relationshipcreationchangerequestcontent) \| `unknown` | The content of the Relationship Change Request. You can add whatever you want here. However, if the other party uses the enmeshed App, and the type of the Relationship Change is `Creation`, [`RelationshipCreationChangeRequestContent`](#relationshipcreationchangerequestcontent) has to be used. Otherwise feel free to insert whatever you want or need. | will be encrypted before sent to the Backbone | + +### RelationshipChangeResponse + +| Name | Type | Description | Remarks | +| --------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | +| createdBy | `string` | {% include descr_createdBy class="Relationship Change Response" %} | | +| createdByDevice | `string` | {% include descr_createdByDevice class="Relationship Change Response" %} | | +| createdAt | `string` | {% include descr_createdAt class="Relationship Change Response" %} | | +| content | `unknown` | The content of the Relationship Change Response. You can add whatever you want here. Since the enmeshed App doesn't expect any special content here, there is no need to watch out. | will be encrypted before sent to the Backbone | + +## Message + +A Message is a piece of data that can be sent to one or more recipients. The sender is completely free in what the content of the Message looks like. Though in order to enable a normalized communication, enmeshed defines some content structures for Messages, and in the future there will be more of those. Consider that the enmeshed App only supports those normalized Message contents. Currently there are: + +- [`Mail`](#mail) +- [`Request`](#request) +- [`ResponseWrapper`](#responsewrapper) + +You can read more details about each of these in the corresponding sections of the "Content Types" chapter. + +But if you are communicating with another Connector, feel free to settle on any content structure that fits your needs. + +| Name | Type | Description | Remarks | +| --------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | +| id | `string` | {% include descr_id class="Message" prefix="MSG" %} | | +| content | `unknown` | The content of the Message. You can add whatever you want here. However, if it is intended for a User of the enmeshed App, use either `Mail`, `Request` or `Response`. Otherwise feel free to insert whatever you want or need. | will be encrypted before sent to the Backbone | +| createdBy | `string` | {% include descr_createdBy class="Message" %} | | +| createdByDevice | `string` | {% include descr_createdByDevice class="Message" %} | | +| recipients | [`Recipient`](#recipient)`[]` | An array of recipients of this Message. | | +| createdAt | `string` | {% include descr_createdAt class="Message" %} | | +| attachments | `string[]` | An array of [File](#file) IDs you want to attach to your Message. You receive the File ID after you uploaded a file to the Backbone. By attaching a File to a Message, you share the secret key used to encrypt/decrypt the File, which cannot be undone. | | + +### Recipient + +| Name | Type | Description | Remarks | +| ---------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | +| address | `string` | The Address of the recipient of the Message. | | +| relationshipId | `string` | The ID of the Relationship between the recipient and the sender of the Message. | saved only locally | +| receivedAt | `string` \| `undefined` | A timestamp that describes when the recipient retrieved the Message from the Backbone. `undefined` when the Message wasn't received yet. Caution: "received" does not mean that it was read, so don't mix this up with a read receipt. | | +| receivedByDevice | `string` \| `undefined` | The ID of the Device that first retrieved the Message. `undefined` when the Message wasn't received yet. This is of no interest for the sender of the Message, but rather for the recipient itself, since they can use it for audit purposes. sender | | + +## File + +The Backbone allows you to upload files, which are saved as - you guessed it - `Files`. + +| Name | Type | Description | Remarks | +| ------------------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | +| id | `string` | {% include descr_id class="File" prefix="FIL" %} | | +| createdAt | `string` | {% include descr_createdAt class="File" %} | | +| createdBy | `string` | {% include descr_createdBy class="File" %} | | +| createdByDevice | `string` | {% include descr_createdByDevice class="File" %} | | +| expiresAt | `string` | {% include descr_expiresAt class="File" %} | | +| filename | `string` | The name of the file as it was on the device that uploaded it. | will be encrypted before sent to the Backbone | +| filesize | `number` | The size of the plaintext file in bytes. | will be encrypted before sent to the Backbone | +| mimetype | `string` | The [mimetype](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) of the file. | will be encrypted before sent to the Backbone | +| title | `string` | A human readable title of the file, which can be defined when uploading the File. | will be encrypted before sent to the Backbone | +| description | `string` \| `undefined` | A human readable description of the file, which can be defined when uploading the File. | will be encrypted before sent to the Backbone | +| secretKey | `string` | The key that was used to encrypt the File. | saved only locally | +| isOwn | `boolean` | {% include descr_isOwn class="File" %} | saved only locally | +| truncatedReference | `string` | {% include descr_truncatedReference class="File" %} | saved only locally | + +A File further has its content, of course. But since this is not a JSON property, it is not included in this table. You can download the content of the File separately. + +# Local Types + +In addition to the types that are shared between Identities via the Backbone, there are certain types that only exist within one Identity. These types usually contain metadata about [Content types](#content-types) that should not be transferred to other Identities. They are created and updated by the [Consumption Layer]({% link _docs_explore/43-consumption-layer.md %}). + +Currently there are two main Local types: + +- LocalRequest +- LocalAttribute + +Each of them further describes some sub types. + +This chapter explains all of those types, together with their properties. + +## LocalRequest + +A Local Request contains the local metadata for a [Request](#request). + +| Name | Type | Description | +| --------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| id | `string` | {% include descr_id class="LocalRequest" prefix="FIL" %} | +| isOwn | `boolean` | `true` if you sent the Request, `false` if you received it. | +| peer | `string` | The Identity that sent you the corresponding Request/that you sent the Request to. | +| createdAt | `string` | {% include descr_createdAt class="LocalRequest" %} | +| status | [`LocalRequestStatus`](#localrequeststatus) | The current status of the Request. See [below](#localrequeststatus) for a list of all possible values. | +| content | [`Request`](#request) | The actual Content object this Local Request defines the metadata for. | +| source | [`LocalRequestSource`](#localrequestsource) \| `undefined` | Information about the Transport object with which the Request came in/was sent. This property is `undefined` if the Request is not sent yet. | +| response | [`LocalResponse`](#localresponse) \| `undefined` | Metadata + Content object of the response. If there is no response yet, this property is `undefined`. | + +### LocalRequestStatus + +Depending on whether it is an incoming or an outgoing Request, there can be different statuses. The following state diagram shows which status exists in both cases and when there are transitions from one state to another: + +![State diagram for Local Request Status]( {{ '/assets/images/explore/RequestStatus%20-%20State%20Diagram.png' | relative_url }} ) + +Draft +: This status only exists for outgoing Requests. It means that the Local Request was created, but not yet sent. + +Open +: In case of an outgoing Request, `Open` means that the Request was sent. The transition to `Open` happens automatically when you send the Request with a Message. +: In case of an incoming Request, `Open` means that the Local Request was received. + +DecisionRequired +: After the prerequisites of the Request and all of its Request Items were checked, a decision can be made. At first, the [Decider Module]({% link _docs_explore/61-runtime.md %}#decider-module) tries to make an automatic decision. It therefore checks all LocalRequests in status `DecisionRequired`. + +ManualDecisionRequired +: If the Decider Module cannot make a decision, it moves the Local Request to `ManualDecisionRequired`. When the Local Request is in this status, it's the User's turn to decide whether they want to accept or reject the Request. + +Decided +: When the User or the Decider Module accepts or rejects the Request, the Response and ResponseItems are generated based on the passed parameters. This Response is saved in the `response` property of the `LocalRequest`, but not yet sent. + +Completed +: In case of an incoming Request, the Runtime Module listens to an Event saying that a Request moved to status `Decided`. It then checks on which way the Request was received (Message/RelationshipTemplate) and sends the Response on the corresponding way (by sending a message or creating a Relationship). After the Response was successfully sent, it moves the Local Request to `Completed`. +: In case of an outgoing Request, the Runtime Module listens to the `MessageReceivedEvent` and checks the content of the sent Message for a Response. If there is one, it moves the corresponding Local Request to `Completed`. + +Expired +: When the timestamp in `expiresAt` of a Request is reached, the Request automatically moves to the status `Expired`. + +### LocalRequestSource + +With the information in this type you can clearly identify the Transport object the Request was sent/received in. Currently there are only two possibilities: Message and Relationship Template. + +| Name | Type | Description | +| --------- | ----------------------------------- | ---------------------------------------------------------------- | +| type | "Message" \| "RelationshipTemplate" | The type of Transport object the Request was sent/received in. | +| reference | `string` | The ID of the Transport object the Request was sent/received in. | + +### LocalResponse + +When a Local Request is decided/received, a Local Response is generated, which contains the Response, together with some metadata. + +| Name | Type | Description | +| --------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| createdAt | `string` | {% include descr_createdAt class="LocalResponse" %} | +| content | [`Response`](#response) | The actual Content object this Local Response defines the metadata for. | +| source | [`LocalResponseSource`](#localresponsesource) \| `undefined` | Information about the Transport object with which the Response came in/was sent. This property is `undefined` if the Response is not sent/received yet. | + +### LocalResponseSource + +With the information in this type you can clearly identify the Transport object the Response was sent/received in. Currently there are only two possibilities: Message and Relationship Change. + +| Name | Type | Description | +| --------- | --------------------------------- | ----------------------------------------------------------------- | +| type | "Message" \| "RelationshipChange" | The type of Transport object the Response was sent/received in. | +| reference | `string` | The ID of the Transport object the Response was sent/received in. | + +## LocalAttribute + +A Local Attribute contains the local metadata for an [Attribute](#attributes). There are three situations a Local Attribute is created in the database: + +- The Identity maintains an Attribute about itself (e.g. sets its first name). We call such a Local Attribute "Repository Attribute". +- The Identity shares an Attribute of itself with another Identity (e.g. sends it in a Request). In that case, a _copy of the original Local Attribute_ is created, where the `shareInfo` property is set. +- The Identity receives an Attribute from another Identity (e.g. receives it in a Request). In that case a _new Local Attribute_ is created, where the `shareInfo` is set. + +| Name | Type | Description | +| ----------- | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | `string` | {% include descr_id class="LocalAttribute" prefix="ATT" %} | +| parentId | `string` \| `undefined` | If the Attribute referenced by this Local Attribute is a component of a composite Attribute, the `parentId` property is set to the id of the composite Attribute. Example: if a Local Attribute is created with the content `StreetAddress`, for each property of the `StreetAddress` an additional Local Attribute is created. And each of these will have `parentId` set to the `id` of the Local Attribute for the `StreetAddress`. | +| createdAt | `string` | {% include descr_createdAt class="LocalAttribute" %} | +| content | [`IdentityAttribute`](#identityattribute) \| [`RelationshipAttribute`](#relationshipattribute) | The actual Content object this Local Attribute defines the metadata for. | +| succeeds | `string` \| `undefined` | The ID of the Local Attribute that succeeds the current one. | +| succeededBy | `string` \| `undefined` | The ID of the Local Attribute that is succeeded by the current one. | +| shareInfo | [`LocalAttributeShareInfo`](#localattributeshareinfo) \| `undefined` | Information about the peer this Local Attribute was received from/shared with, as well as via which Local Request it was received/sent. If the Local Attribute refers to a Repository Attribute, this property is `undefined`. | + +### LocalAttributeShareInfo + +The Local Attribute Share Info helps to keep track of how the Local Attribute was received/sent, from whom it was received/who sent it, as well as which Local Attribute it was copied from (in case of a shared Repository Attribute). For example, this enables us to track back who we shared a certain Repository Attribute with, so we are able to notify each of them when changing the Repository Attribute. + +| Name | Type | Description | +| ---------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| requestReference | `string` | The ID of the Local Request the Local Attribute was received in/sent with. | +| peer | `string` | The Address of the Identity the Local Attribute was received from/shared with. | +| sourceAttribute | `string` \| `undefined` | If the Local Attribute is a copy of a Repository Attribute, then this property contains the ID of the Repository Attribute. | + +## LocalAttributeListener + +A LocalAttributeListener is created when you accept an incoming Request with a [`RegisterAttributeListenerRequestItem`]({% link _docs_integrate/requests-and-requestitems.md %}#registerattributelistenerrequestitem). It is used to keep track of which Attribute Listeners currently exist and what they are listening for. + +| Name | Type | Description | +| ----- | -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | `string` | {% include descr_id class="LocalAttributeListener" prefix="ATL" %} | +| query | [`IdentityAttributeQuery`](#identityattributequery) \| [`ThirdPartyRelationshipAttributeQuery`](#thirdpartyrelationshipattributequery) | The query the Attribute that is listened to must match. Note that you cannot send a [`RelationshipAttributeQuery`](#relationshipattributequery) here, because it doesn't make sense: by definition, both parties know about a Relationship Attribute right from the beginning, because one party requests its creation, and the other one accepts it. | +| peer | `string` | The Address of the peer that requested the Attribute Listener. | + +# Content Types + +Content Types can be seen as a data contract between Identities. The medium through which this data is exchanged are the [Transport types](#transport-types) (e.g. Messages, Tokens, ...). This chapter shows all the Content types and describes their intended usage. + +## Request + +A Request allows you to ask another Identity to do something. What this "something" is depends on which of the so called [Request Items](#requestitem) were added to the Request (e.g. [`CreateAttributeRequestItem`]({% link _docs_integrate/requests-and-requestitems.md %}#createattributerequestitem), [`ReadAttributeRequestItem`]({% link _docs_integrate/requests-and-requestitems.md %}#readattributerequestitem), ...). The Request is then sent to the peer via Message or Relationship Template. The peer can then review the Request and decide whether they want to accept or reject it. And if they accept it, they can even choose which of the Items they want to accept. You can also put multiple Items into a [group](#requestitemgroup) in order to ensure that they can only be accepted/rejected as a unit. + +| Name | Type | Description | +| ----------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| id | `string` \| `undefined` | Unique identifier of this object. This property is `undefined` if the Request is inside of a Relationship Template.
                      _Remark: the ID of each Request starts with the letters "REQ". This way you can tell apart a Request ID from any other ID just by looking at the prefix._
                      | +| title | `string` \| `undefined` | An optional, human readable title for the Request. | +| description | `string` \| `undefined` | An optional, human readable description for the Request. | +| expiresAt | `string` \| `undefined` | {% include descr_expiresAt class="Request" %} | +| items | `(`[`RequestItemGroup`](#requestitemgroup)` | `[`RequestItem`](#requestitem)`)[]` | An array of Request Items and Groups that are part of the Request. There must be at least one Item or Group per Request. | +| metadata | `string` \| `undefined` | Optional custom metadata that can be sent together with the Request. This property is meant purely for developers who integrate with enmeshed. They can write for example some kind of key into this property, which can be used later to identify the content of this Request. | + +### RequestItem + +Request Items can be sent inside of a Request and specify what should be done when the Request is accepted. `RequestItem` itself only defines some common properties. There are multiple types that inherit from `RequestItem`, like `CreateAttributeRequestItem` or `ReadAttributeRequestItem`. + +The base properties are: + +| Name | Type | Description | +| --------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| title | `string` \| `undefined` | An optional, human readable title for the Request Item. | +| description | `string` \| `undefined` | An optional, human readable description for the Request Item. | +| metadata | `object` \| `undefined` | The metadata property can be used to provide arbitrary JSON content by the sender of the request. The metadata is not processed by enmeshed. It is a great way to use your own process descriptors at the time of sending the request which helps you identify the correct internal process at the time of receiving the response. | +| mustBeAccepted | `boolean` | The mandatory mustBeAccepted property is used to differentiate between required and optional Request Items within the Request. In other words, if the peer Identity may or may not decide to ignore this specific Request Item. If set to true, the peer cannot accept the Request without accepting this item. For example, some Attributes are mandatory for the business process and thus the respective Request Items must be accepted (mustBeAccepted = true). A consent to a newsletter is optional and thus only can be accepted (mustBeAccepted = false). Keep in mind that if the Request Item is inside of a Request Item Group, then this flag takes effect only when the Group is accepted. So as long as the Group is not accepted, the Item does not have to be accepted either. | +| requireManualDecision | `boolean` | To block the automated acceptance of Requests, the requireManualDecision property can be set to true. The default is, that each Request Item may be automatically processed on the peer side. If the sender would like to have an enforced manual acceptance step of for example an [AuthenticationRequestItem]({% link _docs_integrate/requests-and-requestitems.md %}#authenticationrequestitem) or a [ConsentRequestItem]({% link _docs_integrate/requests-and-requestitems.md %}#consentrequestitem), the requireManualDecision property can be set to true. | + +There is a [dedicated site]({% link _docs_integrate/requests-and-requestitems.md %}) that lists all available kinds of Request Items. + +### RequestItemGroup + +| Name | Type | Description | +| -------------- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| title | `string` \| `undefined` | An optional, human readable title for the Request Item Group. | +| description | `string` \| `undefined` | An optional, human readable description for the RequestItem. | +| metadata | `object` \| `undefined` | Optional metadata that can be sent together with this RequestItem. The intended usage is the same as of the metadata property of the Request. | +| mustBeAccepted | `boolean` | If set to `true`, then this Request Item Group has to be accepted when the Request is accepted. | +| items | [`RequestItem`](#requestitem)`[]` | The items inside of this Group. There has to be at least one Request Item per Group. Note that we do not support nested Groups at the moment. If you need this feature, you can [raise a feature request](https://github.com/nmshd/feedback/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=%5BFEATURE%5D+). | + +## Response + +| Name | Type | Description | +| --------- | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| result | `"Accepted"` \| `"Rejected"` | Whether the Response was accepted or rejected by the recipient of the Request. | +| requestId | `string` | The `id` of the Request this Response belongs to. The Sender of the Request needs this information to map the Response to the corresponding Request. | +| items | `(`[`ResponseItemGroup`](#responseitemgroup)`\|`[`ResponseItem`](#responseitem)`)[]` | An array of Response Items and Groups that are part of the Response. For each Request Item (Group) of the Request, there must be one Response Item (Group) in the Response. Note that the indices have to be the same for matching Request and Response Items. | + +### ResponseItem + +Response Items are sent inside of a Response. They contain the response data that is sent by the recipient of the Request. There are three different kinds of Response Items: `AcceptResponseItem`, `RejectResponseItem` and `ErrorResponseItem`. Depending on the actual Request Item, there can be different derivations of these three items. For example, in case of a [`CreateAttributeRequestItem`]({% link _docs_integrate/requests-and-requestitems.md %}#createattributerequestitem), there is a special [`CreateAttributeAcceptResponseItem`]({% link _docs_integrate/requests-and-requestitems.md %}#createattributerequestitem-response-itemproperties), while for an [`AuthenticationRequestItem`]({% link _docs_integrate/requests-and-requestitems.md %}#authenticationrequestitem), the [`AcceptResponseItem`](#acceptresponseitem) can be used, because there is no additional information necessary next to whether it was accepted or rejected. + +The [site documenting the Request Items]({% link _docs_integrate/requests-and-requestitems.md %}) shows which Response Item is required for each Request Item. + +#### AcceptResponseItem + +The properties of the `AcceptResponseItem` are: + +| Name | Type | Description | +| ------ | ------------ | -------------------------------------------------------- | +| result | `"Accepted"` | The only possible value here is the string `"Accepted"`. | + +#### RejectResponseItem + +The properties of the `RejectResponseItem` are: + +| Name | Type | Description | +| -------- | ----------------------- | ------------------------------------------------------------- | +| result | `"Rejected"` | The only possible value here is the string `"Rejected"`. | +| code? | `string` \| `undefined` | A code telling the sender about the reason for the rejection. | +| message? | `string` \| `undefined` | A human readable message with details about the rejection. | + +#### ErrorResponseItem + +The `ErrorResponseItem` is only created by the enmeshed Runtime, in case something happens which hinders you from further processing of the Request Item. It will never be created manually. The properties are: + +| Name | Type | Description | +| ------- | --------- | ----------------------------------------------------------------------- | +| result | `"Error"` | The only possible value here is the string `"Error"`. | +| code | `string` | An error code telling the sender about the kind of error that occurred. | +| message | `string` | A human readable error message with details about the error. | + +### ResponseItemGroup + +| Name | Type | Description | +| ----- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| items | [`ResponseItem`](#responseitem)`[]` | The items inside of this Group. For each Request Item of the Request Item Group, there must be one Response Item in the Response Item Group. Note that the indices have to be the same for matching Request and Response Items. | + +## ResponseWrapper + +The ResponseWrapper is a wrapper around the Response that is sent by the recipient of the Request. It contains the Response itself, but also some additional information that is required for the Request to be processed correctly. + +| Name | Type | Description | +| ---------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | +| requestId | `string` | The `id` of the Request this Response belongs to. | +| requestSourceReference | `string` | The reference to the Message or RelationshipTemplate the Request was received with. | +| requestSourceType | `"Message"` \| `"RelationshipTemplate"` | Specifies if the Request was transferred via [Message](#message) or [RelationshipTemplate](#relationshiptemplate). | +| response | [`Response`](#response) | The Response that is sent by the recipient of the Request. | + +## Attributes + +An Attribute is some piece of information about an Identity itself (e.g. its name, address, birth date, etc.) or about an Identity in the context of a Relationship (e.g. the customer id the of the user the Relationship). Since the two scenarios differ quite a lot, there are two different types for them: IdentityAttribute and RelationshipAttribute. + +### IdentityAttribute + +Identity Attributes describe an Identity itself. Their values are strongly normalized. There is a list of available values [here]({% link _docs_integrate/attribute-values.md %}). + +| Name | Type | Description | +| --------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | +| owner | `string` | The Identity that owns this Attribute. Only the owner of an Attribute is allowed to change it after its creation. | +| validFrom | `string` \| `undefined` | The date from which on the Attribute is valid. Could be in the future if the Attribute is not yet valid. | +| validTo | `string` \| `undefined` | The date until this Attribute is valid. Could be in the past if the Attribute is already expired. | +| value | [`IdentityAttributeValue`]({% link _docs_integrate/attribute-values.md %}#identity-attributes) | The Attribute's value. | +| tags | `string[]` \| `undefined` | To specify additional information. | + +### RelationshipAttribute + +Relationship Attributes describe an Identity in the context of a Relationship. While there are some types that can be used as a value for a RelationshipAttribute, these types are rather generic (e.g. `ProprietaryString`, `ProprietaryInteger`, ...). + +| Name | Type | Description | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| owner | `string` | The Identity that owns this Attribute. Only the owner of an Attribute is allowed to change it after its creation. | +| validFrom | `string` \| `undefined` | The date from which on the Attribute is valid. Could be in the future if the Attribute is not yet valid. | +| validTo | `string` \| `undefined` | The date until this Attribute is valid. Could be in the past if the Attribute is already expired. | +| key | `string` | An arbitrary key that is set by the creator of this Attribute. It is used to identify the Attribute in a query, especially by a third party. Example: you could set something like `customerId` in case of a customer id. | +| isTechnical | `boolean` \| `undefined` | Defines whether the Relationship Attribute contains data that is actually relevant for the user (`isTechnical=false`) or whether it should be hidden in the UI (`isTechnical=true`). | +| value | [`RelationshipAttributeValue`]({% link _docs_integrate/attribute-values.md %}#relationship-attributes) | The Attribute's value. | +| confidentiality | `"public"` \| `"protected"` \| `"private"` \| When this property is set to `"private"`, it means that third parties are not able to query this Relationship Attribute. It therefore only exists in the Relationship it was created in. If the confidentiality is `"protected"`, third parties can query the Relationship Attribute, but the App shows a warning saying that you should only share it with someone you trust. If the confidentiality is `"public"`, everybody can query the Attribute, without anything special to happen. | | + +## AttributeQueries + +One of the main features of enmeshed is sharing Attributes. For this, an Identity either proactively sends its Attributes to a peer. Or, if let's say a company wants to know the birth date of its customer, it can ask for it. Depending on the exact use case, the latter can be achieved with one of a bunch of Request Items, like for example a [`ReadAttributeRequestItem`]({% link _docs_integrate/requests-and-requestitems.md %}#readattributerequestitem), or a [`CreateAttributeListenerRequestItem`]({% link _docs_integrate/requests-and-requestitems.md %}#createattributerequestitem). All of them have in common that they define a `query` property, which contains either an [`IdentityAttributeQuery`](#identityattributequery) or a [`RelationshipAttributeQuery`](#relationshipattributequery). + +### IdentityAttributeQuery + +An Identity Attribute Query is used to query for Identity Attributes. For that, it defines the following properties: + +| Name | Type | Description | +| --------- | ------------------------- | --------------------------------------------------------------------------------------------------- | +| validFrom | `string` \| `undefined` | The start date of the time frame the returned Attribute should be valid in. | +| validTo | `string` \| `undefined` | The end date of the time frame the returned Attribute should be valid in. | +| valueType | `string` | The type of value that should be queried, e.g. `"StreetAddress"`, `"BirthDate"` or `"Nationality"`. | +| tags | `string[]` \| `undefined` | To specify additional information. | + +You can only query Identity Attributes owned by the recipient of the query. + +### RelationshipAttributeQuery + +There are cases in which you want to query some data from your peer that is not an Identity Attribute. An example for this is when an electricity provider asks for the electric meter number of a new customer. Since this information is only relevant in the context of the Relationship, an Identity Attribute wouldn't make any sense here. That's why you would send a RelationshipAttributeQuery. Its properties are: + +| Name | Type | Description | +| ---------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| validFrom | `string` \| `undefined` | The start date of the time frame the returned Attribute should be valid in. | +| validTo | `string` \| `undefined` | The end date of the time frame the returned Attribute should be valid in. | +| key | `string` | The key of the Relationship Attribute that should be queried. | +| owner | `string` | The owner of the queried Relationship Attribute. | +| attributeCreationHints | [`RelationshipAttributeCreationHints`](#relationshipattributecreationhints) | Contains information about the value that will be created, like the value type or its confidentiality. | + +#### RelationshipAttributeCreationHints + +| Name | Type | Description | +| --------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| title | `string` | A short text describing the purpose of the Attribute that is about to be created. | +| description | `string` \| `undefined` | A long text describing the purpose of the Attribute that is about to be created. | +| valueType | `string` | The value type of the Attribute to be created (e.g. `"ProprietaryInteger"`, `"ProprietaryString"`, ...) | +| confidentiality | `"public"` \|`"protected"` \|`"private"` \| | The confidentiality of the Attribute to be created. See [`RelationshipAttribute`](#relationshipattribute) for a more detailed description of confidentialities. | +| valueHints | [`ValueHints`](#valuehints) \| `undefined` | Hints for validating the value, e.g. a regular expression or a min/max length. | + +#### ValueHints + +| Name | Type | Description | +| -------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| editHelp? | `string` | A help text you can use to describe the purpose of the Attribute. | +| min? | `number` | In case of a string: the minimum length of the string. In case of an integer: the minimum value. | +| max? | `number` | In case of a string: the maximum length of the string. In case of an integer: the maximum value. | +| pattern? | `string` | A [regular expression](https://en.wikipedia.org/wiki/Regular_expression) that is used to validate the value. Only applicable if the value is a string. | +| values? | [`ValueHintsValue`](#valuehintsvalue)`[]` | An array of allowed values. | +| defaultValue? | `string` \| `number` \| `boolean` | The default value that is used if no value is provided. | +| propertyHints? | `Record`](#valuehints) | A set of Value Hints of all properties. The key is the name of the property and the value a `ValueHints` object. Only applicable if the value is complex. | + +#### ValueHintsOverride + +Has the same properties as [`ValueHints`](#valuehints), except that all of them are optional. This type is used for some [Relationship Attribute values]({% link _docs_integrate/attribute-values.md %}#relationship-attributes) + +#### ValueHintsValue + +| Name | Type | Description | +| ----------- | --------------------------------- | -------------------------------------------- | +| key | `string` \| `number` \| `boolean` | The actual value. | +| displayName | `string` | How the value should be displayed on the UI. | + +### ThirdPartyRelationshipAttributeQuery + +If you want to query Attributes the user has in the context of a Relationship with a third party, you can use the `ThirdPartyRelationshipAttributeQuery`. An example would be the query for the number of a bonus card managed by another company (like Payback). A ThirdPartyRelationshipAttributeQuery has the following properties: + +| Name | Type | Description | +| ---------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| validFrom | `string` \| `undefined` | The start date of the time frame the returned Attribute should be valid in. | +| validTo | `string` \| `undefined` | The end date of the time frame the returned Attribute should be valid in. | +| key | `string` | The key of the Relationship Attribute that should be queried. | +| owner | `string` | The owner of the queried Relationship Attribute. Can be an empty string (`""`), if the owner is unknown or you are querying from multiple thirdParties that could own the attribute. | +| thirdParty | `string[]` | The Address of the third parties the Relationship Attribute should be queried from. | + +## RelationshipTemplateContent + +Theoretically you can send any kind of data in a Relationship Template. However, if your peer uses the enmeshed App, it will only be able to process Relationship Templates that contain a `RelationshipTemplateContent`, which looks like this: + +| Name | Type | Description | +| ---------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| title | `string` \| `undefined` | An optional, human readable title that should be rendered in the UI. | +| metadata | `object` \| `undefined` | Optional custom metadata that can be sent together with the Relationship Template. This property is meant purely for developers who integrate with enmeshed. They can write for example some kind of key into this property, which can be used later to identify the content of this Template. | +| onNewRelationship | [`Request`](#request) | The Request that should pop up to the user in case there is no Relationship yet. In this Request you can send Attributes of yourself the user needs to in order to know who's Template it is (e.g. company name, address, ...), as ask for Attributes of the user you need to know in the Relationship, or send some information you already know about the user, so it can be saved in its wallet (e.g. the customer id). | +| onExistingRelationship | [`Request`](#request) \| `undefined` | The Request that should pop up to the user in case a Relationship already exists. An example usage is a Request with an `AuthenticationRequestItem` for the sake of two-factor authentication. | + +## RelationshipCreationChangeRequestContent + +The naming on this one in combination with its `response` property is a bit confusing. Even though the `RelationshipCreationChangeRequestContent` contains the word "Request", it has a `response` property. +This is because in the context of Relationships, there are [Relationship Changes](#relationshipchange), which have a `request` and a `response` property. But caution: these have nothing to do with the Content-types `Request` and `Response`. + +| Name | Type | Description | +| -------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| response | [`Response`](#response) | The Response to the Request that was contained in the [RelationshipTemplateContent](#relationshiptemplatecontent) (either in the `onExistingRelationship` property or in the `onNewRelationship` property). | + +## Mail + +A Mail can be sent as the content of a [Message](#message). It is comparable with the classic email, so its properties should not contain any surprise. + +| Name | Type | Description | +| ------- | ------------------------- | ----------------------------------------------------------------------------------------------------------- | +| to | `string[]` | The enmeshed Addresses of the main recipients of this Mail. | +| cc | `string[]` \| `undefined` | The enmeshed Addresses that should receive a copy of this Mail, additionally to the ones specified in `to`. | +| subject | `string` | The subject of the Mail. | +| body | `string` | The body of the Mail. | diff --git a/_includes/scenarios/integrate/error-codes.md b/_includes/scenarios/integrate/error-codes.md new file mode 100644 index 000000000..a280f110e --- /dev/null +++ b/_includes/scenarios/integrate/error-codes.md @@ -0,0 +1,71 @@ +Please find a list of enmeshed error codes below. Most often the errors occur on invalid input or actions. If you happen to find unexpected errors while using enmeshed or cannot deduce the reason for your error, please report it in the [enmeshed Issue Tracker](https://github.com/nmshd/feedback/issues). + +| ErrorCode | Description | +| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| {% include anchor a="error.connector.http.methodNotAllowed" %} | This method is not supported for the requested resource. | +| {% include anchor a="error.connector.http.notAcceptable" %} | The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request. | +| {% include anchor a="error.connector.http.routeDoesNotExist" %} | The requested route does not exist. | +| {% include anchor a="error.connector.unauthorized" %} | Unauthorized. | +| {% include anchor a="error.connector.validation.invalidJsonInPayload" %} | The given payload is not a valid json object. | +| {% include anchor a="error.consumption.attributes.cannotSucceedAttributesWithAParent" %} | The Attribute you want to succeed has a parent. You cannot succeed Attributes with a parent. Instead, succeed the parent, which will implicitly succeed all its children. For example, if you want to change a HouseNumber, you should succeed the Address it is part of. | +| {% include anchor a="error.consumption.requests.decide.validation.invalidNumberOfItems" %} | The Request and the Response item count is different. | +| {% include anchor a="error.consumption.requests.decide.validation.itemAcceptedButParentNotAccepted" %} | You accepted an item of a Request or RequestItemGroup, but you rejected the parent. If you accept a RequestItem, you need to accept all parents up to the root. | +| {% include anchor a="error.consumption.requests.decide.validation.mustBeAcceptedItemNotAccepted" %} | The Request was accepted but an item that was flagged as 'mustBeAccepted' was not accepted. | +| {% include anchor a="error.consumption.requests.decide.validation.requestItemAnsweredAsRequestItemGroup" %} | You answered a RequestItem as a RequestItemGroup. | +| {% include anchor a="error.consumption.requests.decide.validation.requestItemGroupAnsweredAsRequestItem" %} | You answered a RequestItemGroup as a RequestItem. | +| {% include anchor a="error.consumption.requests.invalidRequestItem" %} | The given RequestItem is invalid. | +| {% include anchor a="error.consumption.requests.servalErrorDuringRequestItemProcessing" %} | A serialization / validation error occurred during the RequestItem processing. Check the type definitions of your used types. | +| {% include anchor a="error.consumption.requests.unexpectedErrorDuringRequestItemProcessing" %} | An unknown error occurred during the RequestItem processing. | +| {% include anchor a="error.runtime.alreadyInitialized" %} | The runtime is already initialized. The init method can only be executed once. | +| {% include anchor a="error.runtime.alreadyStarted" %} | The runtime is already started. You should stop it first for a restart. | +| {% include anchor a="error.runtime.cacheEmpty" %} | The cache of the requested entity is empty. | +| {% include anchor a="error.runtime.challenges.invalidChallenge" %} | The challengeString is invalid. | +| {% include anchor a="error.runtime.challenges.invalidSignature" %} | The signature is invalid. | +| {% include anchor a="error.runtime.files.invalidReference" %} | The given reference is not valid. The reference for a file must start with 'VE9L' or 'RklM'. | +| {% include anchor a="error.runtime.invalidTokenContent" %} | The given token has an invalid content for this route. | +| {% include anchor a="error.runtime.messages.fileNotFoundInMessage" %} | The requested file was not found in the given message. | +| {% include anchor a="error.runtime.notInitialized" %} | The runtime is not initialized. You must run init before you can start or stop the runtime. | +| {% include anchor a="error.runtime.notStarted" %} | The runtime is not started. You can only stop the runtime if you executed start before. | +| {% include anchor a="error.runtime.notSupported" %} | The requested feature is not supported. | +| {% include anchor a="error.runtime.recordNotFound" %} | The requested Record was not found. Make sure the ID exists and the record is not expired. | +| {% include anchor a="error.runtime.relationshipTemplates.cannotCreateQRCodeForPeerTemplate" %} | You cannot create a QRCode for a peer template. | +| {% include anchor a="error.runtime.relationshipTemplates.cannotCreateTokenForPeerTemplate" %} | You cannot create a token for a peer template. | +| {% include anchor a="error.runtime.relationshipTemplates.invalidReference" %} | The given reference is not valid. The reference for a relationship template must start with 'VE9L' or 'VE9L'. | +| {% include anchor a="error.runtime.requestDeserialization" %} | There was an error during the request deserialization. | +| {% include anchor a="error.runtime.servalError" %} | A serialization / validation error occurred. | +| {% include anchor a="error.runtime.startup.noActiveAccount" %} | No AccountController could be found. You might have to login first. | +| {% include anchor a="error.runtime.startup.noActiveConsumptionController" %} | No ConsumptionController could be found. You might have to login first. | +| {% include anchor a="error.runtime.startup.noActiveExpander" %} | No DataViewExpander could be found. You might have to login first. | +| {% include anchor a="error.runtime.unknown" %} | An unknown error occurred. Check the error message or the stack trace to learn more. | +| {% include anchor a="error.runtime.unknownType" %} | The given '@type' could not be found during the deserialization. | +| {% include anchor a="error.runtime.validation.invalidPayload" %} | The given combination of properties in the payload is not supported. | +| {% include anchor a="error.runtime.validation.invalidPropertyValue" %} | A property of the given payload is invalid. | +| {% include anchor a="error.transport.challenges.challengeTypeRequiresRelationship" %} | The challenge type 'Relationship' requires a relationship for the challenge creation. | +| {% include anchor a="error.transport.datawallet.currentBiggerThanTarget" %} | The current datawallet version is bigger than the target version. | +| {% include anchor a="error.transport.datawallet.encryptedPayloadIsNoCipher" %} | The given encrypted payload is no cipher. | +| {% include anchor a="error.transport.datawallet.insufficientSupportedDatawalletVersion" %} | The current SupportedDatawalletVersion is too low to perform the requested operation. | +| {% include anchor a="error.transport.datawallet.unsupportedModification" %} | A collection was recieved in a CacheChanged datawallet modification but is not supported in the current version of the library. | +| {% include anchor a="error.transport.devices.alreadyOnboarded" %} | The device that you try to create an onboarding code for has already been onboarded. | +| {% include anchor a="error.transport.files.cipherMismatch" %} | The actual hash of the cipher does not match the given cipherHash. Something went wrong while storing/transmitting the file. | +| {% include anchor a="error.transport.files.fileContentUndefined" %} | The given files content is undefined. | +| {% include anchor a="error.transport.files.invalidMetadata" %} | The metadata of the file is invalid. | +| {% include anchor a="error.transport.files.invalidTruncatedReference" %} | The given truncated reference is invalid. | +| {% include anchor a="error.transport.files.maxFileSizeExceeded" %} | The given file content size exceeds the max file size the backbone accepts. | +| {% include anchor a="error.transport.files.plaintextHashMismatch" %} | The actual hash of the plaintext does not match the given plaintextHash. Something went wrong while encrypting/decrypting the file. | +| {% include anchor a="error.transport.general.baseUrlNotSet" %} | The baseUrl was not set. | +| {% include anchor a="error.transport.general.platformClientIdNotSet" %} | The platform clientId was not set. | +| {% include anchor a="error.transport.general.platformClientInvalid" %} | The combination of platform clientId and clientSecret is invalid. | +| {% include anchor a="error.transport.general.platformClientSecretNotSet" %} | The platform clientSecret was not set. | +| {% include anchor a="error.transport.identity.realmLength" %} | The given realm is not 3 characters long. | +| {% include anchor a="error.transport.messages.noMatchingRelationship" %} | A Relationship with the given address does not exist. | +| {% include anchor a="error.transport.messages.ownAddressNotInList" %} | The recipients list of a message didn't contain an entry for the own address. This message should not have been received. | +| {% include anchor a="error.transport.messages.plaintextMismatch" %} | The own address was not named as a recipient within the signed MessagePlaintext. For example this can be caused by a replay attack. | +| {% include anchor a="error.transport.messages.signatureListMismatch" %} | The signature list didn't contain an entry for a given address. | +| {% include anchor a="error.transport.messages.signatureNotValid" %} | The digital signature on a message for a peer key is invalid. An impersonination attack might be the cause of this. | +| {% include anchor a="error.transport.notSupported" %} | The requested method is not yet supported. | +| {% include anchor a="error.transport.recordNotFound" %} | The requested record was not found. | +| {% include anchor a="error.transport.relationships.wrongChangeStatus" %} | The relationship change has the wrong status to run the requested operation. | +| {% include anchor a="error.transport.secrets.secretNotFound" %} | No secret was found for a specific type. | +| {% include anchor a="error.transport.secrets.wrongBaseKeyType" %} | The given secret type is not supported! | +| {% include anchor a="error.transport.signatureNotValid" %} | A signature is invalid. | +| {% include anchor a="error.transport.tokens.invalidTokenContent" %} | The given token content is invalid. | diff --git a/_includes/scenarios/integrate/event-introduction.md b/_includes/scenarios/integrate/event-introduction.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/scenarios/integrate/faq.md b/_includes/scenarios/integrate/faq.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/scenarios/integrate/integration-example.md b/_includes/scenarios/integrate/integration-example.md new file mode 100644 index 000000000..cf57aaf4a --- /dev/null +++ b/_includes/scenarios/integrate/integration-example.md @@ -0,0 +1,253 @@ +In this tutorial we go through the basic steps necessary to establish a Relationship to another Identity and send Messages between two Identities with an existing Relationship. This will create a better understanding of these processes, which will help you on automating them for your organization. + +The following steps include small interactive pieces of the Connector's API documentation that, when executed, fire requests on a Connector we provided for testing purposes. Example: + +{% include rapidoc api_route_regex="^get /health$" title="" %} + +So if you don't have your own Connector installed, feel free to use the samples directly by unfolding them and clicking on "Try". Otherwise you can use your own Connector either with a REST client (e.g. Insomnia or Postman) or by using the RapiDoc documentation (/docs/rapidoc) hosted on your Connector. + +The payloads for the requests that are sent during this tutorial contain placeholders marked with `<...>`. You need to replace them with values before you send the request. + +## Prerequisites + +- If you want to use your own Connector for executing the examples: + - [Install the Connector](https://enmeshed.eu/integrate/connector-installation) + - Make sure the [Sync Module is disabled](https://enmeshed.eu/integrate/connector-configuration#sync) (because in this tutorial we will synchronize manually via the HTTP endpoint) + - Make sure the [docs are enabled](https://enmeshed.eu/integrate/connector-configuration#corehttpapi) for the documentation route to work + - Get the API key that was configured during installation of the Connector (it needs to be sent in the `X-API-KEY` header of every HTTP request) +- You need **version 2** of the [enmeshed App]({% link _docs_use/install-the-app.md %}) installed on your mobile device. + +## Establishing Relationships + +In order to communicate with another Identity, a Relationship to that Identity is required. In this first part of the tutorial you will learn how to establish a Relationship between your Connector and another Identity. In this case the other Identity will be the App, but it could be another Connector as well. + +### Connector: Create an Attribute + +In order to share an Attribute via a Relationship Template, we need to create one by executing `POST /api/v2/Attributes` with the following payload: + +```json +{ + "content": { + "@type": "IdentityAttribute", + "owner": "", + "value": { + "@type": "DisplayName", + "value": "Connector Tutorial" + } + } +} +``` + +You can query the Connector's Address under the route `/api/v2/Account/IdentityInfo`. If you are using the Demo Connector of this Tutorial, the Address is `id134nJmN7E4Carb6KyRJyePVnXxVHEYQgWD`. +{: .notice--info} + +{% include rapidoc api_route_regex="^post /api/v2/Attributes$" %} + +{% include copy-notice description="Save the `id` of the Attribute that you can find in the response. You will need it in the next step." %} + +### Connector: Test your Request's Validity + +In order to make sure the Request and its items are valid you can validate it by calling the `POST /api/v2/Requests/Outgoing/Validate` route. You can define your own payload for this Request, or you can just use the one below, which contains two [RequestItemGroups]({% link _docs_integrate/data-model-overview.md %}#requestitemgroup): + +- one with a [ShareAttributeRequestItem]({% link _docs_integrate/data-model-overview.md %}#shareattributerequestitem) that contains Attributes that will be shared with the peer +- one with [ReadAttributeRequestItem]({% link _docs_integrate/data-model-overview.md %}#readattributerequestitem)s that query Attributes of the peer + +```json +{ + "content": { + "items": [ + { + "@type": "RequestItemGroup", + "mustBeAccepted": true, + "title": "Shared Attributes", + "items": [ + { + "@type": "ShareAttributeRequestItem", + "mustBeAccepted": true, + "attribute": { + "@type": "IdentityAttribute", + "owner": "", + "value": { + "@type": "DisplayName", + "value": "Connector Tutorial" + } + }, + "sourceAttributeId": "" + } + ] + }, + { + "@type": "RequestItemGroup", + "mustBeAccepted": true, + "title": "Requested Attributes", + "items": [ + { + "@type": "ReadAttributeRequestItem", + "mustBeAccepted": true, + "query": { + "@type": "IdentityAttributeQuery", + "valueType": "GivenName" + } + }, + { + "@type": "ReadAttributeRequestItem", + "mustBeAccepted": true, + "query": { + "@type": "IdentityAttributeQuery", + "valueType": "Surname" + } + }, + { + "@type": "ReadAttributeRequestItem", + "mustBeAccepted": false, + "query": { + "@type": "IdentityAttributeQuery", + "valueType": "EMailAddress" + } + } + ] + } + ] + } +} +``` + +{% include rapidoc api_route_regex="^post /api/v2/Requests/Outgoing/Validate$" %} + +Even though the Requests are validated during the RelationshipTemplate creation you should not skip this step as it gives you additional information in case of validation errors. +{: .notice--info} + +### Connector: Create a Relationship Template + +Start by creating a so called Relationship Template on the Connector. You can do so by calling the `POST /api/v2/RelationshipTemplates/Own` route. Use the following JSON in the request body: + +```jsonc +{ + "maxNumberOfAllocations": 1, + "expiresAt": "2023-06-01T00:00:00.000Z", + "content": { + "@type": "RelationshipTemplateContent", + "title": "Connector Demo Contact", + "onNewRelationship": { + // + } + } +} +``` + +{% include rapidoc api_route_regex="^post /api/v2/RelationshipTemplates/Own$" %} + +{% include copy-notice description="Save the `id` of the Relationship Template that you can find in the response. You will need it in the next step." %} + +### Connector: Create a QRCode for the Relationship Template + +Since we will use the enmeshed App to send a Relationship Request to the Connector, we now have to create a QR Code one can scan with the App to retrieve the Relationship Template and send a Relationship Request to the Connector. + +For this, execute the `GET /api/v2/RelationshipTemplates/{id}` route (Accept Header: `image/png`) to create a QRCode. Use the ID of the Relationship Template from the previous step as the value for `id`. + +{% include rapidoc api_route_regex="^get /api/v2/RelationshipTemplates/{id}$" %} + +### App: Send a Relationship Request + +Open the created QR Code and start the enmeshed App. Depending on what you already did with the App, choose one of the following paths: + +- If this is the first time you use the App: + - click on "Scan code" + - hold the camera in front of the QR code +- If you want to use a new profile: + - click on the "+ New profile" button + - click on "Scan code" + - hold the camera in front of the QR code +- If you want to use an existing profile: + - select the existing profile + - navigate to "Contacts" + - click on "Add contact" + - hold the camera in front of the QR code + +All three paths should result in a screen similar to the one below, where you can see the information that you added as content to the Relationship Template. + +!["Add contact" screen]( {{ '/assets/images/add-contact-screen.jpg' | relative_url }} ) + +Finally, fill out the required fields and click on "Add contact" to send the Relationship Request. This will create a new Relationship between the App and the Connector. This Relationship has the status `Pending` for now. + +### Connector: Accept the Relationship Request + +In order to move the Relationship into the `Active` state, you now need to accept the Relationship Request with the Connector. In order to do so, first execute the `POST /api/v2/Account/Sync` route, which will fetch all changes that occurred since the last time this endpoint was executed. + +{% include rapidoc api_route_regex="^post /api/v2/Account/Sync$" %} + +In the response you will receive the created Relationship, which contains corresponding Relationship Creation Change. + +Example: + +```json +{ + "result": { + "messages": [], + "relationships": [ + { + "id": "RELmJj25x2bZW0VXzAiQ", + ... + "status": "Pending", + "peer": "id19Sy75wjCWhQSxsbMiGLn6iSBfWvQmot5b", + "changes": [ + { + "id": "RCHUwBw7BWlROPlEjb51", + ... + "status": "Pending", + "type": "Creation" + } + ] + } + ] + } +} +``` + +{% include copy-notice description="Save the `id` of the Relationship (`REL_________________`) as well as the `id` of the first Relationship Change (`RCH_________________`) in the `changes` array and use them as input to the `PUT /api/v2/Relationships/{id}/Changes/{changeId}/Accept` route. You can leave that request body as it is." %} + +{% include rapidoc api_route_regex="^put /api/v2/Relationships/{id}/Changes/{changeId}/Accept$" %} + +Now the Relationship is in the `Active` state, so we can start to communicate with the opposite Identity, which we will do in the next part of this tutorial. In order to do so we will need the Address of that Identity. So in the response of the last request look for the `peer` property and write down its value. It should start with `id1`. + +## Sending and Receiving Messages + +After you have established a Relationship to an Identity, you can start to exchange Messages. Enmeshed defines [different types of Messages]({% link _docs_integrate/data-model-overview.md %}#message). For this tutorial we will focus on Messages of type [Mail]({% link _docs_integrate/data-model-overview.md %}#mail), which you can compare to a classic email: you can specify one or more recipients, a subject and a body, as well as add some attachments. + +### Sending a Message with a Connector + +To send a Message, all you need to do is call the `POST /api/v2/Messages` endpoint. You can use the content below, while replacing the placeholders in `recipients` and `to` with the Address you copied previously. You can further modify the `subject` and `body` properties to add some custom content. + +```json +{ + "recipients": ["id_________________________________"], + "content": { + "@type": "Mail", + "to": ["id_________________________________"], + "subject": "Welcome", + "body": "Hello. We are pleased to welcome you as our customer." + } +} +``` + +{% include rapidoc api_route_regex="^post /api/v2/Messages$" %} + +After you have sent this request, you should receive a push notification on your phone. Open the enmeshed App, navigate to "Contacts" and select your Relationship. You should see the Message in the list. You can show details by tapping on it. + +### Receiving a Message with a Connector + +Next we are going to send a Message from the App to the Connector. Therefore, open the App, navigate to "Contacts" and select your Relationship. Next, tap on "New Message". Enter subject and body an tap on "Send". + +In order to fetch the Message, we need to call the `POST /api/v2/Account/Sync` endpoint again. + +{% include rapidoc api_route_regex="^post /api/v2/Account/Sync$" %} + +The response should contain a Message with the content you entered in the App. + +## What's next? + +Now that you have successfully established a Relationship and exchanged Messages, you can further explore the enmeshed API. You can for example: + +- explore the [enmeshed data model]({% link _docs_integrate/data-model-overview.md %}) and learn more about the objects you used during this tutorial and the objects you will encounter in the future +- learn how to send [Requests over Messages]({% link _docs_integrate/sending-messages.md %}) with your established Relationship +- dive deeper into creating and sending [Requests over RelationshipTemplates]({% link _docs_integrate/requests-over-templates.md %}) diff --git a/_includes/scenarios/integrate/request-persistent-consent-of-peer.md b/_includes/scenarios/integrate/request-persistent-consent-of-peer.md new file mode 100644 index 000000000..9e2ac496b --- /dev/null +++ b/_includes/scenarios/integrate/request-persistent-consent-of-peer.md @@ -0,0 +1,129 @@ + + +Here is an explanation of how to obtain a person's persistent consent on a particular topic + +To request an accept/reject decision from a peer to a free text, the ConsentRequestItem is used. + +Represents the consent of a person to a specific topic. If you want to obtain a consent, you can send a [`ProposeAttributeRequestItem`]({% link _docs_integrate/requests-and-requestitems.md %}#proposeattributerequestitem) [RelationshipAttribute]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute) with a [Consent]({% link _docs_integrate/attribute-values.md %}#consent) value where the owner is the peer. + + + +{% include properties_list.html %} + + + +## Examples {#consentrequestitem-examples} + +- "I hereby confirm that I have read the privacy terms of this cloud service and agree to them." +- "The provided EULA has been read and agreed to." +- "Yes, I have backed up all of my data of this PC and you can wipe it." +- "I opt in to the newsletter." + +Please do not use the Consent to submit tons of text to the peer Identity. It is meant to be a short consent or summary the user agrees to. Please move longer text to external websites. +The Consent is also not meant for contractual agreements. +{: .notice--info} + +## Check your Requests validity + +At first you should check if your Request is valid. You can do this by calling the `POST /api/v2/Requests/Outgoing/Validate` route on the Sender Connector with the following body. +For the persistent consent request we use the [ProposeAttributeRequestItem]({% link _docs_integrate/requests-and-requestitems.md %}#proposeattributerequestitem). + +```json +{ + "content": { + "@type": "Request", + "items": [ + { + "@type": "ProposeAttributeRequestItem", + "mustBeAccepted": true, + "attribute": { + "@type": "RelationshipAttribute", + "key": "MyConsent", + "owner": "", + "confidentiality": "private", + "value": { + "@type": "Consent", + "consent": "I hereby confirm that I have read the privacy terms of this cloud service and agree to them." + } + }, + "query": { + "@type": "RelationshipAttributeQuery", + "key": "MyConsent", + "owner": "", + "attributeCreationHints": { + "title": "consent to content", + "valueType": "Consent", + "confidentiality": "private" + } + } + } + ] + } +} +``` + +## Create the Request + +To create the Request you have to call the `POST /api/v2/Messages` route on the Sender Connector, with the content property of the payload in the step before. Use the following JSON in the body: + +```jsonc +{ + "recipients": [""], + "content": { + "@type": "Request", + "items": [ + { + "@type": "ProposeAttributeRequestItem", + "mustBeAccepted": true, + "attribute": { + "@type": "RelationshipAttribute", + "key": "MyConsent", + "owner": "", + "confidentiality": "private", + "value": { + "@type": "Consent", + "consent": "I hereby confirm that I have read the privacy terms of this cloud service and agree to them." + } + }, + "query": { + "@type": "RelationshipAttributeQuery", + "key": "MyConsent", + "owner": "", + "attributeCreationHints": { + "title": "consent to content", + "valueType": "Consent", + "confidentiality": "private" + } + } + } + ] + } +} +``` + +Note that the Request is currently in status `Draft`. + +**Example accepted response:** + +```jsonc +"items": [ + { + "@type": "ProposeAttributeAcceptResponseItem", + "attribute": { + "@type": "RelationshipAttribute", + "confidentiality": "private", + "isTechnical": false, + "key": "MyConsent", + "owner": "", + "value": { + "@type": "Consent", + "consent": "I hereby confirm that I have read the privacy terms of this cloud service and agree to them." + } + }, + "attributeId": "ATT...", + "result": "Accepted" + } +], +"requestId": "REQ...", +"result": "Accepted" +``` diff --git a/_includes/scenarios/integrate/requesting-one-time-consents.md b/_includes/scenarios/integrate/requesting-one-time-consents.md new file mode 100644 index 000000000..b5d0c6e8b --- /dev/null +++ b/_includes/scenarios/integrate/requesting-one-time-consents.md @@ -0,0 +1,85 @@ + + +With the ConsentRequest it is possible to request a consent of the peer to an arbitrary text and thus reach agreement on a certain non machine-processable context. + +To request an accept/reject decision from a peer to a free text, the ConsentRequestItem is used. + + + +{% include properties_list.html %} + + + +## Check your Requests validity + +At first you should check if your Request is valid. You can do this by calling the `POST /api/v2/Requests/Outgoing/Validate` route on the Sender Connector with the following body. +For the one-time consent request we use the [ConsentRequestItem]({% link _docs_integrate/requests-and-requestitems.md %}#consentrequestitem). +Even though the `peer` property is optional, it is recommended to specify it whenever possible. This allows additional validation rules to execute. When you are sending a Request over Messages you always know your peer. + +```json +{ + "content": { + "items": [ + { + "@type": "ConsentRequestItem", + "mustBeAccepted": true, + "title": "The Sender is asking for an one time consent", + "consent": "I hereby confirm that I have read the privacy terms of this cloud service and agree to them.", + "link": "privacy.demo" + } + ] + }, + "peer": "" +} +``` + +### Examples {#consentrequestitem-examples} + +- "I hereby confirm the login to the website" +- "I confirm my presence in the course" + +Please do not use the ConsentRequest to submit tons of text to the peer Identity. It is meant to be a short consent or summary the user agrees to. Please move longer text to external websites. +The ConsentRequest is also not meant for contractual agreements. +{: .notice--info} + +## Create the Request + +To create the Request you have to call the `POST /api/v2/Requests/Outgoing` route on the Sender Connector. Use the following JSON in the Request body: + +```jsonc +{ + "content": { + // the content property of the payload in the step before + }, + "peer": "" +} +``` + +Note that the Request is currently in status `Draft`. + +{% include copy-notice description="Save the complete `content` of the response. You will need it in the sending Request step." %} + +**Example response:** + +```jsonc +{ + "id": "REQ...", + "status": "Draft", + // ... + "content": { + "@type": "Request", + "id": "REQ...", + "items": [ + { + "@type": "AuthenticationRequestItem", + "mustBeAccepted": true, + "title": "The Sender is asking for an authentication" + } + ] + } +} +``` + +## Sending Request + +There are 2 ways to send the request to the user. Either when creating a [RelationshipTemplate]({% link _docs_integrate/requests-over-templates.md %}) or with a contact who already has a relationship, via a [message]({% link _docs_integrate/requests-over-messages.md %}). diff --git a/_includes/scenarios/integrate/requests-and-requestitems.md b/_includes/scenarios/integrate/requests-and-requestitems.md new file mode 100644 index 000000000..c33be439a --- /dev/null +++ b/_includes/scenarios/integrate/requests-and-requestitems.md @@ -0,0 +1,370 @@ +All the RequestItems listed below inherit from the [RequestItem]({% link _docs_integrate/data-model-overview.md %}#requestitem) and are therefore sharing its properties. + +## AuthenticationRequestItem + +With this item the sender can request the peer for an authentication in a business context for a certain purpose. The peer can then decide to authenticate or not. This authentication is mostly short-lived and limited in time. + +### Examples {#authenticationrequestitem-examples} + +- Authentication for a login to a website +- Authentication for opening a door + +### Properties {#authenticationrequestitem-properties} + +| Name | Type | Description | +| ------- | ----------------------------- | -------------------------------------------------------------- | +| `@type` | `"AuthenticationRequestItem"` | Specifies the type of the RequestItem for internal processing. | + +### Response Parameters {#authenticationrequestitem-response} + +#### Item Properties {#authenticationrequestitem-response-itemproperties} + +- To accept this RequestItem an [AcceptResponseItem]({% link _docs_integrate/data-model-overview.md %}#acceptresponseitem) will be transferred. +- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/data-model-overview.md %}#rejectresponseitem) will be transferred. +- In case of an error an [ErrorResponseItem]({% link _docs_integrate/data-model-overview.md %}#errorresponseitem) will be transferred. + +#### Parameters {#authenticationrequestitem-response-parameters} + +- To accept this RequestItem you can send `{ "accept": true }` as parameters. +- To reject this RequestItem you can send `{ "accept": false }` as parameters. + +## ConsentRequestItem + +With the ConsentRequestItem it is possible to request a consent of the peer to an arbitrary text and thus reach agreement on a certain non machine-processable context. + +To request an accept/reject decision from a peer to a free text, the ConsentRequestItem is used. + +Please do not use the ConsentRequestItem to submit tons of text to the peer Identity. It is meant to be a short consent or summary the user agrees to. Please move longer text to external websites. +The ConsentRequestItem is also not meant for contractual agreements. +{: .notice--info} + +### Examples {#consentrequestitem-examples} + +- "I hereby confirm that I have read the privacy terms of this cloud service and agree to them." +- "The provided EULA has been read and agreed to." +- "Yes, I have backed up all of my data of this PC and you can wipe it." +- "I opt in to the newsletter." + +### Properties {#consentrequestitem-properties} + +| Name | Type | Description | +| --------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `@type` | `"ConsentRequestItem"` | Specifies the type of the RequestItem for internal processing. | +| `consent` | `string` | The textual consent the user needs to give. This is different to the title and description of the RequestItem, as the consent would be the actual statement the user agrees to. | +| `link` | `string` \| `undefined` | A link to a website which contains more information, like the EULA or privacy terms. | + +### Response Parameters {#consentrequestitem-response} + +#### Item Properties {#consentrequestitem-response-itemproperties} + +- To accept this RequestItem an [AcceptResponseItem]({% link _docs_integrate/data-model-overview.md %}#acceptresponseitem) will be transferred. +- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/data-model-overview.md %}#rejectresponseitem) will be transferred. +- In case of an error an [ErrorResponseItem]({% link _docs_integrate/data-model-overview.md %}#errorresponseitem) will be transferred. + +#### Parameters {#consentrequestitem-response-parameters} + +- To accept this RequestItem you can send `{ "accept": true }` as parameters. +- To reject this RequestItem you can send `{ "accept": false }` as parameters. + +## CreateAttributeRequestItem + +If you want to create Identity- or RelationshipAttributes for the peer, the CreateAttributeRequestItem can be used. Please have a look at the ProposeAttributeRequestItem if the peer should be able to overwrite the Attribute. + +To create an Attribute with a fixed value defined by the sender, an Identity uses the CreateAttributeRequestItem. A fixed value in this case means, that the recipient is not allowed to change the value when accepting the request. + +### Examples {#createattributerequestitem-examples} + +- Share the corporate E-Mail Address of the peer to the peer +- Send a certificate of the peer to the peer, so that the peer is able to easily share it +- Create a RelationshipAttribute for the peer + +### Properties {#createattributerequestitem-properties} + +| Name | Type | Description | +| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `@type` | `"CreateAttributeRequestItem"` | Specifies the type of the RequestItem for internal processing. | +| `attribute` | [`IdentityAttribute`]({% link _docs_integrate/data-model-overview.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute to create for the peer within the Identity of the peer. | + +### Response {#createattributerequestitem-response} + +#### Item Properties {#createattributerequestitem-response-itemproperties} + +- To accept this RequestItem a `CreateAttributeAcceptResponseItem` will be transferred. + + | Name | Type | Description | + | ------------- | ------------------------------------- | -------------------------------- | + | `@type` | `"CreateAttributeAcceptResponseItem"` | The type of the ResponseItem. | + | `attributeId` | `string` | The id of the created Attribute. | + +- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/data-model-overview.md %}#rejectresponseitem) will be transferred. +- In case of an error an [ErrorResponseItem]({% link _docs_integrate/data-model-overview.md %}#errorresponseitem) will be transferred. + +#### Parameters {#createattributerequestitem-response-parameters} + +- To accept this RequestItem you can send `{ "accept": true }` as parameters. +- To reject this RequestItem you can send `{ "accept": false }` as parameters. + +### Combinations and usage scenarios {#createattributerequestitem-combinationsandusagescenarios} + +| Attribute Type | Attribute Owner | Possible? | Automation | Examples/Reason | +| -------------- | --------------- | --------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Identity | Sender | N | `N/A` | Use [ShareAttributeRequestItem](#shareattributerequestitem) instead. | +| Identity | Recipient | Y | `USER_DECISION` | University sends student his certificate (Propose would be inappropriate in this case, because the student should not be able to return his own value) | +| Identity | `` | Y | `USER_DECISION` | An empty owner defaults to an Attribute with owner=``. This is needed for Requests inside of Relationship Templates, since you don’t know the enmeshed Address of your peer before the Relationship is established. | +| Relationship | Sender | Y | `AUTO_ACCEPT` | Company sends new customer his customer number. | +| Relationship | Recipient | Y | `USER_DECISION` | With this combination the **sender asks the recipient for the one-time permission** to write a Relationship Attribute once AND the **sender defined a value** which can either be accepted and stored, or rejected. Thus, the user cannot change the value by itself. | +| Relationship | `` | Y | `USER_DECISION` | An empty owner defaults to an Attribute with owner=``. This is needed for Requests inside of Relationship Templates, since you don’t know the enmeshed Address of your peer before the Relationship is established. | + +## FreeTextRequestItem + +With the FreeTextRequestItem it is possible to send a free text to the peer. The peer itself can accept this with a free text as well. + + + +### Properties {#freetextrequestitem-properties} + +| Name | Type | Description | +| ---------- | ----------------------- | -------------------------------------------------------------- | +| `@type` | `"FreeTextRequestItem"` | Specifies the type of the RequestItem for internal processing. | +| `freeText` | `string` | The free text you want to send to the peer. | + +### Response Parameters {#freetextrequestitem-response} + +#### Item Properties {#freetextrequestitem-response-itemproperties} + +- To accept this RequestItem a `FreeTextAcceptResponseItem` will be transferred. + + | Name | Type | Description | + | ---------- | ------------------------------ | ----------------------------------------------------- | + | `@type` | `"FreeTextAcceptResponseItem"` | The type of the ResponseItem. | + | `freeText` | `string` | The free text that is used to answer the RequestItem. | + +- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/data-model-overview.md %}#rejectresponseitem) will be transferred. +- In case of an error an [ErrorResponseItem]({% link _docs_integrate/data-model-overview.md %}#errorresponseitem) will be transferred. + +#### Parameters {#freetextrequestitem-response-parameters} + +- To accept this RequestItem you can send the following parameters. + + | Name | Type | Description | + | ---------- | -------- | ------------------------------------------- | + | `accept` | `true` | | + | `freeText` | `string` | The free text you want to send to the peer. | + +- To reject this RequestItem you can send `{ "accept": false }` as parameters. + +## ProposeAttributeRequestItem + +The ProposeAttributeRequestItem is a combination of [ReadAttributeRequestItem](#readattributerequestitem) and [CreateAttributeRequestItem](#createattributerequestitem). The sender would like to receive a correct Attribute from the peer, thinks it has a possible value but the peer might overrule this value with an existing or new one. + +To create an Attribute with a value proposed by the sender, an Identity uses the ProposeAttributeRequestItem. A proposed value in this case means, that the recipient is allowed to change the value if accepting the request. + +### Examples {#proposeattributerequestitem-examples} + +- Onboard an existing customer to enmeshed and propose the known private Attributes, like its name or address. +- Ask the user if a newsletter would be of interest and propose the opt-in. This could be stored as a RelationshipAttribute with owner = recipient and could then be changed by the recipient at will. + +### Properties {#proposeattributerequestitem-properties} + +| Name | Type | Description | +| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | +| `@type` | `"ProposeAttributeRequestItem"` | Specifies the type of the RequestItem for internal processing. | +| `attribute` | [`IdentityAttribute`]({% link _docs_integrate/data-model-overview.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute to propose for the peer as the queried Attribute. | +| `query` | [`IdentityAttributeQuery`]({% link _docs_integrate/data-model-overview.md %}#identityattributequery) \| [`RelationshipAttributeQuery`]({% link _docs_integrate/data-model-overview.md %}#relationshipattributequery) \| [`ThirdPartyRelationshipAttributeQuery`]({% link _docs_integrate/data-model-overview.md %}#thirdpartyrelationshipattributequery) | The structured query of the Attribute the sender would like to receive. | + +### Response {#proposeattributerequestitem-response} + +#### Item Properties {#proposeattributerequestitem-response-itemproperties} + +- To accept this RequestItem a `ProposeAttributeAcceptResponseItem` will be transferred. + + | Name | Type | Description | + | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | `@type` | `"ProposeAttributeAcceptResponseItem"` | The type of the ResponseItem. | + | `attributeId` | `string` | The id of the created Attribute. | + | `attribute` | [`IdentityAttribute`]({% link _docs_integrate/data-model-overview.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute to propose for the peer as the queried Attribute.
                      The owner of the Attribute which is proposed can only be the recipient Identity. | + +- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/data-model-overview.md %}#rejectresponseitem) will be transferred. +- In case of an error an [ErrorResponseItem]({% link _docs_integrate/data-model-overview.md %}#errorresponseitem) will be transferred. + +#### Parameters {#proposeattributerequestitem-response-parameters} + +- To accept this RequestItem you can send the following parameters. + + - If you want to create a new Attribute. + + | Name | Type | Description | + | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- | + | `attribute` | [`IdentityAttribute`]({% link _docs_integrate/data-model-overview.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute that shall be created. | + + - If you want to use the proposed Attribute. + + | Name | Type | Description | + | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | + | `attribute` | [`IdentityAttribute`]({% link _docs_integrate/data-model-overview.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute that was provided in the RequestItem. | + + - If you want to use an existing Attribute. + + | Name | Type | Description | + | --------------------- | -------- | -------------------------------- | + | `existingAttributeId` | `string` | The id of the Attribute to send. | + +- To reject this RequestItem you can send `{ "accept": false }` as parameters. + +### Combinations and usage scenarios {#proposeattributerequestitem-combinationsandusagescenarios} + +| Attribute Type | Attribute Owner | Possible? | Automation | Examples/Reason | +| -------------- | --------------- | --------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Identity | Sender | N | `N/A` | It makes no sense to propose own Attributes, use [ShareAttributeRequestItem](#shareattributerequestitem) instead. | +| Identity | Recipient | Y | `USER_DECISION` | Company sends name and address to new customer during its onboarding process. | +| Relationship | Sender | Y | `USER_DECISION` | With this combination the **sender gives the recipient the one-time permission** to write a Relationship Attribute once AND the **sender proposes a value** which might make sense as a default.
                      Example: Electricity provider asks new customer for the electricity meter number and proposes a known number | +| Relationship | Recipient | Y | `USER_DECISION` | With this combination the **sender asks the recipient for the one-time permission** to write a Relationship Attribute once AND the **sender proposes a value** which might make sense as a default.
                      Example: Asking for a newsletter subscription | + +## ReadAttributeRequestItem + +If you want to query an Identity's Attributes this is done with the ReadAttributeRequestItem. + +To query Attributes which are not known to the sender, an Identity uses the ReadAttributeRequestItem. + +### Examples {#readattributerequestitem-examples} + +- Optional query of the BirthDate, to congratulate on birthdays +- Required query of the Age, to check if alcohol may be bought +- Required query of the StreetAddress, to send an invoice to the recipient + +### Properties {#readattributerequestitem-properties} + +| Name | Type | Description | +| ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `@type` | `"ReadAttributeRequestItem"` | Specifies the type of the RequestItem for internal processing. | +| `query` | [`IdentityAttributeQuery`]({% link _docs_integrate/data-model-overview.md %}#identityattributequery) \| [`RelationshipAttributeQuery`]({% link _docs_integrate/data-model-overview.md %}#relationshipattributequery) \| [`ThirdPartyRelationshipAttributeQuery`]({% link _docs_integrate/data-model-overview.md %}#thirdpartyrelationshipattributequery) | The structured query of the Attribute the sender would like to receive. | + +### Response {#readattributerequestitem-response} + +#### Item Properties {#readattributerequestitem-response-itemproperties} + +- To accept this RequestItem a `ReadAttributeAcceptResponseItem` will be transferred. + + | Name | Type | Description | + | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- | + | `@type` | `"ReadAttributeAcceptResponseItem"` | The type of the ResponseItem. | + | `attributeId` | `string` | The id of the returned Attribute. | + | `attribute` | [`IdentityAttribute`]({% link _docs_integrate/data-model-overview.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute that will be shared to the peer. | + +- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/data-model-overview.md %}#rejectresponseitem) will be transferred. +- In case of an error an [ErrorResponseItem]({% link _docs_integrate/data-model-overview.md %}#errorresponseitem) will be transferred. + +#### Parameters {#readattributerequestitem-response-parameters} + +- To accept this RequestItem you can send the following parameters. + + - If you want to use an existing Attribute. + + | Name | Type | Description | + | --------------------- | -------- | -------------------------------- | + | `existingAttributeId` | `string` | The id of the Attribute to send. | + + - If you want to create a new Attribute. + + | Name | Type | Description | + | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- | + | `attribute` | [`IdentityAttribute`]({% link _docs_integrate/data-model-overview.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute that shall be created. | + +- To reject this RequestItem you can send `{ "accept": false }` as parameters. + +### Combinations and usage scenarios {#readattributerequestitem-combinationsandusagescenarios} + +| Attribute Type | Attribute Owner | Third Party | Possible? | Automation | Examples/Reason | +| -------------- | --------------- | ----------- | --------- | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Identity | Sender | | N | `N/A` | It makes no sense to read own IdentityAttributes. | +| Identity | Recipient | | Y | `USER_DECISION` | Company asks customer for its delivery address | +| Relationship | Sender | | Y | `USER_DECISION` | With this combination the **sender gives the recipient the one-time permission** to write a Relationship Attribute once
                      Example: Electricity provider asks new customers for electricity meter number | +| Relationship | Recipient | | Y | `USER_DECISION` | With this combination the **sender asks the recipient for the one-time permission** to write a Relationship Attribute
                      Example: Company asks new customer to subscribe to the newsletter and proposes the subscription as default once | +| Relationship | Recipient | Third Party | Y | `USER DECISION / NOT ALLOWED` - depending on confidentiality | With this combination the **sender requests a Relationship Attribute from a Relationship between the recipient and a third party. The Attribute must be owned by the recipient**
                      Example: A Social Network asks for Facebook privacy settings of a user to get senseful defaults of its own privacy settings | +| Relationship | Third Party | Third Party | Y | `USER DECISION / NOT ALLOWED` - depending on confidentiality | With this combination the **sender requests a Relationship Attribute from a Relationship between the recipient and a third party which is owned by the third party**
                      Example: An online shop asks for the Payback Customer Id of a user to book the order on his account | + + + +## ShareAttributeRequestItem + +If you want to share the own DisplayName and possibly other Attributes this is done with the ShareAttributeRequestItem. + +To share own IdentityAttributes (owner = self) an Identity uses the ShareAttributeRequestItem. The Identity needs to create the IdentityAttribute separately before the Attribute can be shared. + +### Examples {#shareattributerequestitem-examples} + +- Share own DisplayName. +- Share own Address. +- Share customer number of company A with company B. + +### Properties {#shareattributerequestitem-properties} + +| Name | Type | Description | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `@type` | `"ShareAttributeRequestItem"` | Specifies the type of the RequestItem for internal processing. | +| `attribute` | [`IdentityAttribute`]({% link _docs_integrate/data-model-overview.md %}#identityattribute) \| [`RelationshipAttribute`]({% link _docs_integrate/data-model-overview.md %}#relationshipattribute) | The IdentityAttribute or RelationshipAttribute to share. This is not the LocalAttribute but the content data structure of the Attribute.
                      The owner of the Attribute which should be shared can only be the sender Identity. | +| `sourceAttributeId` | `string` | The id of the LocalAttribute which is the source of the shared Attribute. This will be used later to reference the sourceAttribute from its shared copy. | + +### Response {#shareattributerequestitem-response} + +#### Item Properties {#shareattributerequestitem-response-itemproperties} + +- To accept this RequestItem a `RegisterAttributeListenerAcceptResponseItem` will be transferred. + + | Name | Type | Description | + | ------------- | ------------------------------------ | -------------------------------- | + | `@type` | `"ShareAttributeAcceptResponseItem"` | The type of the ResponseItem. | + | `attributeId` | `string` | The id of the created Attribute. | + +- To reject this RequestItem a [RejectResponseItem]({% link _docs_integrate/data-model-overview.md %}#rejectresponseitem) will be transferred. +- In case of an error an [ErrorResponseItem]({% link _docs_integrate/data-model-overview.md %}#errorresponseitem) will be transferred. + +#### Parameters {#shareattributerequestitem-response-parameters} + +- To accept this RequestItem you can send `{ "accept": true }` as parameters. +- To reject this RequestItem you can send `{ "accept": false }` as parameters. + +### Combinations and usage scenarios {#shareattributerequestitem-combinationsandusagescenarios} + +| Attribute Type | Attribute Owner | Possible? | Automation | Examples/Reason | +| -------------- | --------------- | --------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Identity | Sender | Y | `AUTO ACCEPT` | Company sends new customer the address of the company | +| Identity | Recipient | N | `N/A` | It makes no sense to share the Attribute to the recipient, because he already owns it. | +| Identity | Third Party | N | `N/A` | You cannot share an Attribute of which you are not the owner. | +| Identity | `` | Y | `AUTO ACCEPT` | An empty owner defaults to an Attribute with owner=``. | +| Relationship | Sender | Y | `USER DECISION` / `NOT ALLOWED` (depending on confidentiality) | A user can share own RelationshipAttributes of any Relationship to any other Relationship (if the confidentiality of the RelationshipAttribute is protected or public).
                      Example: Share Customer ID from Company A with Company B (User is owner of RelationshipAttribute) | +| Relationship | Recipient | N | `N/A` | It makes no sense to share the Attribute to the recipient, because he already owns it. | +| Relationship | Third Party | Y | `USER DECISION` / `NOT ALLOWED` (depending on confidentiality) | A user can share RelationshipAttributes of any Relationship to any other Relationship (if the confidentiality of the RelationshipAttribute is protected or public).
                      Example: Share Customer ID from Company A with Company B (Company A is owner of RelationshipAttribute), e.g. Payback number | +| Relationship | `` | Y | `AUTO ACCEPT` | An empty owner defaults to an Attribute with owner=``. | diff --git a/_includes/scenarios/integrate/requests-over-messages.md b/_includes/scenarios/integrate/requests-over-messages.md new file mode 100644 index 000000000..d58e020ef --- /dev/null +++ b/_includes/scenarios/integrate/requests-over-messages.md @@ -0,0 +1,152 @@ + + +This guide explains how to send and receive a Request over enmeshed Messages using two Connectors, the first of which sends a Request to the second, and the second accepts or rejects the Request. It provides step-by-step instructions for validating the Request, creating and sending the Request, and accepting or rejecting the Request. + + + +{% include properties_list.html %} + +This guide assumes that you already have an active Relationship between two Connectors. If you don't, you should follow the [Requests over Templates]({% link _docs_integrate/requests-over-templates.md %}) guide first. If you created a Relationship during the [Connector Tutorial]({% link _docs_integrate/integration-example.md %}) this will also work. + +In this guide, the first Connector will be called Sender and the second Connector will be called Recipient. The Sender will send a Request to the Recipient. For the next steps you will need the enmeshed Address of the Recipient. You can find it out by calling the `GET /api/v2/Relationships` route on the Sender Connector. + +```jsonc +[ + // ... + { + "id": "REL..", + "status": "Active", + // ... + "peer": "id1..." + } +] +``` + +{% include copy-notice description="Look for the correct Relationship and then take its `peer` property. Save it for later." %} + +## Check your Requests validity + +At first you should check if your Request is valid. You can do this by calling the `POST /api/v2/Requests/Outgoing/Validate` route on the Sender Connector with the following body. +For simplicity the Request inside the Template only contains an AuthenticationRequestItem, but you can use any [RequestItems]({% link _docs_integrate/requests-and-requestitems.md %}) you want. + +Even though the `peer` property is optional, it is recommended to specify it whenever possible. This allows additional validation rules to execute. When you are sending a Request over Messages you always know your peer. + +```json +{ + "content": { + "items": [ + { + "@type": "AuthenticationRequestItem", + "mustBeAccepted": true, + "title": "The Sender is asking for an authentication" + } + ] + }, + "peer": "" +} +``` + +## Create the Request + +To create the Request you have to call the `POST /api/v2/Requests/Outgoing` route on the Sender Connector. Use the following JSON in the Request body: + +```jsonc +{ + "content": { + // the content property of the payload in the step before + }, + "peer": "" +} +``` + +Note that the Request is currently in status `Draft`. + +{% include copy-notice description="Save the complete `content` of the response. You will need it in the next step." %} + +**Example response:** + +```jsonc +{ + "id": "REQ...", + "status": "Draft", + // ... + "content": { + "@type": "Request", + "id": "REQ...", + "items": [ + { + "@type": "AuthenticationRequestItem", + "mustBeAccepted": true, + "title": "The Sender is asking for an authentication" + } + ] + } +} +``` + +## Send the Request + +Now you have to send the Request to the Recipient. You can do so by calling the `POST /api/v2/Messages` route on the Sender Connector. Use the following JSON in the Request body: + +```jsonc +{ + "recipients": [""], + "content": { + // the content you copied in the step before + } +} +``` + +This is where the automation of the enmeshed Runtime steps in and moves the Request from status `Draft` to status `Open`. You can observe this behaviour by querying the Request via `GET /api/v2/Requests/Outgoing/{id}` on the Sender Connector. + +## Fetch the Request + +In order to fetch the Message with the Request, you have to synchronize the Recipient Connector (`GET /api/v2/Account/Sync`). + +The enmeshed Runtime will read the Message and create a new incoming Request. You can observe this by long polling the incoming Requests or by waiting for the `consumption.incomingRequestReceived` event. + +The long polling is done by calling the `GET /api/v2/Requests/Incoming` route. You can use the query params `source.reference=` and `status=ManualDecisionRequired` to filter for Requests that belong to the Message that contained the Request. + +For more information about the events you can head over to the [Connector Modules site]({% link _docs_operate/modules.md %}) and read about the [AMQP Publisher module]({% link _docs_operate/modules.md %}#amqppublisher) and the [WebhooksV2 module]({% link _docs_operate/modules.md %}#webhooksv2) that are propagating events. + +{% include copy-notice description="After you received the Request, save its `id` for the next step." %} + +## Answer the Request + +### Accept + +If you want to accept the Request you can do so by calling the `POST /api/v2/Requests/Incoming/{id}/Accept` route. You can use the `id` you saved in the previous step. In the payload you have to accept at least all RequestItems where the `mustBeAccepted` property is set to `true`. In case of the example Request the payload is the following: + +```jsonc +{ + "items": [ + { + "accept": true + } + ] +} +``` + +### Reject + +If you want to reject the Request you can do so by calling the `POST /api/v2/Requests/Incoming/{id}/Reject` route. You can use the `id` you saved in the previous step. In the payload you have to reject all RequestItems. In case of the example Request the payload is the following: + +```jsonc +{ + "items": [ + { + "accept": false + } + ] +} +``` + +### Runtime automation + +No matter if you accepted or rejected the Request: the response is similar. You can see that the Request moved to status `Decided`. This is where the enmeshed Runtime steps in and handles the Request based on you decision. It will move the Request to status `Completed` and send the Response to the Sender via a Message. This behavior can be observed by querying the Request again after a few seconds (`GET /api/v2/Requests/Incoming/{id}`). + +## Sync the Response + +The Sender will receive the Response as a Message. Therefore you have to synchronize the Sender Connector (`GET /api/v2/Account/Sync`). + +After a few seconds the Request has moved to status `Completed` and the Response is available in the `response` property of the Request. You can observe this by querying the Request via `GET /api/v2/Requests/Outgoing/{id}` on the Sender Connector. diff --git a/_includes/scenarios/integrate/requests-over-templates.md b/_includes/scenarios/integrate/requests-over-templates.md new file mode 100644 index 000000000..2ed6344fe --- /dev/null +++ b/_includes/scenarios/integrate/requests-over-templates.md @@ -0,0 +1,169 @@ + + +This guide will explain the end to end flow of sharing and answering a [Request]({% link _docs_integrate/data-model-overview.md %}#request) over a Template. This flow usually happens between the App and a Connector, but for simplicity and more transparency we will use two Connectors. Therefore you have to start two Connectors that don't have a Relationship yet. + +You can use the [Connector Installation Guide]({% link _docs_operate/setup-with-docker-compose.md %}) if you need help for the setup the Connectors. + + + +{% include properties_list.html %} + +On the first Connector you will create a Template. This Connector will be called Templator in the in the following steps. The second Connector is called Requestor, because it will create the Relationship and therefore it creates the `RelationshipCreationChangeRequest`. + +## Check your Request's validity + +At first you should check if your Request is valid. You can do this by calling the `POST /api/v2/Requests/Outgoing/Validate` route on the Templator Connector with the following body. +For simplicity the Request inside the Template only contains an AuthenticationRequestItem, but you can use any [RequestItems]({% link _docs_integrate/requests-and-requestitems.md %}) you want. + +```json +{ + "content": { + "items": [ + { + "@type": "AuthenticationRequestItem", + "mustBeAccepted": true, + "title": "The templator is asking for an authentication" + } + ] + } +} +``` + +Even though the Requests are validated during the RelationshipTemplate creation you should not skip this step as it gives you additional information in case of validation errors. +{: .notice--info} + +## Create the Template + +Create the Relationship Template on the Templator's Connector. You can do so by calling the `POST /api/v2/RelationshipTemplates/Own` route. Use the following JSON in the Request body: + +```jsonc +{ + "maxNumberOfAllocations": 1, + "expiresAt": "2023-06-01T00:00:00.000Z", + "content": { + "@type": "RelationshipTemplateContent", + "title": "Connector Demo Contact", + "onNewRelationship": { + // the content property of the payload in the step before + } + } +} +``` + +You will receive a response with the complete RelationshipTemplate. + +{% include copy-notice description="Save the `truncatedReference` and the `id` of the RelationshipTemplate. You will need them in the next steps." %} + +```jsonc +{ + "id": "RLT..", + // ... + "truncatedReference": "UkxU..." +} +``` + +## Load the Template and get the Request + +Now you have to load the Template on the Requestor Connector. You can do so by calling the `POST /api/v2/RelationshipTemplates/Peer` route with the following content. Use the `truncatedReference` you copied before: + +```jsonc +{ + "reference": "UkxU..." +} +``` + +If no Relationship exists, this will trigger a process in the enmeshed Runtime. It will create a new incoming Request on which we will work in the next step. You can observe this by long polling the incoming Requests or by waiting for the `consumption.incomingRequestReceived` event. + +The long polling is done by calling the `GET /api/v2/Requests/Incoming` route. You can use the query params `source.reference=` and `status=ManualDecisionRequired` to filter for Requests that belong to the Template you are currently working on. + +For more information about the events you can head over to the [Connector Modules site]({% link _docs_operate/modules.md %}) and read about the [AMQP Publisher module]({% link _docs_operate/modules.md %}#amqppublisher) and the [WebhooksV2 module]({% link _docs_operate/modules.md %}#webhooksv2) that are propagating events. + +{% include copy-notice description="After you received the Request, save its `id` for the next step." %} + +## Answer the Request + +The rejection is explained before the acceptance because you can re-do it as often if you want. If you accept the Request a RelationshipRequest will be sent and no new Request will be created until the RelationshipRequest is answered. If the RelationshipRequest is accepted the enmeshed Runtime will recognize the existing Relationship and will also not create a new Request. + +So if you want to test the full flow, you should first reject the Request. After that you can create a new one, which you can accept. + +If there is no open RelationshipRequest or existing Relationship, you can trigger the creation of a new Request by [loading the Template again](#load-the-template-and-get-the-request) with the same truncated reference. + +### Reject + +If you want to reject the Request you can do so by calling the `POST /api/v2/Requests/Incoming/{id}/Reject` route. You can use the `id` you saved in the previous step. In the payload you have to reject all RequestItems. In case of the example Request the payload is the following: + +```jsonc +{ + "items": [ + { + "accept": false + } + ] +} +``` + +In the response you can see the Request has moved to status `Decided`. This is where the enmeshed Runtime steps in and handles the Request based on you decision. Because you rejected the Request, the enmeshed Runtime will only move the Request to status completed. This behavior can be observed by querying the Request again after a few seconds (`GET /api/v2/Requests/Incoming/{id}`). + +### Accept + +If you tried out the Rejection before this step make sure to create a Request by [loading the Template again](#load-the-template-and-get-the-request) with the same truncated reference. + +If you want to accept the Request you can do so by calling the `POST /api/v2/Requests/Incoming/{id}/Accept` route. You can use the `id` you saved in the [template loading](#load-the-template-and-get-the-request) step. In the payload you have to accept at least all RequestItems where the `mustBeAccepted` property is set to `true`. In case of the example Request the payload is the following: + +```jsonc +{ + "items": [ + { + "accept": true + } + ] +} +``` + +In the response you can see the Request has moved to status `Decided`. This is where the enmeshed Runtime steps in and handles the Request based on you decision. Because you accepted the Request, the enmeshed Runtime will send your Response to the Templator by creating a Relationship. This behavior can be observed by querying the Request again after a few seconds (`GET /api/v2/Requests/Incoming/{id}`). When the Request is in status `Completed` you can query the created Relationship (`GET /api/v2/Relationships`, query parameter `template.id=`). + +If you synchronize the Templator Connector (`POST /api/v2/Account/Sync`) you will see a new Relationship in the response. The Relationship looks as follows: + +```jsonc +{ + "id": "REL...", + "template": { + // ... + }, + "status": "Active", + "peer": "id1...", + // ... + "changes": [ + { + "id": "RCH...", + "request": { + "createdBy": "id1...", + "createdByDevice": "DVC...", + "createdAt": "2022-11-04T13:31:01.360Z", + "content": { + "@type": "RelationshipCreationChangeRequestContent", + "response": { + "items": [ + { + "@type": "AcceptResponseItem", + "result": "Accepted" + } + ], + "requestId": "REQ...", + "result": "Accepted" + } + } + }, + "status": "Accepted", + "type": "Creation" + // ... + } + ] +} +``` + +Pay particular attention to the `changes.0.request.content` property that contains the Response that was generated by the enmeshed Runtime. + +Now you can accept the Relationship on the Templator Connector by calling the `PUT /api/v2/Relationships/{relationshipId}/Changes/{changeId}/Accept` route. + +When you synchronize the Requestor Connector (`POST /api/v2/Account/Sync`) you can see that the Relationship is now in status `Active` on both Connectors. diff --git a/_includes/scenarios/scenario-sc58.md b/_includes/scenarios/integrate/sending-messages.md similarity index 100% rename from _includes/scenarios/scenario-sc58.md rename to _includes/scenarios/integrate/sending-messages.md diff --git a/_includes/scenarios/integrate/support.md b/_includes/scenarios/integrate/support.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/scenarios/integrate/use-cases.md b/_includes/scenarios/integrate/use-cases.md new file mode 100644 index 000000000..6ebe8bf79 --- /dev/null +++ b/_includes/scenarios/integrate/use-cases.md @@ -0,0 +1,197 @@ + + + + + +{% assign use-cases = site.docs_use-cases | where: "type", "use-case" %} + + + + + + + + + + {% for use-case in use-cases%} + + + + + + + + + {% endfor %} + +
                      Title +
                      +
                      Layer ⌄
                      +
                        +
                        +
                        +
                        +
                        Actor ⌄
                        +
                          +
                        • +
                        +
                        +
                        +
                        +
                        Category ⌄
                        +
                          +
                          +
                          +
                          +
                          Component ⌄
                          +
                            +
                            +
                            +
                            +
                            Status ⌄
                            +
                              +
                              +
                              + {{ use-case.title }} + {{ use-case.properties | map:"layer" }}{{ use-case.properties | map:"actor" }}{{ use-case.properties | map:"tech category" }}{{ use-case.properties | map:"component" }}{{ use-case.properties | map:"status" }}
                              + + diff --git a/_includes/scenarios/integrate/working-with-the-connector-sdks.md b/_includes/scenarios/integrate/working-with-the-connector-sdks.md new file mode 100644 index 000000000..d65a3091b --- /dev/null +++ b/_includes/scenarios/integrate/working-with-the-connector-sdks.md @@ -0,0 +1,39 @@ +## TypeScript SDK + +There is an SDK written in TypeScript you can use to communicate with your Connector from your TypeScript/JavaScript application. It is avaliable on [npmjs](https://www.npmjs.com/package/@nmshd/connector-sdk). + +### Installation + +```bash +npm i @nmshd/connector-sdk +``` + +### Usage + +1. Initialize the `ConnectorClient` + + ```ts + const connectorClient = ConnectorClient.create({ + baseUrl: "https://", + apiKey: "" + }); + ``` + +2. Start using the client + + ```ts + const FILE_PATH = "path-to-file"; + const uploadOwnFileResponse = await client.files.uploadOwnFile({ + title: "My awesome file", + description: "Test file", + expiresAt: "2022-01-01T00:00:00Z", + file: await fs.promises.readFile(FILE_PATH), + filename: "my-awesome-file.txt" + }); + + if (uploadOwnFileResponse.isSuccess) { + console.log(uploadOwnFileResponse.result); + } else { + console.log(uploadOwnFileResponse.error); + } + ``` diff --git a/_includes/scenarios/operate/configuration.md b/_includes/scenarios/operate/configuration.md new file mode 100644 index 000000000..63f4291da --- /dev/null +++ b/_includes/scenarios/operate/configuration.md @@ -0,0 +1,411 @@ +## Mounting a config file + +1. Create a config file in JSON format in a folder of your choice. +2. Fill the config file with your desired configuration (it's sufficient to add values you want to change; the Connector will merge your config file with the default configuration) Example: + + ```jsonc + { + "infrastructure": { + "httpServer": { + "enabled": true, + "apiKey": "an-api-key" + } + } + } + ``` + +3. Mount the created config file into the Docker container (e.g. to `/config.json`). See the official [documentation](https://docs.docker.com/storage/bind-mounts/) for more information on how to mount files into a Docker container. This is also possible using [docker compose](https://docs.docker.com/compose/compose-file/compose-file-v3/#volumes). +4. Set the environment variable `CUSTOM_CONFIG_LOCATION` to the path you mounted your config file to (e.g. `CUSTOM_CONFIG_LOCATION="/config.json"`). + +There is also an [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json) available. It sets some default values, please only use the fields you require + +## Environment variables + +The configuration can also be done using environment variables. This feature is included in the Connector since version `2.2.1`. + +### Parsing rules + +1. Nested fields can be represented using a colon (`:`) as a separator. + + The `:` separator doesn't work with environment variable hierarchical keys on all platforms. The double underscore (`__`) is supported on all platforms (e.g. bash does not support the `:` separator but it supports `__` ). The Connector will therefore convert `__` to `:` so you can use it on that systems. + {: .notice--warning} + +2. The parameter casing must be the same as the config file casing. +3. The strings "true" and "false" are converted to the respective boolean values. +4. Number strings (`"1"` / `"1.1"`) will be converted to the respective number types. +5. Complex structures (arrays, objects) are not supported. (=> `modules:aModule:aKey='{"a": "x", "b": "y"}'` or `modules:aModule:aKey='["a", "b"]'` is not valid) + +### Example + +You want to configure the following values: + +```jsonc +{ + "infrastructure": { + "httpServer": { + "enabled": true, + "port": 8080, + "apiKey": "an-api-key" + } + } +} +``` + +- The first value can be configured using the variable `infrastructure:httpServer:enabled="true"`. Note that the value is represented as a string in the environment variable and the Connector will rewrite it to its boolean representation. +- The second value can be configured using the variable `infrastructure:httpServer:port="8080"`. Note that the value is represented as a string in the environment variable and the Connector will rewrite it to its number representation. +- The third value can be configured using the variable `infrastructure:httpServer:apiKey="an-api-key"`. + +## Configuration options + +The Connector provides the following configuration parameters: + +```jsonc +{ + "debug": false, + "transportLibrary": { + "baseUrl": "https://prod.enmeshed.eu", + "platformClientId": "CLIENT_ID", + "platformClientSecret": "CLIENT_SECRET" + }, + "database": { + "connectionString": "mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]", + "dbName": "a-db-name" + }, + "infrastructure": { ... }, + "modules": { ... } +} +``` + +You can validate the config using our [schema file](https://raw.githubusercontent.com/nmshd/cns-connector/main/config.schema.json). This is possible for example with [VSCode](https://code.visualstudio.com/docs/languages/json#_json-schemas-and-settings) or online tools like [jsonschemavalidator.net](https://www.jsonschemavalidator.net). + +### debug `availbable since version 3.3.0` {#debug} + +⚠️ Do not turn on debug mode in production environments. +{: .notice--danger} + +The debug flag configures if the Connector is set to **production** or **debug** mode. Defaults to `false`. Can also be configured using the environment variable `DEBUG`. + +### transportLibrary + +- **baseUrl** `default: "https://prod.enmeshed.eu"` + + The base url is used to communicate with the enmeshed platform. It can be changed to use a custom enmeshed Backbone. + +- **platformClientId** `required` + + The client id is required to communicate with the enmeshed platform. It can be acquired from the [enmeshed Support]({% link _docs_operate/setup-with-docker-compose.md %}#support). + +- **platformClientSecret** `required` + + The client secret is required to communicate with the enmeshed platform. It can be acquired from the [enmeshed Support]({% link _docs_operate/setup-with-docker-compose.md %}#support). + +### database + +- **connectionString** `required` + + At this point the connection to the database can be configured. The connection string must follow the MongoDB [Connection String URI Format](https://docs.mongodb.com/manual/reference/connection-string/). + +- **dbName** `default: "default"` + + The `dbName` string is used as the name of the MongoDB database, prefixed with `acc-`. You can use any name you like, but keep in mind that changing it later will NOT rename the database. Instead a new database will be created, together with a new enmeshed identity. Even though the old database will still exist, the Connector will not be able to access the data until you change the `dbName` back to its original value. + + If you would like to use multiple Connectors with distinct identities (one identity per Connector) running on the same database, you have to specify a unique `dbName` for each of them. + + **Note:** If you are using the Connector in combintation with a FerretDB, you have to pay attention to the database name restrictions specified in the [FerretDB documentation](https://docs.ferretdb.io/diff/). + {: .notice--warning} + +### infrastructure + +Each infrastructure can be enabled or disabled by passing true / false to `enabled`. + +#### httpServer + +The HTTP server is the base for the `coreHttpApi` Module. It opens an express HTTP server where Modules can register endpoints. + +**Sample Configuration:** + +```jsonc +{ + // ... + + "infrastructure": { + "httpServer": { + "enabled": true, + "cors": { + "origin": false + }, + "apiKey": "an-api-key" + } + } +} +``` + +- **enabled** `default: true` + + Enable or disable the HTTP server. + +- **cors** `default: { "origin": false }` + + configure the CORS middleware. Valid options can be found [here](https://github.com/expressjs/cors#configuration-options). + +- **apiKey** `required` + + Define the API-Key the Connector should use to authenticate requests. + + The API-Key can be chosen arbitrarily and has to be sent with every request in the `X-API-KEY` HTTP-Header. + + There are no limitations regarding the allowed characters. We recommend using an API-Key that is at least 20 characters long. + + The API-Key protects your Connector from unauthorized access and should therefore be kept secret. + +- **helmetOptions** `default: depending on the connector mode` + + Configure the [helmet](https://helmetjs.github.io/) middleware. + + Defaults to `{}` in `production` mode. In `debug` mode the following options are used: + + ```json + { + "contentSecurityPolicy": { + "directives": { + "defaultSrc": [], + "scriptSrc": ["'self'"], + "styleSrc": ["'self'", "'unsafe-inline'", "https://fonts.googleapis.com"], + "imgSrc": ["'self'", "https://enmeshed.eu", "data:"], + "connectSrc": ["'self'"], + "upgradeInsecureRequests": null + } + } + } + ``` + +### modules + +Every Module can be enabled or disabled by passing true / false to `enabled`. Read more about the Module by clicking on the icon in each title. + +#### amqpPublisher {#amqppublisher} + +**Sample Configuration:** + +```jsonc +{ + // ... + + "modules": { + "amqpPublisher": { + "enabled": false, + "url": "amqp://example.com:5672", + "exchange": "myExchange" + } + } +} +``` + +- **enabled** `default: false` + + Enable or disable the AMQP Publisher Module. + +- **url** `required` + + The URL of the AMQP server. + +- **exchange** `default: ""` + + The name of the AMQP exchange to publish to. + +#### autoAcceptRelationshipCreationChanges {#autoacceptrelationshipcreationchanges} + +It is not recommended to use this Module for production scenarios. +{: .notice--danger} + +**Sample Configuration:** + +```jsonc +{ + // ... + + "modules": { + "autoAcceptRelationshipCreationChanges": { + "enabled": false, + "responseContent": {} + } + } +} +``` + +- **enabled** `default: false` + + Enable or disable the autoAcceptRelationshipCreationChanges Module. + +- **responseContent** `default: {}` + + The content that is used to accept the incoming Relationship Request. + +#### coreHttpApi {#corehttpapi} + +**Sample Configuration:** + +```jsonc +{ + // ... + + "modules": { + "coreHttpApi": { + "enabled": true, + "docs": { + "enabled": false, + "rapidoc": { + "persistAuth": false + } + } + } + } +} +``` + +- **enabled** `default: true` + + Enable or disable the coreHttpApi Module. + +- **docs:enabled** `default: false` + + It is not possible to enable the docs in [production mode](#debug). + {: .notice--info} + + Enable / disable the `/docs/json` and `/docs/yaml` routes and the rendered swagger / rapidoc documentations. + +- **docs:rapidoc:persistAuth** `default: false` + + Authentication persistence can be a security risk. Use it with caution. + {: .notice--danger} + + If set to `true` rapidoc persists the API Key in the local storage of the browser. + +#### sync {#sync} + +**Sample Configuration:** + +```jsonc +{ + // ... + + "modules": { + "sync": { + "enabled": false, + "interval": 60 + } + } +} +``` + +- **enabled** `default: false` + + Enable or disable the sync Module. + +- **interval** `default: 60` + + The interval in seconds at which the sync Module will fetch changes from the Backbone. + +#### webhooksV2 {#webhooksv2} + +**Sample Configuration:** + +```jsonc +{ + // ... + + "modules": { + "webhooksV2": { + "enabled": false, + "targets": {}, + "webhooks": [] + } + } +} +``` + +- **enabled** `default: false` + + Enable or disable the webhooksV2 Module. + +- **targets** `default: {}` + + Here you can predefine targets so you can reuse them for multiple webhooks. + + A target consists of a URL as well as optional arbitrary headers, which the Connector should send as part of the request. Optionally, your URL can contain the placeholder {% raw %}`{{trigger}}`{% endraw %}, which at runtime will be replaced with the event name that triggered the webhook (e.g. transport.messageReceived). This way, you can reuse the same target for multiple webhooks and still have different URLs for different events. See the code below for an example. + + The server under the URL must respond to the request with a status code between 200 and 299. Otherwise the Connector will log a warning. + +
                              + + **Example** + + ```jsonc + { + // a target with headers + "target1": { + "url": "https://example.com/enmeshed/webhook2", + + // the following headers will be sent as part of the webhook + "headers": { + "a-header": "a-value", + "another-header": "another-value" + } + }, + + // a target without headers + "target2": { + "url": "https://example.com/enmeshed/webhook" + }, + + // a target with the {% raw %}{{trigger}}{% endraw %} placeholder as part of the URL + "target3": { + "url": "https://example.com/enmeshed/webhook/{% raw %}{{trigger}}{% endraw %}" + } + } + ``` + +- **webhooks** `default: []` + + The webhooks that will be called. A webhook consists of one or more [Connector Events]({% link _docs_integrate/connector-events.md %}) on which the webhook should be triggered, as well as a target to which the request should be sent. The target either is an inline definition of target as described above, or a name of a target defined in the `targets` object. + +
                              + + **Example** + + ```jsonc + [ + { + "triggers": ["transport.messageReceived"], + + // inline declaration of a target + "target": { + // see the targets section for a description of how to configure a target + } + }, + { + "triggers": ["transport.messageReceived"], + + // a reference to a target defined in the 'targets' object + "target": "target1" + } + ] + ``` + +##### Payload + +```jsonc +{ + // the event name (e.g. transport.messageReceived) that triggered the webhook + "trigger": "transport.messageReceived", + + // the data of the event + "data": {} +} +``` + +You can find type definitions of the event data in the [Connector Events]({% link _docs_integrate/connector-events.md %}) section. + +## Troubleshooting + +If you encounter any problems while configuring the Connector, head over to the [Troubleshooting]({% link _docs_operate/troubleshooting-guide.md %}) site. diff --git a/_includes/scenarios/operate/faq.md b/_includes/scenarios/operate/faq.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/scenarios/operate/modules.md b/_includes/scenarios/operate/modules.md new file mode 100644 index 000000000..3e56524f7 --- /dev/null +++ b/_includes/scenarios/operate/modules.md @@ -0,0 +1,39 @@ +Since the Connector is based on the Runtime, [all Modules of the Runtime]({% link _docs_explore/61-runtime.md %}#runtime-modules) are also available in the Connector. + +Additionally, the Connector defines its own Modules that only make sense in the context of a Connector and are therefore not defined in the Runtime. + +Read more about the Module configuration on the icon in each title. + +### AMQP Publisher {#amqppublisher} + +This Module proxies all events in the internal event bus of the Connector to an exchange in a configurable AMQP server. + +Compared to [webhooks](#webhooksv2), this gives you the full feature set of a message broker. There are multiple scenarios where this Module outweighs the Webhooks Module. For example: + +- You need persistence for the triggered events. +- You want to integrate enmeshed into an already existing message broker. + +### Auto Accept Relationship Creation Changes {#autoacceptrelationshipcreationchanges} + +It is not recommended to use this Module for production scenarios. +{: .notice--danger} + +The `autoAcceptRelationshipCreationChanges` Module listens to the events about incoming Relationship Change Requests. It immediately accepts the Requests, using the configured `responseContent`. + +Keep in mind that you need to synchronize the state of the Connector with the Backbone in order to receive incoming Relationship Requests. The `sync` Module automates this, but you can also do this manually by calling the `/api/v2/Account/Sync` route. + +### Core HTTP API {#corehttpapi} + +This Module contains the HTTP API with all enmeshed base functionalities. + +### Sync {#sync} + +The `sync` Module regularly fetches changes from the Backbone (e.g. new Messages / new incoming Relationship Requests). This process automatically triggers the events used by other Modules like the `webhooks` Module. + +### WebhooksV2 {#webhooksv2} + +With the REST API, pull mechanisms are supported. However, as there are many bidirectional scenarios within enmeshed, a push mechanism is favorable: the Connector is synchronizing its state with the Backbone and notifies the organization's backend services about changes. + +For this, the Connector supports the configuration of webhooks which are called every time a specific [Connector Event]({% link _docs_integrate/connector-events.md %}) is triggered (e.g. a new Message has been received => `transport.messageReceived`). + +Keep in mind that you need to synchronize the state of the Connector with the Backbone in order to receive events. The `sync` Module automates this, but you can also do this manually by calling the `/api/v2/Account/Sync` route. diff --git a/_includes/scenarios/operate/overview-of-connector-operations.md b/_includes/scenarios/operate/overview-of-connector-operations.md new file mode 100644 index 000000000..fb28a66d0 --- /dev/null +++ b/_includes/scenarios/operate/overview-of-connector-operations.md @@ -0,0 +1,70 @@ +## Basic Tasks + +### Stopping the Connector + +### Starting the Connector after a Downtime + +Be advised that before starting the Connector after a downtime, you should ensure that the data within the database is on the most up-to-date time. Once the Connector starts its internal synchronization mechanism, it will update the database with the new information from the Backbone and if there are any automatismns set up (e.g. automatically accept relationships) the Connector updates the database with this new information. Thus, if the database is not on the very last point in time, there would be two inconsistent versions split across two databases. + +## Update + +## Backup & Recovery + +All of the Connector data is stored in a MongoDB compatible database. Therefore we suggest you to use [MongoDB replicas](https://www.mongodb.com/basics/replication) in a productive setup, to avoid having data loss. + +Additionally, offline backups of the replicas might make sense. For backup and recovery methods visit the official [MongoDB docs](https://docs.mongodb.com/manual/core/backups/). These backups might come in handy if the data within the database was compromised. + +In general, there is no need to backup the Connector itself. However, it makes sense to backup configuration and log files. Additionally, it might speed up the recovery process if a complete system image of the Connector is available. + +For a recovery, you should be able to just start the Connector again with the recovered database. For recovering the database itself, please also refer the MongoDB documentation. + +If you use FerretDB as your database engine make sure to backup the data of the underlying PostgreSQL database. Read more about this in the [PostgreSQL documentation](https://www.postgresql.org/docs/8.1/backup.html). + +## Proposed System Tasks + +### Check Health + +The Business Connector exposes a health route. You can check the health with a http request to `/health`. + +### Check Available Resources + +#### Check CPU Workload + +The CPU workload can be checked using tools like [htop](https://htop.dev/) or [ctop](https://ctop.sh/) on the host system. + +#### Check Memory Consumption + +The Memory Consumption can be checked using tools like [htop](https://htop.dev/) or [ctop](https://ctop.sh/) on the host system. + +#### Check Harddisk Quota + +The Harddisk Quota can be checked using linux tools like **df**. Please ensure, that sufficient free space is available. + +### Check for Connector Updates + +New Connector versions are regularly published to the given Docker registry. Depending on your installation method, the Docker image can be automatically updated by the provided Docker registry. + +### Check for System and Docker Updates + +Please consult the documentation of your operating system about system updates. Additionally, the Docker runtime should be regularly updated as well. +We recommend to keep your operating system and Docker as up to date as possible. + +### Check Error Logs + +You can check the log using `docker logs ` or by checking the [mounted log files]({% link _docs_operate/setup-with-docker-compose.md %}#log-file-mounting) + +## Proposed Connector Tasks + +As some of the operative tasks should be done on a regular basis, please find a proposal for these tasks below. + +### Check Access to Key Material + +### Check old Material + +### Check Connector Systems + +- Every Connector instance and host system should be regularly checked for available resources (CPU, RAM, HDD) and system updates. + +### Check Third-Party Systems + +- Every third-party system (e.g. database, event buses, network components) and host system should be regularly checked for available resources (CPU, RAM, HDD) and system updates. diff --git a/_includes/scenarios/operate/performance-considerations.md b/_includes/scenarios/operate/performance-considerations.md new file mode 100644 index 000000000..dc3433195 --- /dev/null +++ b/_includes/scenarios/operate/performance-considerations.md @@ -0,0 +1,3 @@ +## Scaling Horizontally + +Using multiple connectors with the same identity to scale horizontally and balance the workload across all available connectors is not supported at the moment. diff --git a/_includes/scenarios/operate/privacy-considerations.md b/_includes/scenarios/operate/privacy-considerations.md new file mode 100644 index 000000000..e4599e12b --- /dev/null +++ b/_includes/scenarios/operate/privacy-considerations.md @@ -0,0 +1,9 @@ +Please be aware that personal or sensitive plaintext data is processed and stored in the Connector and the corresponding MongoDB database. The same applies to secret and private keys which should be treated as strictly confidential. + +Thus the access to the Connector and its database should be kept to a bare minimum of authorized users or systems. Please refer to the [Security Considerations]({% link _docs_operate/security-considerations.md %}) for details. + +As the Connector is running on the customer's infrastructure in the complete authority of the customer, it is in the customer's liability to ensure a secure and legal operation. + +## Which data is processed by the Connector? + +## Deleting Data diff --git a/_includes/scenarios/operate/security-considerations.md b/_includes/scenarios/operate/security-considerations.md new file mode 100644 index 000000000..f31672266 --- /dev/null +++ b/_includes/scenarios/operate/security-considerations.md @@ -0,0 +1,117 @@ +The most important thing you have to keep in mind that the Connector is usually running on your landscape and in your authority. This is why you are also responsible for the security of the Connector and its data. + +And as the Connector is handling very sensitive data (please see chapter Privacy), it should be treated as any other business system - with the same requirements in terms of privacy, security, access or network setup. + +## Updates + +As with every software, it is important that you update the Connector regularly from the official Docker repositories. We do our best to keep the whole enmeshed project (of course including the Connector) as up-to-date as possible, having multiple checks with regards to security and the open-source-software lifecycle. + +Additionally, any software component the Connector or its data touches should be updated regularly. + +Examples are: + +- the Docker host system (operating system, virtual machine, ...) +- the Docker Runtime +- the database (e.g. MongoDB or FerretDB) +- the firewall +- the virus scanner +- the firmwares of any (network) component +- possible integration platforms and modules + +## Trust + +Although enmeshed introduces a secure way of knowing who is sending messages to the Connector, and the corresponding Backbone is blocking messages from unknown parties, you shouldn't trust others to not send you invalid, incorrect, illegal, or outright harmful data over the secure connection. + +Especially the encrypted data coming from the Backbone - which hasn't been decrypted yet - might be harmful. We cannot check if the data is correctly encrypted. Only the Connector in your landscape does this automatically (in terms of decrypting the data and verifying its digital signature). + +This brings us to the next point: Virus Scans. + +## Virus Scans + +You should do Virus Scans regularly whenever sending or receiving data. However, the Connector has no integration capability for Virus Scanners (yet). This means, we cannot call for a virus scan while we are encrypting or decrypting enmeshed payload. + +Thus please consider scanning the host systems and the database for viruses regularly. Additionally, even encrypted data sent to and received from the Backbone should be scanned for viruses. + +## Networking + +It is best practice to block unnecessary access from and to software components between networks. In this chapter it is described which access the Connector actually required and which requests could be blocked. + +### Outbound External Connection: Internet + +The Connector uses an TLS-secured Internet connection to the enmeshed Backbone which runs on the domain `https://prod.enmeshed.eu`. Your firewall must not block access to this domain, otherwise the Connector won't work. + +To access the latest updates, other routes might need to be opened within the firewall settings. + +### No Inbound External Connections + +The Connector synchronizes itself with the Backbone by a long-polling mechanism (it accesses the Internet). There is no data transfer triggered by the Backbone (or other users) and thus, there is no need for opening up special ports or reverse proxies for inbound connections from the Internet. + +### Oubound Communication to Internal Networks + +The Connector does need to access its database. Access to other networks or systems from the Connector can be blocked unless there is a synchronization route (webhook) set up in the Connector configuration. Otherwise, the Connector needs to access the provided internal domains for submitting new data. + +### Inbound Communication from Internal Networks + +Depending on the integration setup, access to the Connector from the internal network could be blocked for the majority of requests. Usually, only requests from the integration systems, the developers or administrators need to be allowed. + +## Authentication and User Management + +So far, the Connector supports API-Key authentication to securely authenticate technical users. These API-Keys are random character strings with a high entropy and should be kept confidential at all times. Each internal system communicating with the Connector should receive its own API-Key. + +There is no authorization set up, thus every API-Key can call any API of the Connector API. + +End user authentication, e.g. business users accessing the system, should be done on the respective business system. Usually, there is no need for end users to access the Connector and thus they should not have access to the Connector (from a network and authentication perspective). + +## Kernel Dumps + +Kernel dumps can be a useful tool for diagnosing and troubleshooting system issues. However, they can also be a security risk if they contain sensitive information such as encryption keys. If an attacker gains access to a kernel dump file, they may be able to extract this information and use it to compromise the security of your system. + +As the Connector does not have access to the host system, it cannot directly control whether or not kernel dumps are enabled. Therefore, the administrator of the host system make a decision on whether or not to disable kernel dumps based on their own security policies and risk tolerance. + +The recommended course of action is to disable kernel dumps on the host system, outside a development environment, where the Connector is running. This is in line with the [recommendation of libsodium](https://libsodium.gitbook.io/doc/memory_management#locking-memory), the used encryption library. + +This can typically be done by modifying the kernel parameters or configuration settings. + +## API key rotation + +It is important to ensure that API keys are secure and cannot be easily compromised. One of the key aspects of API key security is regular rotation and expiration. If an API key is not rotated or expired, it can potentially be used by an attacker who has obtained the key through unauthorized means. + +## Docker Compose File Security Considerations + +Docker Compose is a tool to easily set up and host and complete landscape by running multiple Docker containers, configure them and link them together with a network. For development, testing and demonstration purposes, the enmeshed team provides Docker Compose files throughout this site or on GitHub. Please be aware, that those Docker Compose files should not be used in a public or productive environment, as they could contain insecure or otherwise unstable configurations, e.g. default passwords or the missing encryption at rest for MongoDB configuration. If you choose to use Docker Compose files in a public or production environment, it is important to educate yourself on how to create production-grade Docker Compose files to ensure the security of your system. + +## Setup Firewall + +A firewall is a security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules. By implementing a firewall, you can block unauthorized access to your network and prevent malicious traffic from entering your system. + +Allowing for potentially insecure protocols such as HTTP may expose sensitive information in transit to malicious parties, putting the system and its users at risk of data theft or other cyber attacks. Furthermore, the use of unsupported protocols may result in unintended side effects that could compromise system functionality or stability. + +To mitigate this risk, it is recommended that the connector restricts the supported protocols to HTTPS, which is a secure protocol that encrypts information in transit. This will help prevent sensitive information from being exposed to malicious parties. Additionally, any feature that allows developers to override the protocol check should be explicitly enabled and documented to ensure that it is used judiciously and with caution. + +Furthermore, an allowlist can be used to limit access to the system to only trusted sources, reducing the risk of unauthorized access and potential security vulnerabilities. + +When configuring the allowlist for the connector, it is important to include all necessary URLs while keeping the list as minimal as possible. + +One important consideration when configuring the allowlist is the baseUrl of the used Backbone. The baseUrl should be the minimum required for the allowlist to ensure that the connector is fully functional. Including unnecessary URLs in the allowlist can increase the attack surface and create potential security vulnerabilities. + +However, it is also important to consider other URLs that may need to be included in the allowlist, such as update URLs for Docker Hub, images, GitHub, Linux update environments, and other sources. These URLs may be necessary for the proper functioning of the system and should be carefully evaluated and included in the allowlist if deemed necessary. + +To ensure the security and integrity of the system, it is recommended to regularly review and update the allowlist as necessary. This includes removing any URLs that are no longer needed and adding new URLs that may be required. + +## Database Security + +It is crucial to secure databases, and in the case of MongoDB, it is essential to implement proper security measures to mitigate the risks associated with its default insecure configuration. + +On this page we have summarized some tips for the use of [MongoDB](https://www.mongodb.com/docs/manual/administration/security-checklist/) and [FerretDB](https://docs.ferretdb.io/security/). A good source for further information on these tips is the website of the respective database. + +With this page, we address what we consider to be the most important security tips. Even if you follow these tips, a security incident may occur. + +1. **Data encryption:** Data stored in the database should be encrypted to ensure that even if an attacker gains access to the storage device, they cannot read the data. MongoDB provides built-in [encryption at rest](https://www.mongodb.com/docs/manual/core/security-encryption-at-rest/) features, which can be enabled to secure data. For all databases it is possible to perform data encryption with storage encryption at the file system level or the block level. On Linux, file system encryption options include eCryptfs or EncFS and Block level options include dm-crypt + LUKS. + +2. **Network access restrictions:** MongoDB should only be accessible through the connector and should not be directly accessible over the public network. This can be achieved through proper network configuration, such as setting up firewalls to restrict access. + +3. **Strong passwords and connection strings:** All user credentials and connection strings should be strong and complex, to prevent unauthorized access to the database. + +4. **Regular updates and maintenance:** Regular updates should be performed to keep the database up-to-date and to fix any known security vulnerabilities. + +When you are using FerretDB as your database read more about security in the [FerretDB documentation](https://docs.ferretdb.io/category/security/). diff --git a/_includes/scenarios/operate/set-up-connector-for-productive-use.md b/_includes/scenarios/operate/set-up-connector-for-productive-use.md new file mode 100644 index 000000000..281d19a6c --- /dev/null +++ b/_includes/scenarios/operate/set-up-connector-for-productive-use.md @@ -0,0 +1,104 @@ +## Prerequisites + +### MongoDB + +The Connector requires a MongoDB database as its data storage. MongoDB is a document-oriented database. For compatibility and security reasons, the most up-to-date version of MongoDB should be used. +For more information, please see . + +### Container Runtime + +The Connector requires a Container Runtime like Docker or Kubernetes: Docker is a virtualization technology which introduces highly portable software containers. The Connector is shipped and updated as such a Docker container - the Docker Runtime is the runtime environment which can execute the Docker containers. For compatibility and security reasons, the most up-to-date version of the Docker Runtime should be used. +For more information, please see . + +Visit [the official docker docs](https://docs.docker.com/get-docker/) for installation guides. + +### Hardware Requirements + +No special hardware requirements have been identified so far and as always, hardware requirements strongly correlate with the envisoned usage scenario. + +A good starting point for hosting the Docker image of the Connector would be the following: + +- 1 CPU +- 512MB RAM +- 1GB HDD + +Depending on the usage scenario, higher hardware requirements might be necessary. + +### Internet Connectivity + +A reliable and fast internet connection is mandatory for running the Connector. However, the Connector is only communicating with the Backbone so the corresponding domain (e.g. `https://prod.enmeshed.eu`) can be whitelisted and the associated certificate can be additionally pinned. + +### List docker image tags + +Read more about listing available docker image tags [here]({% link _docs_explore/52-connector.md %}#connector-docker-image). + +### Familiarize with our policies + +Before setting up enmeshed, you should familiarize yourself with our [Security Considerations]({% link _docs_operate/security-considerations.md %}) and [Privacy Considerations]({% link _docs_operate/privacy-considerations.md %}). + +## Installation with Docker + +Make sure that you have installed docker compose. Visit [the official installation guide](https://docs.docker.com/compose/install/) for more information. + +**ATTENTION:** The Docker compose files we provide in this tutorial are not recommended to use in production scenarios. Please read [Use Compose in production](https://docs.docker.com/compose/production/) for more information on how to write a production-grade compose file and our [Security Considerations]({% link _docs_operate/security-considerations.md %}#docker-compose-file-security-considerations). +{: .notice--warning} + +### Option 1: docker compose including MongoDB + +Go through the following steps to start the Connector: + +1. place the file [examples/docker-compose-with-mongodb.yml](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/docker-compose-with-mongodb.yml) as `docker-compose.yml` in a folder of your choice +2. create a config file that can be mounted inside the Connector. Fill the config file using the [configuration docs]({% link _docs_operate/configuration.md %}) and the [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json). If you used the yml-file from the first step, the connection string looks as follows: + ```text + mongodb://:@mongodb:27017 + ``` +3. replace all `` in the compose file with the corresponding values +4. (optional) follow the steps under [log file mounting](#log-file-mounting) if you want to persist and access the log files on the host system +5. execute `docker compose up -d` in the shell + +### Option 2: docker compose with existing MongoDB + +Visit the official [MongoDB website](https://www.mongodb.com/) for installation without docker or cloud usage or the [docker hub page](https://hub.docker.com/_/mongo) for information about the installation with docker. + +Go through the following steps to start the Connector: + +1. make your existing MongoDB available for the connector +2. place the file [examples/docker-compose-with-existing-mongodb.yml](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/docker-compose-with-existing-mongodb.yml) as `docker-compose.yml` in a folder of your choice +3. create a config file that can be mounted inside the Connector. Fill the config file using the [configuration docs]({% link _docs_operate/configuration.md %}) and the [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json) +4. replace all `` in the compose file with the corresponding values +5. (optional) follow the steps under [log file mounting](#log-file-mounting) if you want to persist and access the log files on the host system +6. execute `docker compose up -d` in the shell + +### Option 3: docker compose with FerretDB + +Go through the following steps to start the Connector: + +1. place the file [examples/docker-compose-with-ferretdb.yml](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/docker-compose-with-ferretdb.yml) as `docker-compose.yml` in a folder of your choice +2. create a config file that can be mounted inside the Connector. Fill the config file using the [configuration docs]({% link _docs_operate/configuration.md %}) and the [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json). If you used the yml-file from the first step, the connection string looks as follows: `mongodb://ferretdb:27017` +3. replace all `` in the compose file with the corresponding values +4. (optional) follow the steps under [log file mounting](#log-file-mounting) if you want to persist and access the log files on the host system +5. execute `docker compose up -d` in the shell + +## Installation with Kubernetes and Helm + +Make sure that you have a running Kubernetes cluster and that you have installed [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) and [Helm](https://helm.sh/docs/intro/install/). + +You have to provide your own MongoDB instance. Visit the [MongoDB website](https://www.mongodb.com/) for installation without docker or cloud usage or the [docker hub page](https://hub.docker.com/_/mongo) for information about the installation with docker or install it [in kubernetes via Helm](https://artifacthub.io/packages/helm/bitnami/mongodb). + +For the installation and configuration head over to the dedicated [Connector Helm chart site]({% link _docs_operate/setup-with-helm-charts.md %}). + +## Validate the Connector installation + +You can validate the Connector installation by checking its health route. Simply access `/health` in your browser or using curl. + +If the swagger documentation is enabled you can also access it under `/docs` + +## Log file mounting + +1. Uncomment the volume mapping in the created `docker-compose.yml` file +2. Create a folder where the log files shall be placed. Make sure that the process in the container has write access to the folder e.g. by executing `chmod 777 ` on your created folder. +3. replace `` with the path to your created folder + +## Troubleshooting + +If you encounter any problems while setting up the Connector, head over to the [Troubleshooting]({% link _docs_operate/troubleshooting-guide.md %}) site. diff --git a/_includes/scenarios/operate/setup-with-docker-compose.md b/_includes/scenarios/operate/setup-with-docker-compose.md new file mode 100644 index 000000000..8391d29a1 --- /dev/null +++ b/_includes/scenarios/operate/setup-with-docker-compose.md @@ -0,0 +1,106 @@ +## Prerequisites + +### MongoDB + +The Connector requires a MongoDB compatible database as its data storage. MongoDB is a document-oriented database. For compatibility and security reasons, the most up-to-date version of MongoDB should be used. +For more information, please see . + +If you want to use an open-source database you can use [FerretDB](https://www.ferretdb.io) instead. + +### Container Runtime + +The Connector requires a Container Runtime like Docker or Kubernetes: Docker is a virtualization technology which introduces highly portable software containers. The Connector is shipped and updated as such a Docker container - the Docker Runtime is the runtime environment which can execute the Docker containers. For compatibility and security reasons, the most up-to-date version of the Docker Runtime should be used. +For more information, please see . + +Visit [the official docker docs](https://docs.docker.com/get-docker/) for installation guides. + +### Hardware Requirements + +No special hardware requirements have been identified so far and as always, hardware requirements strongly correlate with the envisoned usage scenario. + +A good starting point for hosting the Docker image of the Connector would be the following: + +- 1 CPU +- 512MB RAM +- 1GB HDD + +Depending on the usage scenario, higher hardware requirements might be necessary. + +### Internet Connectivity + +A reliable and fast internet connection is mandatory for running the Connector. However, the Connector is only communicating with the Backbone so the corresponding domain (e.g. `https://prod.enmeshed.eu`) can be whitelisted and the associated certificate can be additionally pinned. + +### List docker image tags + +Read more about listing available docker image tags [here]({% link _docs_explore/52-connector.md %}#connector-docker-image). + +### Familiarize with our policies + +Before setting up enmeshed, you should familiarize yourself with our [Security Considerations]({% link _docs_operate/security-considerations.md %}) and [Privacy Considerations]({% link _docs_operate/privacy-considerations.md %}). + +## Installation with Docker + +Make sure that you have installed docker compose. Visit [the official installation guide](https://docs.docker.com/compose/install/) for more information. + +**ATTENTION:** The Docker compose files we provide in this tutorial are not recommended to use in production scenarios. Please read [Use Compose in production](https://docs.docker.com/compose/production/) for more information on how to write a production-grade compose file and our [Security Considerations]({% link _docs_operate/security-considerations.md %}#docker-compose-file-security-considerations). +{: .notice--warning} + +### Option 1: docker compose including MongoDB + +Go through the following steps to start the Connector: + +1. place the file [examples/docker-compose-with-mongodb.yml](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/docker-compose-with-mongodb.yml) as `docker-compose.yml` in a folder of your choice +2. create a config file that can be mounted inside the Connector. Fill the config file using the [configuration docs]({% link _docs_operate/configuration.md %}) and the [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json). If you used the yml-file from the first step, the connection string looks as follows: + ```text + mongodb://:@mongodb:27017 + ``` +3. replace all `` in the compose file with the corresponding values +4. (optional) follow the steps under [log file mounting](#log-file-mounting) if you want to persist and access the log files on the host system +5. execute `docker compose up -d` in the shell + +### Option 2: docker compose with existing MongoDB + +Visit the official [MongoDB website](https://www.mongodb.com/) for installation without docker or cloud usage or the [docker hub page](https://hub.docker.com/_/mongo) for information about the installation with docker. + +Go through the following steps to start the Connector: + +1. make your existing MongoDB available for the connector +2. place the file [examples/docker-compose-with-existing-mongodb.yml](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/docker-compose-with-existing-mongodb.yml) as `docker-compose.yml` in a folder of your choice +3. create a config file that can be mounted inside the Connector. Fill the config file using the [configuration docs]({% link _docs_operate/configuration.md %}) and the [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json) +4. replace all `` in the compose file with the corresponding values +5. (optional) follow the steps under [log file mounting](#log-file-mounting) if you want to persist and access the log files on the host system +6. execute `docker compose up -d` in the shell + +### Option 3: docker compose with FerretDB + +Go through the following steps to start the Connector: + +1. place the file [examples/docker-compose-with-ferretdb.yml](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/docker-compose-with-ferretdb.yml) as `docker-compose.yml` in a folder of your choice +2. create a config file that can be mounted inside the Connector. Fill the config file using the [configuration docs]({% link _docs_operate/configuration.md %}) and the [example config file](https://raw.githubusercontent.com/nmshd/documentation/main/_docs_integrate/examples/example.config.json). If you used the yml-file from the first step, the connection string looks as follows: `mongodb://ferretdb:27017` +3. replace all `` in the compose file with the corresponding values +4. (optional) follow the steps under [log file mounting](#log-file-mounting) if you want to persist and access the log files on the host system +5. execute `docker compose up -d` in the shell + +## Installation with Kubernetes and Helm + +Make sure that you have a running Kubernetes cluster and that you have installed [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) and [Helm](https://helm.sh/docs/intro/install/). + +You have to provide your own MongoDB instance. Visit the [MongoDB website](https://www.mongodb.com/) for installation without docker or cloud usage or the [docker hub page](https://hub.docker.com/_/mongo) for information about the installation with docker or install it [in kubernetes via Helm](https://artifacthub.io/packages/helm/bitnami/mongodb). + +For the installation and configuration head over to the dedicated [Connector Helm chart site]({% link _docs_operate/setup-with-helm-charts.md %}). + +## Validate the Connector installation + +You can validate the Connector installation by checking its health route. Simply access `/health` in your browser or using curl. + +If the swagger documentation is enabled you can also access it under `/docs` + +## Log file mounting + +1. Uncomment the volume mapping in the created `docker-compose.yml` file +2. Create a folder where the log files shall be placed. Make sure that the process in the container has write access to the folder e.g. by executing `chmod 777 ` on your created folder. +3. replace `` with the path to your created folder + +## Troubleshooting + +If you encounter any problems while setting up the Connector, head over to the [Troubleshooting]({% link _docs_operate/troubleshooting-guide.md %}) site. diff --git a/_includes/scenarios/operate/setup-with-helm-charts.md b/_includes/scenarios/operate/setup-with-helm-charts.md new file mode 100644 index 000000000..9d0dbe1d3 --- /dev/null +++ b/_includes/scenarios/operate/setup-with-helm-charts.md @@ -0,0 +1,128 @@ +## Versions + +The available Helm chart versions can be found [here](https://github.com/nmshd/cns-connector/pkgs/container/connector-helm-chart/versions). + +We provide a new Helm chart version for each new Connector release and each Helm chart will deploy the Connector in the chart's version. (Helm chart version `3.2.1` deploys Connector version `3.2.1`) +You can override the Connector version by setting the `image.tag` value in the Helm chart. + +## Configuration + +The Helm chart can be configured using a [yaml file or the command line](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). The following table lists the configurable parameters of the Helm chart and their default values. + +You can also query the available options using the command line: `helm show values oci://ghcr.io/nmshd/connector-helm-chart --version ` + +| Parameter | Description | Default | +| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | +| `image.pullPolicy` | The image's [PullPolicy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) | `"IfNotPresent"` | +| `image.tag` | The image's tag. [Available tags](https://github.com/nmshd/cns-connector/pkgs/container/connector/versions) | The version of the Helm chart. | +| `config` | The configuration of the Connector in yaml or json format. [Configuration options](https://enmeshed.eu/integrate/connector-configuration) | `{}` | +| | | | +| `pod.securityContext` | [SecurityContext](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context) for the pod. | `{}` | +| `pod.nodeSelector` | [NodeSelector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) for the pod. | `{}` | +| `pod.tolerations` | [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) for the pod. | `[]` | +| `pod.affinity` | [Affinity](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#NodeAffinity) for the pod. | `{}` | +| | | | +| `pod.connector.environment` | A list of [environment variables](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#environment-variables) for the Connector container. Can be used for configuring secrets. | `[]` | +| `pod.connector.securityContext` | [SecurityContext](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1) for the Connector container. | `{}` | +| `pod.connector.resources` | [Resources](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#resources) for the Connector container. | `{}` | +| `pod.connector.containerPort` | The port the Connector is listening on. Must be the same as `infrastructure.httpServer.port` in the `config`. | `80` | +| | | | +| `pod.ferretdb.enabled` | Enables / disables the FerretDB sidecar. | false | +| `pod.ferretdb.image` | The image used to deploy the FerretDB sidecar. Can be `ferretdb` `ferretdb-dev` or `all-in-one` | `"ferretdb"` | +| `pod.ferretdb.tag` | The tag used to deploy the FerretDB sidecar. | `"latest"` | +| `pod.ferretdb.environment` | A list of [environment variables](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#environment-variables) for the FerretDB container. Can be used for configuring secrets. | `[]` | +| `pod.ferretdb.securityContext` | [SecurityContext](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1) for the FerretDB container. | `{}` | +| `pod.ferretdb.resources` | [Resources](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#resources) for the FerretDB container. | `{}` | +| | | | +| `service.type` | The [ServiceType](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) of the service. | `"ClusterIP"` | +| `service.port` | The port of the service. | `80` | + +### Example Configuration + +The following example shows how to configure the Helm chart. + +```yaml +config: + debug: true + modules: + coreHttpApi: + docs: + enabled: true + +pod: + connector: + environment: + - name: database__connectionString + valueFrom: + secretKeyRef: + name: db-connection-string + key: VALUE + + - name: transportLibrary__platformClientId + value: test + - name: transportLibrary__platformClientSecret + valueFrom: + secretKeyRef: + name: platform-client-secret + key: VALUE + + - name: infrastructure__httpServer__apiKey + valueFrom: + secretKeyRef: + name: api-key + key: VALUE +``` + +If you prefer json over yaml for the `config` section the following example is equivalent to the yaml example above. + +```yaml +config: { "modules": { "coreHttpApi": { "docs": { "enabled": false } } } } +# ... +``` + +## Installation + +Create a file named `values.yaml` with the desired configuration and run the following command to install the Helm chart. + +```bash +helm install oci://ghcr.io/nmshd/connector-helm-chart --version -f values.yaml +``` + +### Installation with FerretDB `all-in-one` + +The Helm chart can be configured to deploy a FerretDB `all-in-one` instance as a sidecar. This image does not provide persistence, therefore this is useful e.g. for testing purposes or for a quick start. + +```yaml +config: + debug: true + modules: + coreHttpApi: + docs: + enabled: true + database: + connectionString: "mongodb://localhost:27017" + +pod: + connector: + environment: + - name: transportLibrary__platformClientId + alueFrom: + secretKeyRef: + name: platform-client-id + key: VALUE + - name: transportLibrary__platformClientSecret + valueFrom: + secretKeyRef: + name: platform-client-secret + key: VALUE + + - name: infrastructure__httpServer__apiKey + valueFrom: + secretKeyRef: + name: api-key + key: VALUE + + ferretdb: + enabled: true + image: all-in-one +``` diff --git a/_includes/scenarios/operate/support.md b/_includes/scenarios/operate/support.md new file mode 100644 index 000000000..3852bcc4b --- /dev/null +++ b/_includes/scenarios/operate/support.md @@ -0,0 +1,5 @@ +## Support + +For assisted support with the Connector or the Backbone provided by the j&s-soft GmbH contact us via `support[at]enmeshed.eu`. + +Community support is a great way to get help and even contribute to the projects. Open bug reports and feature requests in the [enmeshed issue tracker](https://github.com/nmshd/feedback/issues) or share your feedback with the enmeshed team via the [enmeshed discussions](https://github.com/nmshd/feedback/discussions). diff --git a/_includes/scenarios/operate/troubleshooting-guide.md b/_includes/scenarios/operate/troubleshooting-guide.md new file mode 100644 index 000000000..15f863046 --- /dev/null +++ b/_includes/scenarios/operate/troubleshooting-guide.md @@ -0,0 +1,43 @@ +## Troubleshooting Guide + +For any issues with the Connector make sure you checked the logs and the `/Monitoring/*` routes. The `/Monitoring/Support` route provides a lot of information about the current state of the Connector and you can for example detect misconfigurations. + +{% include rapidoc api_route_regex="/Monitoring/Support$" title="" %} + +## Common Errors + +### Config file mounting (`EISDIR` | `invalid mode: RO`) + +**Symptoms** + +One of the following errors are logged during the startup of the Connector: + +- `Error parsing your configuration file: [/config.json]: EISDIR: illegal operation on a directory, read` +- `ERROR: for connector Cannot create container for service connector: invalid mode: RO` + +**How to fix?** + +Given the following filesystem structure: + +```text +home/ +└── connector/ + ├── config.json + └── docker-compose.yml +``` + +If you mount `/home/connector:/config.json:ro`, the created `/config.json` in the container will be a directory. To fix this the mount has to be `/home/connector/config.json:/config.json:ro` or `./config.json:/config.json:ro` (docker compose translates relative links to absolute links). + +### Database Authorization Error + +**Symptoms** + +During the startup of the Connector, the following error is logged: + +```text +[ERROR] ConnectorRuntime - Could not connect to the configured database. Try to check the connection string and the database status. Root error: MongoServerError: Authentication failed. +``` + +**How to fix?** + +This error can show up when you misuse the environment variables `MONGO_INITDB_ROOT_USERNAME` and/or `MONGO_INITDB_ROOT_PASSWORD` of the MongoDB Docker image. Even though their name is self-explanatory, you can easily read over the "INITDB" part in them. This means that the username and password you specify here are only used to **initially** create a database user. When you change them and then restart the container, **the root username is not changed**. If you want to change the root user's name or password, look into the MongoDB documentation. diff --git a/_includes/scenarios/scenario-sc1.md b/_includes/scenarios/scenario-sc1.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc1.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc10.md b/_includes/scenarios/scenario-sc10.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc10.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc11.md b/_includes/scenarios/scenario-sc11.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc11.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc12.md b/_includes/scenarios/scenario-sc12.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc12.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc13.md b/_includes/scenarios/scenario-sc13.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc13.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc14.md b/_includes/scenarios/scenario-sc14.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc14.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc15.md b/_includes/scenarios/scenario-sc15.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc15.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc16.md b/_includes/scenarios/scenario-sc16.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc16.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc17.md b/_includes/scenarios/scenario-sc17.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc17.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc18.md b/_includes/scenarios/scenario-sc18.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc18.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc19.md b/_includes/scenarios/scenario-sc19.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc19.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc2.md b/_includes/scenarios/scenario-sc2.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc2.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc20.md b/_includes/scenarios/scenario-sc20.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc20.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc21.md b/_includes/scenarios/scenario-sc21.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc21.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc22.md b/_includes/scenarios/scenario-sc22.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc22.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc23.md b/_includes/scenarios/scenario-sc23.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc23.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc24.md b/_includes/scenarios/scenario-sc24.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc24.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc25.md b/_includes/scenarios/scenario-sc25.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc25.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc27.md b/_includes/scenarios/scenario-sc27.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc27.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc29.md b/_includes/scenarios/scenario-sc29.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc29.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc3.md b/_includes/scenarios/scenario-sc3.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc3.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc30.md b/_includes/scenarios/scenario-sc30.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc30.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc31.md b/_includes/scenarios/scenario-sc31.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc31.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc32.md b/_includes/scenarios/scenario-sc32.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc32.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc34.md b/_includes/scenarios/scenario-sc34.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc34.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc35.md b/_includes/scenarios/scenario-sc35.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc35.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc36.md b/_includes/scenarios/scenario-sc36.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc36.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc37.md b/_includes/scenarios/scenario-sc37.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc37.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc38.md b/_includes/scenarios/scenario-sc38.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc38.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc39.md b/_includes/scenarios/scenario-sc39.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc39.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc4.md b/_includes/scenarios/scenario-sc4.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc4.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc40.md b/_includes/scenarios/scenario-sc40.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc40.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc41.md b/_includes/scenarios/scenario-sc41.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc41.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc42.md b/_includes/scenarios/scenario-sc42.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc42.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc43.md b/_includes/scenarios/scenario-sc43.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc43.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc44.md b/_includes/scenarios/scenario-sc44.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc44.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc45.md b/_includes/scenarios/scenario-sc45.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc45.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc46.md b/_includes/scenarios/scenario-sc46.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc46.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc47.md b/_includes/scenarios/scenario-sc47.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc47.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc48.md b/_includes/scenarios/scenario-sc48.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc48.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc49.md b/_includes/scenarios/scenario-sc49.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc49.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc5.md b/_includes/scenarios/scenario-sc5.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc5.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc50.md b/_includes/scenarios/scenario-sc50.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc50.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc51.md b/_includes/scenarios/scenario-sc51.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc51.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc52.md b/_includes/scenarios/scenario-sc52.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc52.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc53.md b/_includes/scenarios/scenario-sc53.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc53.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc54.md b/_includes/scenarios/scenario-sc54.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc54.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc55.md b/_includes/scenarios/scenario-sc55.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc55.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc56.md b/_includes/scenarios/scenario-sc56.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc56.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc57.md b/_includes/scenarios/scenario-sc57.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc57.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc59.md b/_includes/scenarios/scenario-sc59.md deleted file mode 100644 index 6ed7fc24e..000000000 --- a/_includes/scenarios/scenario-sc59.md +++ /dev/null @@ -1,169 +0,0 @@ - - -This guide will explain the end to end flow of sharing and answering a [Request]({% link _docs_integrate/61-data-model.md %}#request) over a Template. This flow usually happens between the App and a Connector, but for simplicity and more transparency we will use two Connectors. Therefore you have to start two Connectors that don't have a Relationship yet. - -You can use the [Connector Installation Guide]({% link _docs_integrate/10-connector-installation.md %}) if you need help for the setup the Connectors. - - - -{% include properties_list.html %} - -On the first Connector you will create a Template. This Connector will be called Templator in the in the following steps. The second Connector is called Requestor, because it will create the Relationship and therefore it creates the `RelationshipCreationChangeRequest`. - -## Check your Request's validity - -At first you should check if your Request is valid. You can do this by calling the `POST /api/v2/Requests/Outgoing/Validate` route on the Templator Connector with the following body. -For simplicity the Request inside the Template only contains an AuthenticationRequestItem, but you can use any [RequestItems]({% link _docs_integrate/62-request-items.md %}) you want. - -```json -{ - "content": { - "items": [ - { - "@type": "AuthenticationRequestItem", - "mustBeAccepted": true, - "title": "The templator is asking for an authentication" - } - ] - } -} -``` - -Even though the Requests are validated during the RelationshipTemplate creation you should not skip this step as it gives you additional information in case of validation errors. -{: .notice--info} - -## Create the Template - -Create the Relationship Template on the Templator's Connector. You can do so by calling the `POST /api/v2/RelationshipTemplates/Own` route. Use the following JSON in the Request body: - -```jsonc -{ - "maxNumberOfAllocations": 1, - "expiresAt": "2023-06-01T00:00:00.000Z", - "content": { - "@type": "RelationshipTemplateContent", - "title": "Connector Demo Contact", - "onNewRelationship": { - // the content property of the payload in the step before - } - } -} -``` - -You will receive a response with the complete RelationshipTemplate. - -{% include copy-notice description="Save the `truncatedReference` and the `id` of the RelationshipTemplate. You will need them in the next steps." %} - -```jsonc -{ - "id": "RLT..", - // ... - "truncatedReference": "UkxU..." -} -``` - -## Load the Template and get the Request - -Now you have to load the Template on the Requestor Connector. You can do so by calling the `POST /api/v2/RelationshipTemplates/Peer` route with the following content. Use the `truncatedReference` you copied before: - -```jsonc -{ - "reference": "UkxU..." -} -``` - -If no Relationship exists, this will trigger a process in the Enmeshed Runtime. It will create a new incoming Request on which we will work in the next step. You can observe this by long polling the incoming Requests or by waiting for the `consumption.incomingRequestReceived` event. - -The long polling is done by calling the `GET /api/v2/Requests/Incoming` route. You can use the query params `source.reference=` and `status=ManualDecisionRequired` to filter for Requests that belong to the Template you are currently working on. - -For more information about the events you can head over to the [Connector Modules site]({% link _docs_integrate/03-connector-modules.md %}) and read about the [AMQP Publisher module]({% link _docs_integrate/03-connector-modules.md %}#amqppublisher) and the [WebhooksV2 module]({% link _docs_integrate/03-connector-modules.md %}#webhooksv2) that are propagating events. - -{% include copy-notice description="After you received the Request, save its `id` for the next step." %} - -## Answer the Request - -The rejection is explained before the acceptance because you can re-do it as often if you want. If you accept the Request a RelationshipRequest will be sent and no new Request will be created until the RelationshipRequest is answered. If the RelationshipRequest is accepted the Enmeshed Runtime will recognize the existing Relationship and will also not create a new Request. - -So if you want to test the full flow, you should first reject the Request. After that you can create a new one, which you can accept. - -If there is no open RelationshipRequest or existing Relationship, you can trigger the creation of a new Request by [loading the Template again](#load-the-template-and-get-the-request) with the same truncated reference. - -### Reject - -If you want to reject the Request you can do so by calling the `POST /api/v2/Requests/Incoming/{id}/Reject` route. You can use the `id` you saved in the previous step. In the payload you have to reject all RequestItems. In case of the example Request the payload is the following: - -```jsonc -{ - "items": [ - { - "accept": false - } - ] -} -``` - -In the response you can see the Request has moved to status `Decided`. This is where the Enmeshed Runtime steps in and handles the Request based on you decision. Because you rejected the Request, the Enmeshed Runtime will only move the Request to status completed. This behavior can be observed by querying the Request again after a few seconds (`GET /api/v2/Requests/Incoming/{id}`). - -### Accept - -If you tried out the Rejection before this step make sure to create a Request by [loading the Template again](#load-the-template-and-get-the-request) with the same truncated reference. - -If you want to accept the Request you can do so by calling the `POST /api/v2/Requests/Incoming/{id}/Accept` route. You can use the `id` you saved in the [template loading](#load-the-template-and-get-the-request) step. In the payload you have to accept at least all RequestItems where the `mustBeAccepted` property is set to `true`. In case of the example Request the payload is the following: - -```jsonc -{ - "items": [ - { - "accept": true - } - ] -} -``` - -In the response you can see the Request has moved to status `Decided`. This is where the Enmeshed Runtime steps in and handles the Request based on you decision. Because you accepted the Request, the Enmeshed Runtime will send your Response to the Templator by creating a Relationship. This behavior can be observed by querying the Request again after a few seconds (`GET /api/v2/Requests/Incoming/{id}`). When the Request is in status `Completed` you can query the created Relationship (`GET /api/v2/Relationships`, query parameter `template.id=`). - -If you synchronize the Templator Connector (`POST /api/v2/Account/Sync`) you will see a new Relationship in the response. The Relationship looks as follows: - -```jsonc -{ - "id": "REL...", - "template": { - // ... - }, - "status": "Active", - "peer": "id1...", - // ... - "changes": [ - { - "id": "RCH...", - "request": { - "createdBy": "id1...", - "createdByDevice": "DVC...", - "createdAt": "2022-11-04T13:31:01.360Z", - "content": { - "@type": "RelationshipCreationChangeRequestContent", - "response": { - "items": [ - { - "@type": "AcceptResponseItem", - "result": "Accepted" - } - ], - "requestId": "REQ...", - "result": "Accepted" - } - } - }, - "status": "Accepted", - "type": "Creation" - // ... - } - ] -} -``` - -Pay particular attention to the `changes.0.request.content` property that contains the Response that was generated by the Enmeshed Runtime. - -Now you can accept the Relationship on the Templator Connector by calling the `PUT /api/v2/Relationships/{relationshipId}/Changes/{changeId}/Accept` route. - -When you synchronize the Requestor Connector (`POST /api/v2/Account/Sync`) you can see that the Relationship is now in status `Active` on both Connectors. diff --git a/_includes/scenarios/scenario-sc6.md b/_includes/scenarios/scenario-sc6.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc6.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc60.md b/_includes/scenarios/scenario-sc60.md deleted file mode 100644 index 0688af303..000000000 --- a/_includes/scenarios/scenario-sc60.md +++ /dev/null @@ -1,152 +0,0 @@ - - -This guide explains how to send and receive a Request over Enmeshed Messages using two Connectors, the first of which sends a Request to the second, and the second accepts or rejects the Request. It provides step-by-step instructions for validating the Request, creating and sending the Request, and accepting or rejecting the Request. - - - -{% include properties_list.html %} - -This guide assumes that you already have an active Relationship between two Connectors. If you don't, you should follow the [Requests over Templates]({% link _docs_scenarios/scenario-sc59.md %}) guide first. If you created a Relationship during the [Connector Tutorial]({% link _docs_integrate/01-connector-tutorial.md %}) this will also work. - -In this guide, the first Connector will be called Sender and the second Connector will be called Recipient. The Sender will send a Request to the Recipient. For the next steps you will need the Enmeshed Address of the Recipient. You can find it out by calling the `GET /api/v2/Relationships` route on the Sender Connector. - -```jsonc -[ - // ... - { - "id": "REL..", - "status": "Active", - // ... - "peer": "id1..." - } -] -``` - -{% include copy-notice description="Look for the correct Relationship and then take its `peer` property. Save it for later." %} - -## Check your Requests validity - -At first you should check if your Request is valid. You can do this by calling the `POST /api/v2/Requests/Outgoing/Validate` route on the Sender Connector with the following body. -For simplicity the Request inside the Template only contains an AuthenticationRequestItem, but you can use any [RequestItems]({% link _docs_integrate/62-request-items.md %}) you want. - -Even though the `peer` property is optional, it is recommended to specify it whenever possible. This allows additional validation rules to execute. When you are sending a Request over Messages you always know your peer. - -```json -{ - "content": { - "items": [ - { - "@type": "AuthenticationRequestItem", - "mustBeAccepted": true, - "title": "The Sender is asking for an authentication" - } - ] - }, - "peer": "" -} -``` - -## Create the Request - -To create the Request you have to call the `POST /api/v2/Requests/Outgoing` route on the Sender Connector. Use the following JSON in the Request body: - -```jsonc -{ - "content": { - // the content property of the payload in the step before - }, - "peer": "" -} -``` - -Note that the Request is currently in status `Draft`. - -{% include copy-notice description="Save the complete `content` of the response. You will need it in the next step." %} - -**Example response:** - -```jsonc -{ - "id": "REQ...", - "status": "Draft", - // ... - "content": { - "@type": "Request", - "id": "REQ...", - "items": [ - { - "@type": "AuthenticationRequestItem", - "mustBeAccepted": true, - "title": "The Sender is asking for an authentication" - } - ] - } -} -``` - -## Send the Request - -Now you have to send the Request to the Recipient. You can do so by calling the `POST /api/v2/Messages` route on the Sender Connector. Use the following JSON in the Request body: - -```jsonc -{ - "recipients": [""], - "content": { - // the content you copied in the step before - } -} -``` - -This is where the automation of the Enmeshed Runtime steps in and moves the Request from status `Draft` to status `Open`. You can observe this behaviour by querying the Request via `GET /api/v2/Requests/Outgoing/{id}` on the Sender Connector. - -## Fetch the Request - -In order to fetch the Message with the Request, you have to synchronize the Recipient Connector (`GET /api/v2/Account/Sync`). - -The Enmeshed Runtime will read the Message and create a new incoming Request. You can observe this by long polling the incoming Requests or by waiting for the `consumption.incomingRequestReceived` event. - -The long polling is done by calling the `GET /api/v2/Requests/Incoming` route. You can use the query params `source.reference=` and `status=ManualDecisionRequired` to filter for Requests that belong to the Message that contained the Request. - -For more information about the events you can head over to the [Connector Modules site]({% link _docs_integrate/03-connector-modules.md %}) and read about the [AMQP Publisher module]({% link _docs_integrate/03-connector-modules.md %}#amqppublisher) and the [WebhooksV2 module]({% link _docs_integrate/03-connector-modules.md %}#webhooksv2) that are propagating events. - -{% include copy-notice description="After you received the Request, save its `id` for the next step." %} - -## Answer the Request - -### Accept - -If you want to accept the Request you can do so by calling the `POST /api/v2/Requests/Incoming/{id}/Accept` route. You can use the `id` you saved in the previous step. In the payload you have to accept at least all RequestItems where the `mustBeAccepted` property is set to `true`. In case of the example Request the payload is the following: - -```jsonc -{ - "items": [ - { - "accept": true - } - ] -} -``` - -### Reject - -If you want to reject the Request you can do so by calling the `POST /api/v2/Requests/Incoming/{id}/Reject` route. You can use the `id` you saved in the previous step. In the payload you have to reject all RequestItems. In case of the example Request the payload is the following: - -```jsonc -{ - "items": [ - { - "accept": false - } - ] -} -``` - -### Runtime automation - -No matter if you accepted or rejected the Request: the response is similar. You can see that the Request moved to status `Decided`. This is where the Enmeshed Runtime steps in and handles the Request based on you decision. It will move the Request to status `Completed` and send the Response to the Sender via a Message. This behavior can be observed by querying the Request again after a few seconds (`GET /api/v2/Requests/Incoming/{id}`). - -## Sync the Response - -The Sender will receive the Response as a Message. Therefore you have to synchronize the Sender Connector (`GET /api/v2/Account/Sync`). - -After a few seconds the Request has moved to status `Completed` and the Response is available in the `response` property of the Request. You can observe this by querying the Request via `GET /api/v2/Requests/Outgoing/{id}` on the Sender Connector. diff --git a/_includes/scenarios/scenario-sc61.md b/_includes/scenarios/scenario-sc61.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc61.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc62.md b/_includes/scenarios/scenario-sc62.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc62.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc63.md b/_includes/scenarios/scenario-sc63.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc63.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc64.md b/_includes/scenarios/scenario-sc64.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc64.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc65.md b/_includes/scenarios/scenario-sc65.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc65.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc66.md b/_includes/scenarios/scenario-sc66.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc66.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc67.md b/_includes/scenarios/scenario-sc67.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc67.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc68.md b/_includes/scenarios/scenario-sc68.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc68.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc69.md b/_includes/scenarios/scenario-sc69.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc69.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc7.md b/_includes/scenarios/scenario-sc7.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc7.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc70.md b/_includes/scenarios/scenario-sc70.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc70.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc8.md b/_includes/scenarios/scenario-sc8.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc8.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/scenario-sc9.md b/_includes/scenarios/scenario-sc9.md deleted file mode 100644 index 27c2aef9d..000000000 --- a/_includes/scenarios/scenario-sc9.md +++ /dev/null @@ -1,21 +0,0 @@ - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis voluptas deserunt alias accusantium rem? Quaerat, temporibus alias fuga rerum unde dolor blanditiis quia incidunt modi rem, sequi, esse aut accusamus. - - - -{% include properties_list.html %} - - - -Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde nihil sequi ipsam blanditiis optio nulla quidem tempore sapiente nam, molestiae et voluptas ab harum quo incidunt reiciendis dolorum sed eligendi quos in itaque vel facilis. Rerum quia asperiores porro, odit laborum error voluptates repellat repellendus doloribus minima voluptate debitis libero nemo sit, dolorem consequatur expedita architecto! Molestiae, quae maxime ut iste ratione veniam velit asperiores. Earum corrupti architecto molestiae necessitatibus ullam modi beatae optio distinctio et labore, consectetur, repudiandae alias recusandae quas delectus placeat error laudantium quos, autem non nemo cum. Obcaecati iure maiores quas temporibus assumenda, qui veritatis necessitatibus. - - - -# Developer Corner - - -
                              - Flowchart -
                              {% include diagrams/Enmeshed_Scenarios.svg %}
                              -
                              diff --git a/_includes/scenarios/use/install-the-app.md b/_includes/scenarios/use/install-the-app.md new file mode 100644 index 000000000..35a5d2a44 --- /dev/null +++ b/_includes/scenarios/use/install-the-app.md @@ -0,0 +1,6 @@ +You can get the enmeshed App over your favorite app stores. Please find the links below: + +- [Enmeshed App on Apple AppStore](https://apps.apple.com/us/app/enmeshed/id1576693742#?platform=ipad) +- [Enmeshed App on Google PlayStore](https://play.google.com/store/apps/details?id=eu.enmeshed.app&hl=de&gl=US) + +Please drop us some feedback if you would like to see the enmeshed App on different stores as well. diff --git a/_includes/scenarios/use/secure-device-setup.md b/_includes/scenarios/use/secure-device-setup.md new file mode 100644 index 000000000..38da40b3e --- /dev/null +++ b/_includes/scenarios/use/secure-device-setup.md @@ -0,0 +1,35 @@ +We've summarized some tips for end-user device usage on this site. A great resource for more in-depth information about those tips is the [website of the Federal Office for Information Security (BSI, Bundesamt für Sicherheit in der Informationstechnik).](https://www.bsi.bund.de/EN/Themen/Verbraucherinnen-und-Verbraucher/Informationen-und-Empfehlungen/Cyber-Sicherheitsempfehlungen/Basisschutz-fuer-Computer-Mobilgeraete/Schutz-fuer-Mobilgeraete/Sicherheit-bei-Apps/sicherheit-bei-apps_node.html) + +We do not know every security guideline and tip out there, so please also check security tips of your operating systems like ([Android](https://www.android.com/intl/safety/), or [iOS](https://support.apple.com/guide/security/welcome/web)). + +Please also understand, that we - as anybody else - cannot give you any security guaranty of your device or our system. With this page we are addressing the most common risks of end-user device usage. Even if you follow those guidances, it might happen that a security incident happens. + +## Enable PIN/Password Authentication of Device + +The first line of defense for your device is a strong password or PIN. It is essential to enable this feature on your device to prevent unauthorized access. A secure password should be at least between eight and twelve characters long and contain a mixture of upper and lower case letters, numbers and symbols. Additionally, you should avoid using easily guessable passwords, such as birthdays or names. + +## Only One Person Should Use the Device + +It is recommended that only one person uses the device, and they should not share their password with anyone. Sharing passwords can lead to unauthorized access and compromise the security of the device. + +## Update the Operating System Regularly + +Operating system updates are crucial to maintaining the security of your device. These updates often include security patches that address vulnerabilities and bugs that could compromise your device's security. Therefore, it is important to keep your device's operating system up-to-date with the latest patches and updates. + +## Enable Hard-Disk Encryption + +Hard-disk encryption is a security feature that encrypts the data stored on your device's hard disk. This feature adds an extra layer of security to your device, making it difficult for anyone to access your data if the device is lost or stolen. + +## Enable a Virus Scanner + +Viruses and malware pose a significant threat to your device's security. It is important to enable a virus scanner on your device to protect it from potential threats. The virus scanner will scan your device for viruses and malware and alert you if it detects any threats. + +## Expert Corner + +### Rooted Devices + +Rooting a device involves gaining access to the device's root or administrative privileges. While rooting a device provides greater control over the device, it also exposes the device to potential security risks. Rooted devices are more vulnerable to malware and other security threats. Therefore, it is recommended to avoid rooting your device unless you have a good reason to do so. + +### Developer-enabled Phones + +Developer-enabled phones are designed for developers and come with additional features that allow them to customize the device's software. However, these features also make the device more vulnerable to potential security risks. Therefore, it is important to be cautious when using developer-enabled phones and avoid installing apps from untrusted sources. diff --git a/_includes/use-cases/use-case-a01.md b/_includes/use-cases/use-case-a01.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a01.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a02.md b/_includes/use-cases/use-case-a02.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a02.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a03.md b/_includes/use-cases/use-case-a03.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a03.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a04.md b/_includes/use-cases/use-case-a04.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a04.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a10.md b/_includes/use-cases/use-case-a10.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a10.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a11.md b/_includes/use-cases/use-case-a11.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a11.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a12.md b/_includes/use-cases/use-case-a12.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a12.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a13.md b/_includes/use-cases/use-case-a13.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a13.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a14.md b/_includes/use-cases/use-case-a14.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a14.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a15.md b/_includes/use-cases/use-case-a15.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a15.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a16.md b/_includes/use-cases/use-case-a16.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a16.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a17.md b/_includes/use-cases/use-case-a17.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a17.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-a18.md b/_includes/use-cases/use-case-a18.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-a18.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-anonymous-load-token-by-id-and-key-without-having-an-account.md b/_includes/use-cases/use-case-anonymous-load-token-by-id-and-key-without-having-an-account.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-anonymous-load-token-by-truncated-reference-without-having-an-account.md b/_includes/use-cases/use-case-anonymous-load-token-by-truncated-reference-without-having-an-account.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-ar1.md b/_includes/use-cases/use-case-ar1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ar1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ar2.md b/_includes/use-cases/use-case-ar2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ar2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-arp1.md b/_includes/use-cases/use-case-arp1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-arp1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-arp2.md b/_includes/use-cases/use-case-arp2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-arp2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-arp3.md b/_includes/use-cases/use-case-arp3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-arp3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-arp4.md b/_includes/use-cases/use-case-arp4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-arp4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-arp5.md b/_includes/use-cases/use-case-arp5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-arp5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-arp6.md b/_includes/use-cases/use-case-arp6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-arp6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-arp7.md b/_includes/use-cases/use-case-arp7.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-arp7.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ars1.md b/_includes/use-cases/use-case-ars1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ars1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ars2.md b/_includes/use-cases/use-case-ars2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ars2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ars3.md b/_includes/use-cases/use-case-ars3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ars3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ars4.md b/_includes/use-cases/use-case-ars4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ars4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ars5.md b/_includes/use-cases/use-case-ars5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ars5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ars6.md b/_includes/use-cases/use-case-ars6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ars6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ars7.md b/_includes/use-cases/use-case-ars7.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ars7.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-c01.md b/_includes/use-cases/use-case-c01.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-c01.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-c02.md b/_includes/use-cases/use-case-c02.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-c02.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-c03.md b/_includes/use-cases/use-case-c03.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-c03.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-c04.md b/_includes/use-cases/use-case-c04.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-c04.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-c05.md b/_includes/use-cases/use-case-c05.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-c05.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-c06.md b/_includes/use-cases/use-case-c06.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-c06.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-c07.md b/_includes/use-cases/use-case-c07.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-c07.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-consumption-accept-incoming-request.md b/_includes/use-cases/use-case-consumption-accept-incoming-request.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-check-if-incoming-request-can-be-accepted.md b/_includes/use-cases/use-case-consumption-check-if-incoming-request-can-be-accepted.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-check-if-incoming-request-can-be-rejected.md b/_includes/use-cases/use-case-consumption-check-if-incoming-request-can-be-rejected.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-check-if-outgoing-request-can-be-created.md b/_includes/use-cases/use-case-consumption-check-if-outgoing-request-can-be-created.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-a-blueprint-of-a-relationship-template.md b/_includes/use-cases/use-case-consumption-create-a-blueprint-of-a-relationship-template.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-a-shared-attribute-copy.md b/_includes/use-cases/use-case-consumption-create-a-shared-attribute-copy.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-an-attribute.md b/_includes/use-cases/use-case-consumption-create-an-attribute.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-and-complete-outgoing-request-from-relationship-template-response.md b/_includes/use-cases/use-case-consumption-create-and-complete-outgoing-request-from-relationship-template-response.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-automation-rule.md b/_includes/use-cases/use-case-consumption-create-automation-rule.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-draft.md b/_includes/use-cases/use-case-consumption-create-draft.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-mail.md b/_includes/use-cases/use-case-consumption-create-mail.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-outgoing-request.md b/_includes/use-cases/use-case-consumption-create-outgoing-request.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-relationship-template-out-of-blueprint.md b/_includes/use-cases/use-case-consumption-create-relationship-template-out-of-blueprint.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-requestitem-to-delete-relationship.md b/_includes/use-cases/use-case-consumption-create-requestitem-to-delete-relationship.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-requestitem-to-delete-shared-attribute.md b/_includes/use-cases/use-case-consumption-create-requestitem-to-delete-shared-attribute.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-attribute-deletion.md b/_includes/use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-attribute-deletion.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-relationship-deletion.md b/_includes/use-cases/use-case-consumption-create-requestitem-to-inform-about-forced-relationship-deletion.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-create-setting.md b/_includes/use-cases/use-case-consumption-create-setting.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-delete-attribute.md b/_includes/use-cases/use-case-consumption-delete-attribute.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-delete-attributelistener.md b/_includes/use-cases/use-case-consumption-delete-attributelistener.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-delete-automation-rule.md b/_includes/use-cases/use-case-consumption-delete-automation-rule.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-delete-blueprint.md b/_includes/use-cases/use-case-consumption-delete-blueprint.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-delete-draft.md b/_includes/use-cases/use-case-consumption-delete-draft.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-delete-setting.md b/_includes/use-cases/use-case-consumption-delete-setting.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-delete-shared-attribute.md b/_includes/use-cases/use-case-consumption-delete-shared-attribute.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-discards-outgoing-request.md b/_includes/use-cases/use-case-consumption-discards-outgoing-request.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-execute-a-relationshipattributequery.md b/_includes/use-cases/use-case-consumption-execute-a-relationshipattributequery.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-execute-a-thirdpartyattributequery.md b/_includes/use-cases/use-case-consumption-execute-a-thirdpartyattributequery.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-execute-an-identityattributequery.md b/_includes/use-cases/use-case-consumption-execute-an-identityattributequery.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-attribute.md b/_includes/use-cases/use-case-consumption-get-attribute.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-attributelistener.md b/_includes/use-cases/use-case-consumption-get-attributelistener.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-attributes-of-peer.md b/_includes/use-cases/use-case-consumption-get-attributes-of-peer.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-attributes-shared-to-peer.md b/_includes/use-cases/use-case-consumption-get-attributes-shared-to-peer.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-automation-rule.md b/_includes/use-cases/use-case-consumption-get-automation-rule.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-blueprint.md b/_includes/use-cases/use-case-consumption-get-blueprint.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-draft.md b/_includes/use-cases/use-case-consumption-get-draft.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-incoming-request.md b/_includes/use-cases/use-case-consumption-get-incoming-request.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-mail.md b/_includes/use-cases/use-case-consumption-get-mail.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-outgoing-request.md b/_includes/use-cases/use-case-consumption-get-outgoing-request.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-get-setting.md b/_includes/use-cases/use-case-consumption-get-setting.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-pin-mark-as-favorite-relationship.md b/_includes/use-cases/use-case-consumption-pin-mark-as-favorite-relationship.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-query-attributelisteners.md b/_includes/use-cases/use-case-consumption-query-attributelisteners.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-query-attributes.md b/_includes/use-cases/use-case-consumption-query-attributes.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-query-automation-rules.md b/_includes/use-cases/use-case-consumption-query-automation-rules.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-query-blueprints.md b/_includes/use-cases/use-case-consumption-query-blueprints.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-query-drafts.md b/_includes/use-cases/use-case-consumption-query-drafts.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-query-incoming-requests.md b/_includes/use-cases/use-case-consumption-query-incoming-requests.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-query-mails.md b/_includes/use-cases/use-case-consumption-query-mails.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-query-outgoing-requests.md b/_includes/use-cases/use-case-consumption-query-outgoing-requests.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-query-settings.md b/_includes/use-cases/use-case-consumption-query-settings.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-reject-incoming-request.md b/_includes/use-cases/use-case-consumption-reject-incoming-request.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-set-categorization-of-relationship.md b/_includes/use-cases/use-case-consumption-set-categorization-of-relationship.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-set-status-of-incoming-request-to-check-prerequisites.md b/_includes/use-cases/use-case-consumption-set-status-of-incoming-request-to-check-prerequisites.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-set-status-of-incoming-request-to-complete.md b/_includes/use-cases/use-case-consumption-set-status-of-incoming-request-to-complete.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-set-status-of-incoming-request-to-received.md b/_includes/use-cases/use-case-consumption-set-status-of-incoming-request-to-received.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-set-status-of-incoming-request-to-require-manual-decision.md b/_includes/use-cases/use-case-consumption-set-status-of-incoming-request-to-require-manual-decision.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-set-status-of-outgoing-request-to-complete.md b/_includes/use-cases/use-case-consumption-set-status-of-outgoing-request-to-complete.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-set-status-of-outgoing-request-to-sent.md b/_includes/use-cases/use-case-consumption-set-status-of-outgoing-request-to-sent.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-share-attribute.md b/_includes/use-cases/use-case-consumption-share-attribute.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-succeed-attribute.md b/_includes/use-cases/use-case-consumption-succeed-attribute.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-update-attribute.md b/_includes/use-cases/use-case-consumption-update-attribute.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-update-automation-rule.md b/_includes/use-cases/use-case-consumption-update-automation-rule.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-update-blueprint.md b/_includes/use-cases/use-case-consumption-update-blueprint.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-update-draft.md b/_includes/use-cases/use-case-consumption-update-draft.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-consumption-update-setting.md b/_includes/use-cases/use-case-consumption-update-setting.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-cr1.md b/_includes/use-cases/use-case-cr1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-cr1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-cr2.md b/_includes/use-cases/use-case-cr2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-cr2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-cr3.md b/_includes/use-cases/use-case-cr3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-cr3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-cr4.md b/_includes/use-cases/use-case-cr4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-cr4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-device-clear-all-profiles.md b/_includes/use-cases/use-case-device-clear-all-profiles.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-configure_-config-property.md b/_includes/use-cases/use-case-device-configure_-config-property.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-create-profile-with-new-identity.md b/_includes/use-cases/use-case-device-create-profile-with-new-identity.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-delete_-rest-endpoint.md b/_includes/use-cases/use-case-device-delete_-rest-endpoint.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-get-appruntime-health-status.md b/_includes/use-cases/use-case-device-get-appruntime-health-status.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-get-appruntime-version-information.md b/_includes/use-cases/use-case-device-get-appruntime-version-information.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-get-profile-by-enmeshed-address.md b/_includes/use-cases/use-case-device-get-profile-by-enmeshed-address.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-get-profile.md b/_includes/use-cases/use-case-device-get-profile.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-get-profiles.md b/_includes/use-cases/use-case-device-get-profiles.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-get-support-information.md b/_includes/use-cases/use-case-device-get-support-information.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-get-the-connector-health-status.md b/_includes/use-cases/use-case-device-get-the-connector-health-status.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-get-the-connector-version-information.md b/_includes/use-cases/use-case-device-get-the-connector-version-information.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-get-the-number-of-requests-and-the-status-codes-that-were-returned-by-the-connector.md b/_includes/use-cases/use-case-device-get-the-number-of-requests-and-the-status-codes-that-were-returned-by-the-connector.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-get_-rest-endpoint.md b/_includes/use-cases/use-case-device-get_-rest-endpoint.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-onboard-device-by-device-onboarding-token.md b/_includes/use-cases/use-case-device-onboard-device-by-device-onboarding-token.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-post_-rest-endpoint.md b/_includes/use-cases/use-case-device-post_-rest-endpoint.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-put_-rest-endpoint.md b/_includes/use-cases/use-case-device-put_-rest-endpoint.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-rename-profile.md b/_includes/use-cases/use-case-device-rename-profile.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-restore-identity-by-revovery-data.md b/_includes/use-cases/use-case-device-restore-identity-by-revovery-data.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-select-profile---profile-login---create-profile-session.md b/_includes/use-cases/use-case-device-select-profile---profile-login---create-profile-session.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-set-up-global-exception-handling.md b/_includes/use-cases/use-case-device-set-up-global-exception-handling.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-set-up-or-change-auto-logout-of-profile.md b/_includes/use-cases/use-case-device-set-up-or-change-auto-logout-of-profile.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-device-set-up-or-change-password-of-profile.md b/_includes/use-cases/use-case-device-set-up-or-change-password-of-profile.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-human-cancel_-action.md b/_includes/use-cases/use-case-human-cancel_-action.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-human-device_-external-usecase.md b/_includes/use-cases/use-case-human-device_-external-usecase.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-human-enter_-data-on-screen.md b/_includes/use-cases/use-case-human-enter_-data-on-screen.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-human-navigate-to-screen_-screen.md b/_includes/use-cases/use-case-human-navigate-to-screen_-screen.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-human-negative_-action.md b/_includes/use-cases/use-case-human-negative_-action.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-human-positive_-action.md b/_includes/use-cases/use-case-human-positive_-action.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-human-scan_-qr-code-on-different-device.md b/_includes/use-cases/use-case-human-scan_-qr-code-on-different-device.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-human-select_-item-on-screen.md b/_includes/use-cases/use-case-human-select_-item-on-screen.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-iar1.md b/_includes/use-cases/use-case-iar1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-iar1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-iar2.md b/_includes/use-cases/use-case-iar2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-iar2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-iar3.md b/_includes/use-cases/use-case-iar3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-iar3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-iar4.md b/_includes/use-cases/use-case-iar4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-iar4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-iar5.md b/_includes/use-cases/use-case-iar5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-iar5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra1.md b/_includes/use-cases/use-case-ra1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra10.md b/_includes/use-cases/use-case-ra10.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra10.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra11.md b/_includes/use-cases/use-case-ra11.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra11.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra12.md b/_includes/use-cases/use-case-ra12.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra12.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra13.md b/_includes/use-cases/use-case-ra13.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra13.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra14.md b/_includes/use-cases/use-case-ra14.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra14.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra15.md b/_includes/use-cases/use-case-ra15.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra15.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra2.md b/_includes/use-cases/use-case-ra2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra3.md b/_includes/use-cases/use-case-ra3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra4.md b/_includes/use-cases/use-case-ra4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra5.md b/_includes/use-cases/use-case-ra5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra6.md b/_includes/use-cases/use-case-ra6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra7.md b/_includes/use-cases/use-case-ra7.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra7.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra8.md b/_includes/use-cases/use-case-ra8.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra8.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ra9.md b/_includes/use-cases/use-case-ra9.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ra9.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ral1.md b/_includes/use-cases/use-case-ral1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ral1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ral2.md b/_includes/use-cases/use-case-ral2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ral2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ral3.md b/_includes/use-cases/use-case-ral3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ral3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rb1.md b/_includes/use-cases/use-case-rb1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rb1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rb2.md b/_includes/use-cases/use-case-rb2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rb2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rb3.md b/_includes/use-cases/use-case-rb3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rb3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rb4.md b/_includes/use-cases/use-case-rb4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rb4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rb5.md b/_includes/use-cases/use-case-rb5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rb5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rb6.md b/_includes/use-cases/use-case-rb6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rb6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rc1.md b/_includes/use-cases/use-case-rc1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rc1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rc2.md b/_includes/use-cases/use-case-rc2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rc2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rd1.md b/_includes/use-cases/use-case-rd1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rd1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rd2.md b/_includes/use-cases/use-case-rd2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rd2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rd3.md b/_includes/use-cases/use-case-rd3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rd3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rd4.md b/_includes/use-cases/use-case-rd4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rd4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rd5.md b/_includes/use-cases/use-case-rd5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rd5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rd6.md b/_includes/use-cases/use-case-rd6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rd6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rd7.md b/_includes/use-cases/use-case-rd7.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rd7.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rd8.md b/_includes/use-cases/use-case-rd8.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rd8.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rdr1.md b/_includes/use-cases/use-case-rdr1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rdr1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rdr2.md b/_includes/use-cases/use-case-rdr2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rdr2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rdr3.md b/_includes/use-cases/use-case-rdr3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rdr3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rdr4.md b/_includes/use-cases/use-case-rdr4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rdr4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rdr5.md b/_includes/use-cases/use-case-rdr5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rdr5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rf1.md b/_includes/use-cases/use-case-rf1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rf1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rf2.md b/_includes/use-cases/use-case-rf2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rf2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rf3.md b/_includes/use-cases/use-case-rf3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rf3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rf4.md b/_includes/use-cases/use-case-rf4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rf4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rf5.md b/_includes/use-cases/use-case-rf5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rf5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rf6.md b/_includes/use-cases/use-case-rf6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rf6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rf7.md b/_includes/use-cases/use-case-rf7.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rf7.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rf8.md b/_includes/use-cases/use-case-rf8.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rf8.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ri1.md b/_includes/use-cases/use-case-ri1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ri1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rir1.md b/_includes/use-cases/use-case-rir1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rir1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rir10.md b/_includes/use-cases/use-case-rir10.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rir10.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rir2.md b/_includes/use-cases/use-case-rir2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rir2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rir3.md b/_includes/use-cases/use-case-rir3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rir3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rir4.md b/_includes/use-cases/use-case-rir4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rir4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rir5.md b/_includes/use-cases/use-case-rir5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rir5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rir6.md b/_includes/use-cases/use-case-rir6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rir6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rir7.md b/_includes/use-cases/use-case-rir7.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rir7.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rir8.md b/_includes/use-cases/use-case-rir8.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rir8.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rir9.md b/_includes/use-cases/use-case-rir9.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rir9.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rk1.md b/_includes/use-cases/use-case-rk1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rk1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rk2.md b/_includes/use-cases/use-case-rk2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rk2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rk3.md b/_includes/use-cases/use-case-rk3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rk3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rk4.md b/_includes/use-cases/use-case-rk4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rk4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rk5.md b/_includes/use-cases/use-case-rk5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rk5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rm1.md b/_includes/use-cases/use-case-rm1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rm1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rm2.md b/_includes/use-cases/use-case-rm2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rm2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rm3.md b/_includes/use-cases/use-case-rm3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rm3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rm4.md b/_includes/use-cases/use-case-rm4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rm4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rm5.md b/_includes/use-cases/use-case-rm5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rm5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ror1.md b/_includes/use-cases/use-case-ror1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ror1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ror2.md b/_includes/use-cases/use-case-ror2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ror2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ror3.md b/_includes/use-cases/use-case-ror3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ror3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ror4.md b/_includes/use-cases/use-case-ror4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ror4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ror5.md b/_includes/use-cases/use-case-ror5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ror5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ror6.md b/_includes/use-cases/use-case-ror6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ror6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ror7.md b/_includes/use-cases/use-case-ror7.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ror7.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ror8.md b/_includes/use-cases/use-case-ror8.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ror8.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rr1.md b/_includes/use-cases/use-case-rr1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rr1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rr10.md b/_includes/use-cases/use-case-rr10.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rr10.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rr2.md b/_includes/use-cases/use-case-rr2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rr2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rr3.md b/_includes/use-cases/use-case-rr3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rr3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rr4.md b/_includes/use-cases/use-case-rr4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rr4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rr5.md b/_includes/use-cases/use-case-rr5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rr5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rr6.md b/_includes/use-cases/use-case-rr6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rr6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rr7.md b/_includes/use-cases/use-case-rr7.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rr7.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rr8.md b/_includes/use-cases/use-case-rr8.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rr8.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rr9.md b/_includes/use-cases/use-case-rr9.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rr9.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rri1.md b/_includes/use-cases/use-case-rri1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rri1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rri2.md b/_includes/use-cases/use-case-rri2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rri2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rri3.md b/_includes/use-cases/use-case-rri3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rri3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rs1.md b/_includes/use-cases/use-case-rs1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rs1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rs2.md b/_includes/use-cases/use-case-rs2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rs2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rs3.md b/_includes/use-cases/use-case-rs3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rs3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rs4.md b/_includes/use-cases/use-case-rs4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rs4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rs5.md b/_includes/use-cases/use-case-rs5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rs5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rt1.md b/_includes/use-cases/use-case-rt1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rt1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rt2.md b/_includes/use-cases/use-case-rt2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rt2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rt3.md b/_includes/use-cases/use-case-rt3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rt3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rt4.md b/_includes/use-cases/use-case-rt4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rt4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rt5.md b/_includes/use-cases/use-case-rt5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rt5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rt6.md b/_includes/use-cases/use-case-rt6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rt6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-rt7.md b/_includes/use-cases/use-case-rt7.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-rt7.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ru1.md b/_includes/use-cases/use-case-ru1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ru1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ru2.md b/_includes/use-cases/use-case-ru2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ru2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ru3.md b/_includes/use-cases/use-case-ru3.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ru3.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ru4.md b/_includes/use-cases/use-case-ru4.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ru4.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ru5.md b/_includes/use-cases/use-case-ru5.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ru5.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ru6.md b/_includes/use-cases/use-case-ru6.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ru6.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ru7.md b/_includes/use-cases/use-case-ru7.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ru7.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ru8.md b/_includes/use-cases/use-case-ru8.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ru8.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ru9.md b/_includes/use-cases/use-case-ru9.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ru9.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ry1.md b/_includes/use-cases/use-case-ry1.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ry1.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-ry2.md b/_includes/use-cases/use-case-ry2.md deleted file mode 100644 index fc3f95127..000000000 --- a/_includes/use-cases/use-case-ry2.md +++ /dev/null @@ -1 +0,0 @@ -{% include properties_list.html %} diff --git a/_includes/use-cases/use-case-transport-accept-relationship-change.md b/_includes/use-cases/use-case-transport-accept-relationship-change.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-check-identity-by-address.md b/_includes/use-cases/use-case-transport-check-identity-by-address.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-challenge.md b/_includes/use-cases/use-case-transport-create-challenge.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-device.md b/_includes/use-cases/use-case-transport-create-device.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-identity-recovery-data.md b/_includes/use-cases/use-case-transport-create-identity-recovery-data.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-own-relationshiptemplate.md b/_includes/use-cases/use-case-transport-create-own-relationshiptemplate.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-own-token.md b/_includes/use-cases/use-case-transport-create-own-token.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-qrcode-for-file.md b/_includes/use-cases/use-case-transport-create-qrcode-for-file.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-qrcode-for-own-relationship-template.md b/_includes/use-cases/use-case-transport-create-qrcode-for-own-relationship-template.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-relationship-with-relationshiptemplate.md b/_includes/use-cases/use-case-transport-create-relationship-with-relationshiptemplate.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-token-for-file.md b/_includes/use-cases/use-case-transport-create-token-for-file.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-token-for-own-relationship-template.md b/_includes/use-cases/use-case-transport-create-token-for-own-relationship-template.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-token-qrcode-for-file.md b/_includes/use-cases/use-case-transport-create-token-qrcode-for-file.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-create-token-qrcode-for-own-relationship-template.md b/_includes/use-cases/use-case-transport-create-token-qrcode-for-own-relationship-template.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-delete-device-which-is-not-onboarded-yet.md b/_includes/use-cases/use-case-transport-delete-device-which-is-not-onboarded-yet.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-delete-identity-from-backbone.md b/_includes/use-cases/use-case-transport-delete-identity-from-backbone.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-disable-automated-datawallet-synchronization-with-backbone.md b/_includes/use-cases/use-case-transport-disable-automated-datawallet-synchronization-with-backbone.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-download-file-of-attachment.md b/_includes/use-cases/use-case-transport-download-file-of-attachment.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-download-file.md b/_includes/use-cases/use-case-transport-download-file.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-enable-automated-datawallet-synchronization-with-backbone.md b/_includes/use-cases/use-case-transport-enable-automated-datawallet-synchronization-with-backbone.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-attributes-for-relationship.md b/_includes/use-cases/use-case-transport-get-attributes-for-relationship.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-currently-used-device.md b/_includes/use-cases/use-case-transport-get-currently-used-device.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-currently-used-identity.md b/_includes/use-cases/use-case-transport-get-currently-used-identity.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-device-onboarding-info.md b/_includes/use-cases/use-case-transport-get-device-onboarding-info.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-device-onboarding-token.md b/_includes/use-cases/use-case-transport-get-device-onboarding-token.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-device.md b/_includes/use-cases/use-case-transport-get-device.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-file-metadata-of-attachment.md b/_includes/use-cases/use-case-transport-get-file-metadata-of-attachment.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-message-by-messageid.md b/_includes/use-cases/use-case-transport-get-message-by-messageid.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-or-load-file.md b/_includes/use-cases/use-case-transport-get-or-load-file.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-own-file.md b/_includes/use-cases/use-case-transport-get-own-file.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-qrcode-for-single-token.md b/_includes/use-cases/use-case-transport-get-qrcode-for-single-token.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-relationship-by-address.md b/_includes/use-cases/use-case-transport-get-relationship-by-address.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-relationship-by-relationshipid.md b/_includes/use-cases/use-case-transport-get-relationship-by-relationshipid.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-relationship-template.md b/_includes/use-cases/use-case-transport-get-relationship-template.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-synchronization-status-with-backbone.md b/_includes/use-cases/use-case-transport-get-synchronization-status-with-backbone.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-get-token-by-tokenid.md b/_includes/use-cases/use-case-transport-get-token-by-tokenid.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-load-item-from-truncated-reference.md b/_includes/use-cases/use-case-transport-load-item-from-truncated-reference.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-load-relationship-template-created-by-others.md b/_includes/use-cases/use-case-transport-load-relationship-template-created-by-others.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-load-token-created-by-others.md b/_includes/use-cases/use-case-transport-load-token-created-by-others.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-notify-backbone-of-unauthorized-profile-access.md b/_includes/use-cases/use-case-transport-notify-backbone-of-unauthorized-profile-access.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-query-devices.md b/_includes/use-cases/use-case-transport-query-devices.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-query-files.md b/_includes/use-cases/use-case-transport-query-files.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-query-messages.md b/_includes/use-cases/use-case-transport-query-messages.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-query-relationship-templates.md b/_includes/use-cases/use-case-transport-query-relationship-templates.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-query-relationships.md b/_includes/use-cases/use-case-transport-query-relationships.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-query-tokens-by-parameters.md b/_includes/use-cases/use-case-transport-query-tokens-by-parameters.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-register-pushnotificationtoken-at-backbone.md b/_includes/use-cases/use-case-transport-register-pushnotificationtoken-at-backbone.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-reject-relationship-change.md b/_includes/use-cases/use-case-transport-reject-relationship-change.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-remove-profile-from-device.md b/_includes/use-cases/use-case-transport-remove-profile-from-device.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-revoke-relationship-change.md b/_includes/use-cases/use-case-transport-revoke-relationship-change.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-send-message-to-recipients.md b/_includes/use-cases/use-case-transport-send-message-to-recipients.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-synchronize-datawallet-updates-to-backbone.md b/_includes/use-cases/use-case-transport-synchronize-datawallet-updates-to-backbone.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-synchronize-updates-of-backbone.md b/_includes/use-cases/use-case-transport-synchronize-updates-of-backbone.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-trigger-device-deletion-of-onboarded-device.md b/_includes/use-cases/use-case-transport-trigger-device-deletion-of-onboarded-device.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-update-device.md b/_includes/use-cases/use-case-transport-update-device.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-upload-own-file.md b/_includes/use-cases/use-case-transport-upload-own-file.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-transport-validate-challenge.md b/_includes/use-cases/use-case-transport-validate-challenge.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-user_interface-get-app-version-information.md b/_includes/use-cases/use-case-user_interface-get-app-version-information.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-user_interface-refresh-screen-screen.md b/_includes/use-cases/use-case-user_interface-refresh-screen-screen.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-user_interface-show-screen-screen.md b/_includes/use-cases/use-case-user_interface-show-screen-screen.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-user_interface-start-app-with-parameters-by-using-link.md b/_includes/use-cases/use-case-user_interface-start-app-with-parameters-by-using-link.md new file mode 100644 index 000000000..e69de29bb diff --git a/_includes/use-cases/use-case-user_interface-start-app-without-parameters.md b/_includes/use-cases/use-case-user_interface-start-app-without-parameters.md new file mode 100644 index 000000000..e69de29bb diff --git a/_pages/about.md b/_pages/about.md index 146e97ded..2277c2b13 100644 --- a/_pages/about.md +++ b/_pages/about.md @@ -1,6 +1,6 @@ --- permalink: /about -title: "About Enmeshed" +title: "About enmeshed" --- Enmeshed is an open source project all about digitalization of identities. diff --git a/_pages/contribute.md b/_pages/contribute.md index 7b32f4a44..b068ae3f3 100644 --- a/_pages/contribute.md +++ b/_pages/contribute.md @@ -1,11 +1,11 @@ --- permalink: /contribute -title: Contribute to Enmeshed +title: Contribute to enmeshed --- -No matter your expertise - we love to hear your feedback and your opinion about Enmeshed! +No matter your expertise - we love to hear your feedback and your opinion about enmeshed! -Additionally, there are multiple ways how you can contribute to Enmeshed: +Additionally, there are multiple ways how you can contribute to enmeshed: - Inform us, by providing feedback to our solutions. - Enlighten us, by [filing bug reports](https://github.com/nmshd/feedback/issues/new/choose) of bugs you encountered diff --git a/_pages/integrate.md b/_pages/integrate.md deleted file mode 100644 index 3046540fd..000000000 --- a/_pages/integrate.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Integrate Enmeshed -layout: collection -permalink: /integrate -sidebar: - - title: "Integrate Enmeshed" - nav: "docs_integrate" ---- - -Here you find some help about how to integrate Enmeshed. diff --git a/_pages/privacy.md b/_pages/privacy.md index d5aa663a3..444e6655b 100644 --- a/_pages/privacy.md +++ b/_pages/privacy.md @@ -18,7 +18,7 @@ Wenn Sie Fragen zum Datenschutz haben, schreiben Sie uns bitte eine E-Mail oder j&s-soft GmbH\\ Datenschutz\\ Max-Jarecki-Str. 21\\ -`datenschutz@js-soft.com`\\ +`datenschutz@js-soft.com` Sollten Sie per E-Mail mit uns Kontakt aufnehmen, werden die mitgeteilten Daten von uns gespeichert, um Ihr Anliegen zu bearbeiten. diff --git a/_pages/use.md b/_pages/use.md deleted file mode 100644 index 5e2e69d00..000000000 --- a/_pages/use.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Use Enmeshed -layout: collection -permalink: /use -published: false ---- - -You can get the Enmeshed App over your favorite app stores. Please find the links below: - -- [Enmeshed App on Apple AppStore](https://apps.apple.com/us/app/enmeshed/id1576693742#?platform=ipad) -- [Enmeshed App on Google PlayStore](https://play.google.com/store/apps/details?id=eu.enmeshed.app&hl=de&gl=US) - -Please drop us some feedback if you would like to see the Enmeshed App on different stores as well. diff --git a/_posts/2021-11-01-introducing-enmeshed.md b/_posts/2021-11-01-introducing-enmeshed.md index 4c79c074e..92f88d9f0 100644 --- a/_posts/2021-11-01-introducing-enmeshed.md +++ b/_posts/2021-11-01-introducing-enmeshed.md @@ -1,5 +1,5 @@ --- -title: "Introducing Enmeshed" +title: "Introducing enmeshed" date: 2021-11-01 categories: - blog @@ -10,10 +10,10 @@ tags: Hello everyone! -We are delighted to introduce a new open source project named Enmeshed. It is the home of software libraries, components, ideas, discussions, and many more in the area of digitalization. +We are delighted to introduce a new open source project named enmeshed. It is the home of software libraries, components, ideas, discussions, and many more in the area of digitalization. We think the world is ready for a whole new adventure of digital communication, easy and secure data sharing, and empowering the user - while using state-of-the-art technologies and proven architectures without forgetting the user experience, integration, processes, security or privacy. This site is still under construction and as such, we will update it regularly in the coming weeks. -Your Enmeshed Team +Your enmeshed Team diff --git a/_posts/2022-03-02-webhooks-v2-connector-module.md b/_posts/2022-03-02-webhooks-v2-connector-module.md index 0bbb805ba..1b415e8c2 100644 --- a/_posts/2022-03-02-webhooks-v2-connector-module.md +++ b/_posts/2022-03-02-webhooks-v2-connector-module.md @@ -22,12 +22,12 @@ We still recommend to switch to the new Module as soon as possible as the old Mo ## The new Module -The new Module gives you the possibility to define so called `triggers`, which represent the names of the events we already send Connector-internally (e.g. `transport.messageReceived`). The Module then listens to the configured events and simply sends the event data to the configured URL. For a detailed documentation of how to configure the new webhooks Module, see [the Connector configuration docs]({% link _docs_integrate/11-connector-configuration.md %}#webhooksv2). +The new Module gives you the possibility to define so called `triggers`, which represent the names of the events we already send Connector-internally (e.g. `transport.messageReceived`). The Module then listens to the configured events and simply sends the event data to the configured URL. For a detailed documentation of how to configure the new webhooks Module, see [the Connector configuration docs]({% link _docs_operate/configuration.md %}#webhooksv2). While in the old Module you could configure an interval in which the new information is published, the new Module calls the webhook immediately after the configured event was triggered. _Do you miss the possibility to configure a publish interval? Raise a feature request in our [feedback repository](https://github.com/nmshd/feedback/issues/new/choose), and we will see what we can do about it._ -Since you can use arbitrary events as triggers now, the new Module gives you much more points at which you can integrate. We provide a [list of these events]({% link _docs_integrate/32-connector-events.md %}). Note that the list will grow in the next weeks, so check the docs from time to time. If you wish for a specific event, you can also [raise a feature request](https://github.com/nmshd/feedback/issues/new/choose). +Since you can use arbitrary events as triggers now, the new Module gives you much more points at which you can integrate. We provide a [list of these events]({% link _docs_integrate/connector-events.md %}). Note that the list will grow in the next weeks, so check the docs from time to time. If you wish for a specific event, you can also [raise a feature request](https://github.com/nmshd/feedback/issues/new/choose). ## Migration @@ -62,4 +62,4 @@ The data sent to the given URL has changed though: } ``` -In the POST body you will receive the `trigger` of the webhook (which is the name of the event), as well as the `data` of the event. Both are documented in the [Connector Events]({% link _docs_integrate/32-connector-events.md %}) section. +In the POST body you will receive the `trigger` of the webhook (which is the name of the event), as well as the `data` of the event. Both are documented in the [Connector Events]({% link _docs_integrate/connector-events.md %}) section. diff --git a/_posts/2022-06-27-announcing-enmeshed-v2.md b/_posts/2022-06-27-announcing-enmeshed-v2.md index 68b1f9dbd..e6e2bd64a 100644 --- a/_posts/2022-06-27-announcing-enmeshed-v2.md +++ b/_posts/2022-06-27-announcing-enmeshed-v2.md @@ -1,5 +1,5 @@ --- -title: "Announcing Enmeshed V2" +title: "Announcing enmeshed V2" date: 2022-06-27 categories: - blog @@ -8,19 +8,19 @@ tags: - v2 --- -We are currently working on Enmeshed version 2. We got a lot of feedback from the community and so we are improving Enmeshed in different areas to tackle it. +We are currently working on enmeshed version 2. We got a lot of feedback from the community and so we are improving enmeshed in different areas to tackle it. ## Attributes -Attributes in Enmeshed have been a huge pain point during the integration using the Enmeshed Connector but also while using the Enmeshed App as an end User. For Enmeshed V2 we are working on a new way to handle, store and transfer Attributes. +Attributes in enmeshed have been a huge pain point during the integration using the enmeshed Connector but also while using the enmeshed App as an end User. For enmeshed V2 we are working on a new way to handle, store and transfer Attributes. For an overview of the changes regarding Attributes, please refer to the [corresponding blog post]({% post_url 2022-06-30-announcing-enmeshed-v2-attributes %}). ## Requests -Requests in Enmeshed always defined a way to exchange structured data. In Enmeshed V1 this was exclusively about Attributes. Requests in V2 will also be able to exchange data without persisting them to the User's Attributes, e.g. using a form. +Requests in enmeshed always defined a way to exchange structured data. In enmeshed V1 this was exclusively about Attributes. Requests in V2 will also be able to exchange data without persisting them to the User's Attributes, e.g. using a form. -In Enmeshed V1 `RelationshipTemplates` and `RequestMails` each defined their own way for exchanging Attributes. Further only the App could process them. When integrating via the Connector you had to manually process all Requests. For V2 we pulled the Request handling [from the User-Experience Layer to the Consumption layer]({% link _docs_explore/01-introduction.md %}#layers). This enabled us to provide you with an API in the Connector to work with Requests. It also helped us making Request handling more flexible and easier to use. +In enmeshed V1 `RelationshipTemplates` and `RequestMails` each defined their own way for exchanging Attributes. Further only the App could process them. When integrating via the Connector you had to manually process all Requests. For V2 we pulled the Request handling [from the User-Experience Layer to the Consumption layer]({% link _docs_explore/01-how_does_enmeshed_work.md %}#layers). This enabled us to provide you with an API in the Connector to work with Requests. It also helped us making Request handling more flexible and easier to use. For an overview of Requests, please refer to the [corresponding blog post]({% post_url 2022-07-13-announcing-enmeshed-v2-requests %}). @@ -34,7 +34,7 @@ If you need a compatibility of V1 and V2, please contact us [here](https://www.j ## Getting Prereleases -During the development of Enmeshed V2 we will continue to publish new versions of the Connector and the app. +During the development of enmeshed V2 we will continue to publish new versions of the Connector and the app. If you are curious you can already check out one of the early [Connector versions](https://github.com/nmshd/cns-connector/pkgs/container/connector/versions) tagged as `alpha`. Keep in mind that these are highly experimental and shouldn't be used in production scenarios, because there can be API changes at any time. diff --git a/_posts/2022-06-30-announcing-enmeshed-v2-attributes.md b/_posts/2022-06-30-announcing-enmeshed-v2-attributes.md index d02a93386..de3576229 100644 --- a/_posts/2022-06-30-announcing-enmeshed-v2-attributes.md +++ b/_posts/2022-06-30-announcing-enmeshed-v2-attributes.md @@ -1,5 +1,5 @@ --- -title: "Announcing Enmeshed V2 Attributes" +title: "Announcing enmeshed V2 Attributes" date: 2022-06-30 categories: - blog @@ -10,13 +10,13 @@ tags: toc: true --- -This is one of the blog posts regarding Enmeshed V2. For an overview of all V2 blog posts, please refer to the [V2 announcement blog post]({% post_url 2022-06-27-announcing-enmeshed-v2 %}). +This is one of the blog posts regarding enmeshed V2. For an overview of all V2 blog posts, please refer to the [V2 announcement blog post]({% post_url 2022-06-27-announcing-enmeshed-v2 %}). In this blog post we want to talk about pain points of the V1 Attributes and how we reworked the Attributes to tackle them. ## V1 Attributes -So far, Attributes in Enmeshed have only been name/value pairs for Identities, e.g.: +So far, Attributes in enmeshed have only been name/value pairs for Identities, e.g.: ```json { @@ -84,4 +84,4 @@ Below you can find the major changes of the new Attribute handling: ## Conclusion -All in all, many changes which will make the Attribute management of and between Identities much more mature. Together with a [new way of handling Requests (and Responses)]({% post_url 2022-07-13-announcing-enmeshed-v2-requests %}), we think Enmeshed has a much more holistic feature set. +All in all, many changes which will make the Attribute management of and between Identities much more mature. Together with a [new way of handling Requests (and Responses)]({% post_url 2022-07-13-announcing-enmeshed-v2-requests %}), we think enmeshed has a much more holistic feature set. diff --git a/_posts/2022-07-13-announcing-enmeshed-v2-requests.md b/_posts/2022-07-13-announcing-enmeshed-v2-requests.md index 91d2311c2..485ef412b 100644 --- a/_posts/2022-07-13-announcing-enmeshed-v2-requests.md +++ b/_posts/2022-07-13-announcing-enmeshed-v2-requests.md @@ -1,5 +1,5 @@ --- -title: "Announcing Enmeshed v2 Requests" +title: "Announcing enmeshed v2 Requests" date: 2022-07-13 categories: - blog @@ -10,23 +10,23 @@ tags: toc: true --- -This is one of the blog posts regarding Enmeshed v2. For an overview of all Enmeshed v2 blog posts, please refer to the [Enmeshed v2 announcement blog post]({% post_url 2022-06-27-announcing-enmeshed-v2 %}). +This is one of the blog posts regarding enmeshed v2. For an overview of all enmeshed v2 blog posts, please refer to the [enmeshed v2 announcement blog post]({% post_url 2022-06-27-announcing-enmeshed-v2 %}). This blog post requires a superficial understanding of the new Attribute handling. Please refer to the [corresponding blog post]({% post_url 2022-06-30-announcing-enmeshed-v2-attributes %}) to learn more about it if you are not yet familiar with it. -This blog post describes what Requests are in the Enmeshed universe and how they are used to exchange Attributes and establish Relationships. +This blog post describes what Requests are in the enmeshed universe and how they are used to exchange Attributes and establish Relationships. -When we mention "the App" or "the Connector" in this blog post, we mean the official [Enmeshed App]({% link _docs_explore/50-app.md %}) and [Enmeshed Connector]({% link _docs_explore/52-connector.md %}). +When we mention "the App" or "the Connector" in this blog post, we mean the official [enmeshed App]({% link _docs_explore/50-app.md %}) and [enmeshed Connector]({% link _docs_explore/52-connector.md %}). Keep in mind that we cannot describe all details in this blog post. Refer to the V2 documentation for further information about how Requests are working "under the hood". ## Requests -Requests in Enmeshed always defined a way to exchange structured data. In Enmeshed V1 this was exclusively about exchanging structured Attributes with its AttributesChangeRequest and AttributesShareRequest. In V1 there also was no defined response structure, as well as no track record of Requests and their status. Thus, V1 Requests were quite limited. +Requests in enmeshed always defined a way to exchange structured data. In enmeshed V1 this was exclusively about exchanging structured Attributes with its AttributesChangeRequest and AttributesShareRequest. In V1 there also was no defined response structure, as well as no track record of Requests and their status. Thus, V1 Requests were quite limited. Requests in V2 extend the Request featureset by providing more structured Requests, as well as Requests for unstructured data. Additionally, they are not fixed to the Identitity's Attributes. One example is a form you can send to a User, which contains some questions in natural language, which does not affect the Attributes. Another example is a Multi-Factor-Authentication Request which might be available in the future. -In Enmeshed V1 `RelationshipTemplates` and `RequestMails` each defined their own way for exchanging Attributes. Further only the App could process them. When integrating via the Connector you had to manually process all Requests. For V2 we pulled the Request handling [from the User-Experience Layer to the Consumption layer]({% link _docs_explore/01-introduction.md %}#layers). This enabled us to provide you with an API in the Connector to work with Requests. It also helped us making Request handling more flexible and easier to use. +In enmeshed V1 `RelationshipTemplates` and `RequestMails` each defined their own way for exchanging Attributes. Further only the App could process them. When integrating via the Connector you had to manually process all Requests. For V2 we pulled the Request handling [from the User-Experience Layer to the Consumption layer]({% link _docs_explore/01-how_does_enmeshed_work.md %}#layers). This enabled us to provide you with an API in the Connector to work with Requests. It also helped us making Request handling more flexible and easier to use. ## Exchanging Requests @@ -52,12 +52,12 @@ When the RelationshipTemplate is scanned by the App, the Request (defined by the ### Messages -Messages can now be used to exchange the same Requests that are used to enter a Relationship. A Message can now simply contain the content `{ "@type": "Request", ... }` or `{ "@type": "Response", ... }`. The `RequestMail`, `AttributesChangeRequest` and `AttributesShareRequest` types are now deprecated and will be removed in the future. Because the Enmeshed V2 App will stop processing these types we strictly advise against further using them. +Messages can now be used to exchange the same Requests that are used to enter a Relationship. A Message can now simply contain the content `{ "@type": "Request", ... }` or `{ "@type": "Response", ... }`. The `RequestMail`, `AttributesChangeRequest` and `AttributesShareRequest` types are now deprecated and will be removed in the future. Because the enmeshed V2 App will stop processing these types we strictly advise against further using them. So far, only one Request can be sent with one Message. This is intentional, as with RequestItemGroups and RequestItems, various data or actions can be requested. If there is the need to submit multiple Requests, send multiple Messages. ## Modules managing Requests -The main component powering the Enmeshed App and the Enmeshed Connector is the Runtime. The Runtime is modular and we decided to use this to provide two Modules for managing Requests: the [Request Module]({% link _docs_explore/61-runtime.md %}#request-module) and the [Decider Module]({% link _docs_explore/61-runtime.md %}#decider-module). +The main component powering the enmeshed App and the enmeshed Connector is the Runtime. The Runtime is modular and we decided to use this to provide two Modules for managing Requests: the [Request Module]({% link _docs_explore/61-runtime.md %}#request-module) and the [Decider Module]({% link _docs_explore/61-runtime.md %}#decider-module). The Decider Module is in its early stages and we will inform you about it in the future. diff --git a/_posts/2022-10-06-road-to-enmeshed-v2.md b/_posts/2022-10-06-road-to-enmeshed-v2.md index 7a74cca67..75303cf9f 100644 --- a/_posts/2022-10-06-road-to-enmeshed-v2.md +++ b/_posts/2022-10-06-road-to-enmeshed-v2.md @@ -1,5 +1,5 @@ --- -title: "The (bumpy) road to Enmeshed V2" +title: "The (bumpy) road to enmeshed V2" date: 2022-10-06 categories: - blog @@ -10,16 +10,16 @@ tags: Hey there, -as we've already communicated in the previous blogs, we would like to release Enmeshed version 2 soon. As it is incompatible with version 1, the switch to version 2 is unfortunately not as straightforward as we'd hoped. +as we've already communicated in the previous blogs, we would like to release enmeshed version 2 soon. As it is incompatible with version 1, the switch to version 2 is unfortunately not as straightforward as we'd hoped. -We've had many discussions about the pros and cons of different cut-over approaches and in the end decided to go with a very radical one: In short, the Enmeshed App, Backbone and Connector (V1) will be updated to V2 and therefore be incompatible with old data. +We've had many discussions about the pros and cons of different cut-over approaches and in the end decided to go with a very radical one: In short, the enmeshed App, Backbone and Connector (V1) will be updated to V2 and therefore be incompatible with old data. The users and organizations we know of so far had no objections against this approach, and thus we keep the cut-over as easy as possible. We apologize for any inconveniences this might cause. ### So how can you get up to speed with Version2? -- Have a look at the updated [Connector Tutorial]({% link _docs_integrate/01-connector-tutorial.md %}) and the [migration guide]({% link _docs_integrate/50-connector-migration-v2.md %}). -- There will be a public beta of the Enmeshed App (V2) in the Apple and Google app stores soon. Be aware that the public beta will not support existing V1 profiles and thus the Enmeshed App's data should be wiped when using V2. -- There is a beta tag of the Enmeshed Connector Docker image which you can set up by yourself. +- Have a look at the updated [Connector Tutorial]({% link _docs_integrate/integration-example.md %}). +- There will be a public beta of the enmeshed App (V2) in the Apple and Google app stores soon. Be aware that the public beta will not support existing V1 profiles and thus the enmeshed App's data should be wiped when using V2. +- There is a beta tag of the enmeshed Connector Docker image which you can set up by yourself. -Your Enmeshed Team +Your enmeshed Team diff --git a/_posts/2023-04-06-announcing-ferretdb-compatibility.md b/_posts/2023-04-06-announcing-ferretdb-compatibility.md index aba9b9b33..09c03ac32 100644 --- a/_posts/2023-04-06-announcing-ferretdb-compatibility.md +++ b/_posts/2023-04-06-announcing-ferretdb-compatibility.md @@ -1,5 +1,5 @@ --- -title: "FerretDB compatibility for the Enmeshed Connector" +title: "FerretDB compatibility for the enmeshed Connector" date: 2023-04-06 categories: - blog @@ -8,9 +8,9 @@ tags: - connector --- -At Enmeshed, we believe in the importance of open-source software and the freedom it gives developers. +At enmeshed, we believe in the importance of open-source software and the freedom it gives developers. -MongoDB is licensed under the Server Side Public License (SSPL) and from the start of our project we knew that we needed to find an alternative database solution for the Enmeshed Connector. After researching and testing several options, we found [FerretDB](https://www.ferretdb.io/) to be a suitable truly open source replacement for MongoDB. +MongoDB is licensed under the Server Side Public License (SSPL) and from the start of our project we knew that we needed to find an alternative database solution for the enmeshed Connector. After researching and testing several options, we found [FerretDB](https://www.ferretdb.io/) to be a suitable truly open source replacement for MongoDB. ## What is FerretDB? @@ -18,20 +18,20 @@ MongoDB is licensed under the Server Side Public License (SSPL) and from the sta More information about FerretDBs architecture can be found [in their docs](https://docs.ferretdb.io/understanding-ferretdb/). -This means that the Enmeshed Connector can now also be used with the PostgreSQL database, [as requested some time ago](https://github.com/nmshd/feedback/issues/13). +This means that the enmeshed Connector can now also be used with the PostgreSQL database, [as requested some time ago](https://github.com/nmshd/feedback/issues/13). -## How did we make sure that FerretDB is compatible with the Enmeshed Connector? +## How did we make sure that FerretDB is compatible with the enmeshed Connector? Our team has worked hard to integrate FerretDB into our product. We tested extensively, made the necessary adjustments and provided feedback to the FerretDB team to ensure compatibility. As a result all libraries that were previously tested against MongoDB are now also tested against FerretDB during development and for each release in our CI/CD pipeline. -## How to use FerretDB with the Enmeshed Connector? +## How to use FerretDB with the enmeshed Connector? -The simplest way to deploy the Connector with a FerretDB instance is the [Connector Helm Chart]({% link _docs_integrate/14-connector-helm-chart.md %}). We updated the Chart to include FerretDB as an optional sidecar container, which can be enabled by setting `pod.ferretdb.enabled` to `true`. +The simplest way to deploy the Connector with a FerretDB instance is the [Connector Helm Chart]({% link _docs_operate/setup-with-helm-charts.md %}). We updated the Chart to include FerretDB as an optional sidecar container, which can be enabled by setting `pod.ferretdb.enabled` to `true`. -We also updated the [Connector Installation Guide]({% link _docs_integrate/10-connector-installation.md %}) with an option to deploy the Connector and FerretDB using Docker Compose. +We also updated the [Connector Installation Guide]({% link _docs_operate/setup-with-docker-compose.md %}) with an option to deploy the Connector and FerretDB using Docker Compose. ## Conclusion -At Enmeshed, we are proud to have found a suitable open-source replacement for MongoDB and we are confident that it will meet our needs and provide a reliable solution for our users. +At enmeshed, we are proud to have found a suitable open-source replacement for MongoDB and we are confident that it will meet our needs and provide a reliable solution for our users. -Thanks to FerretDB we are now able to offer the Enmeshed Connector with PostgreSQL, so developers can continue to use open-source software and enjoy the freedom it gives. +Thanks to FerretDB we are now able to offer the enmeshed Connector with PostgreSQL, so developers can continue to use open-source software and enjoy the freedom it gives. diff --git a/index.md b/index.md index 2bc323ffe..a34a244ff 100644 --- a/index.md +++ b/index.md @@ -1,5 +1,5 @@ --- -title: "Enmeshed" +title: "enmeshed" layout: splash header: overlay_color: "#000" @@ -14,7 +14,7 @@ feature_row: - image_path: /assets/images/use.jpg alt: "placeholder image 1" title: "Use" - excerpt: "Get up and running with Enmeshed and your own digital identity." + excerpt: "Get up and running with enmeshed and your own digital identity." url: "/use" btn_label: "Use" btn_class: "btn--primary" @@ -22,23 +22,59 @@ feature_row: image_caption: "Image courtesy of [Unsplash](https://unsplash.com/)" alt: "placeholder image 2" title: "Explore" - excerpt: "Find use cases, background information and introductions in the Explore Enmeshed section." + excerpt: "Find use cases, background information and introductions in the Explore enmeshed section." url: "/explore" btn_label: "Explore" btn_class: "btn--primary" - image_path: /assets/images/integrate.jpg title: "Integrate" - excerpt: "Discover how organizations can integrate to the Enmeshed ecosystem." + excerpt: "Discover how organizations can integrate to the enmeshed ecosystem." url: "/integrate" btn_label: "Integrate" btn_class: "btn--primary" + - image_path: /assets/images/operate.jpg + title: "operate" + excerpt: "Discover how organizations can operate to the enmeshed ecosystem." + url: "/operate" + btn_label: "operate" + btn_class: "btn--primary" feature_ssi: - title: "The digital home in your pocket" excerpt: "Take your digital identity wherever you go. Access, change and easily share the most important data of you without bothering about security, privacy or paperwork." --- -{% include feature_row id="feature_v2" type="center" %} +# What is enmeshed? + +Enmeshed is an open source project combining various assets into an overarching digitalization approach for users and organizations. Its overall goal is to introduce a secure but easy-to-use way to share and request data and digital signatures between contacts. + +A focus is the digitalization of the end user: enmeshed is bringing back control to the end user in an easy-to-use way and thus empowering its users to use the modern IT world which was usually an area only experts were able to cope with. With enmeshed the user actively takes part of the business processes, allowing a whole new digital experience. + +On the other hand, many organizations are still having trouble to digitize their business processes. Enmeshed introduces a different mindset - as well as components and tools - on how to securely communicate with other organizations and users. All this is done while keeping an easy-to-integrate approach in mind. + +The adjective "enmeshed" (\in'meshd\ or \en'meshd\ or /ɪnˈmeʃt/ ) means "to be entangled in s.th." or "parts which are patched together". Though sometimes used with a negative touch, nowadays we are all enmeshed in digital processes somehow, with more or less user satisfactory and effectiveness. + +We think by not only connecting identities of users and organizations to those digital processes, but tightly interweaving them within the actual processes, the overall user experience and process efficiency will rise. Enmeshed identities have a secure, digital and modern link between each other, which is not only used for overall communication but for professional processes. + +For us, being enmeshed is a very good thing: you know what is going on and the data which is used. You can take part in completely digital processes, without the hazzle of repeating yourself again and again. Even automated actions are available for end users. + +Sounds promising? Learn more about why we are doing this in the next chapter. + +# Why enmeshed? + +Digitalization is one of the big challenges in the 21st century. + +However, digitalization projects tend to be cumbersome, get out of time / budget, and get complicated very fast. The problem scope is so vast, that experts usually focus on specific topics and very few people have an overarching view on top of desirability, feasibility, and visibility. + +The common approach to tackle the digitalization is a siloed-one, many software vendors, consulting agencies and technologies try to focus on some of the technical problems, but usually not all of them. + +A digitalization of the "last mile" to the end user is usually not in scope of these approaches. This also includes the secure communication to the end user, which is often tackled by providing them with additional online accounts and multi factor authentication approaches to download specific information manually. + +So far there is no user-centric approach for digitalization: Each organization creates own solutions for digitizing their specific business processes which are usually not compatible to other digitalization solutions. In the end the user has to manually combine the various solutions to manage its own digital life. This is why a user nowadays has so many different accounts, contact details, old master data, and so on... + +You know what we mean? Have a look at the next chapter for a quick introduction on how enmeshed works. + +# Who is behind enmeshed? -{% include feature_row %} +The idea of enmeshed is based on the work of many others in the area of open source software, encryption, decentralized identities, decentralized ledgers, and so on. These approaches were combined by a group of people who envisioned a great digital experience for everybody. -{% include feature_row id="feature_ssi" type="center" %} +So far, the primary implementation work has been done by j&s-soft GmbH in Heidelberg, Germany. diff --git a/package.json b/package.json index 27589b534..1c95910dc 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@nmshd/docs", "version": "1.0.0", "private": "true", - "description": "The overarching Enmeshed documentation", + "description": "The overarching enmeshed documentation", "homepage": "https://enmeshed.eu", "license": "MIT", "author": "j&s-soft GmbH",