LogoLogo
How to Build Dataspaces?Main IDSA AssetsOther ResourcesManifesto for International Data Spaces
Dataspace Protocol
Dataspace Protocol
  • Overview
    • Dataspace Protocol 2024-1
    • Terminology
    • Information Model
  • Common Functionalities
    • Specification
    • Binding: HTTPS
  • Catalog
    • Specification
    • Binding: HTTPS
  • Contract Negotiation
    • Specification
    • Binding: HTTPS
  • Transfer Process
    • Specification
    • Binding: HTTPS
  • List of Files
    • Common
    • Figures
    • Messages
    • Schemes
    • Shapes
  • Best Practices
    • Introduction
    • Related Documents
Powered by GitBook
On this page
  • 1 Introduction
  • 1.1 Prerequisites
  • 1.2 States
  • 1.3 State Machine
  • 2 Message Types
  • 2.1 Transfer Request Message
  • 2.2 Transfer Start Message
  • 2.3 Transfer Suspension Message
  • 2.4 Transfer Completion Message
  • 2.5 Transfer Termination Message
  • 3 Response Types
  • 3.1 ACK - Transfer Process
  • 3.2 ERROR - Transfer Error
Edit on GitHub
  1. Transfer Process

Specification

Last updated 1 year ago

Links:

  • IDSA Website
  • IDSA Github
  • Legal Notice
  • Privacy Policy

© 2016 – 2025 | All Rights Reserved | International Data Spaces Association

This document outlines the key elements of the . The used terms are described here.

  • 1 Introduction

    • 1.1 Prerequisites

      • 1.1.1 Control and Data Planes

      • 1.1.2 Data Transfer Types

        • Push Transfer

        • Pull Transfer

        • Finite and Non-Finite Data

    • 1.2 States

    • 1.3 State Machine

  • 2 Message Types

    • 2.1 Transfer Request Message

    • 2.2 Transfer Start Message

    • 2.3 Transfer Suspension Message

    • 2.4 Transfer Completion Message

    • 2.5 Transfer Termination Message

  • 3 Response Types

    • 3.1 ACK - Transfer Process

    • 3.2 ERROR - Transfer Error

1 Introduction

1.1 Prerequisites

To put the document into the right context, some non-normative descriptions of the core concepts follow in this subsection.

1.1.1 Control and Data Planes

The specification of data plane interfaces and interaction patterns are not in scope of this document.

1.1.2 Data Transfer Types

Push Transfer

Note that the illustration of the sequence is only exemplary. The activation of actors is not determined, also, responses, parameters, possible recursions, and interactions between the components of one participant are not shown.

Pull Transfer

Note that the illustration of the sequence is only exemplary. The activation of actors is not determined, also, responses, parameters, possible recursions, and interactions between the components of one participant are not shown.

Finite and Non-Finite Data

1.2 States

The TP states are:

1.3 State Machine

The TP state machine is represented in the following diagram:

2 Message Types

All messages must be serialized in JSON-LD compact form as specified in the JSON-LD 1.1 Processing Algorithms and API. Further Dataspace specifications may define additional optional serialization formats.

2.1 Transfer Request Message

Sent by

Resulting state

REQUESTED

Response

ACK or ERROR

Schema

TTL Shape, JSON Schema

Example

Message

Diagram(s)

  • The dataAddress property must only be provided if the dct:format requires a push transfer.

  • The dataAddress contains a transport-specific endpoint address for pushing the data. It may include a temporary authorization via the endpointProperties property.

  • The endpointProperties may contain the following optional values:

    • authorization - An opaque authorization token that clients must present when accessing the transport-specific endpoint address.

    • authType - The auth token type. For example, the value may be bearer. If present, this value may be used in conjunction with transport rules to define how the client must present an authorization token.

  • Once a TP has been created, all associated callback messages must include a consumerPid and providerPid.

  • Valid states of a TP are REQUESTED, STARTED, TERMINATED, COMPLETED, and SUSPENDED.

2.2 Transfer Start Message

Sent by

Resulting state

STARTED

Response

ACK or ERROR

Schema

TTL Shape, JSON Schema

Example

Message

Diagram(s)

  • The dataAddress is only provided if the current transfer is a pull transfer and contains a transport-specific endpoint address for obtaining the data. It may include a temporary authorization via the endpointProperties property.

  • The endpointProperties may contain the following optional values:

    • authorization - An opaque authorization token that clients must present when accessing the transport-specific endpoint address.

    • authType - The auth token type. For example, the value may be bearer. If present, this value may be used in conjunction with transport rules to define how the client must present an authorization token.

2.3 Transfer Suspension Message

Sent by

Resulting state

SUSPENDED

Response

ACK or ERROR

Schema

TTL Shape, JSON Schema

Example

Message

Diagram(s)

2.4 Transfer Completion Message

Sent by

Resulting state

COMPLETED

Response

ACK or ERROR

Schema

TTL Shape, JSON Schema

Example

Message

Diagram(s)

2.5 Transfer Termination Message

Sent by

Resulting state

TERMINATED

Response

ACK or ERROR

Schema

TTL Shape, JSON Schema

Example

Message

Diagram(s)

3 Response Types

The ACK and ERROR response types are mapped onto a protocol such as HTTPS. A description of an error might be provided in protocol-dependent forms, e.g., for an HTTPS binding in the request or response body.

3.1 ACK - Transfer Process

Sent by

Schema

TTL Shape, JSON Schema

Example

Process

Diagram(s)

3.2 ERROR - Transfer Error

Sent by

Schema

TTL Shape, JSON Schema

Example

Process

Diagram(s)

Field
Type
Description

consumerPid

UUID

providerPid

UUID

code

string

An optional implementation-specific error code.

reasons

Array[object]

An optional array of implementation-specific error objects.

A (TP) involves two parties, a that offers one or more under a and a that requests . A TP progresses through a series of states, which are controlled by the and using messages. A TP transitions to another state as a result of an exchanged message.

A TP involves two logical constructs, a control plane and a data plane. Serving as a coordinating layer, services on the control plane receive messages and manage the local state of the TP (same as for the and the ). On the data plane, the actual transfer of data takes place using a wire protocol. Both participants in a data sharing scenario run services logically regarded as control and/or data plane services.

transfers are characterized as push or pull transfers and it's data is either finite or non-finite. This section describes the difference between these types.

A push transfer is when the data plane initiates sending data to a endpoint. For example, after the has issued a Transfer Request Message, the begins data transmission to an endpoint specified by the using an agreed-upon wire protocol.

A pull transfer is when the data plane initiates retrieval of data from a endpoint. For example, after the has issued a Transfer Start Message, the can request the data from the -specified endpoint.

Data may be finite or non-finite. This applies to either push and pull transfers. Finite data is data that is defined by a finite set, for example, machine learning data or images. After finite data transmission has finished, the TP is completed. Non-finite data is data that is defined by an infinite set or has no specified end, for example, streams or an API endpoint. With non-finite data, a TP will continue indefinitely until either the or explicitly terminates the transmission.

REQUESTED: A has been requested under an by the and the has sent an ACK response.

STARTED: The is available for access by the or the has begun pushing the data to the endpoint.

COMPLETED: The transfer has been completed by either the or the .

SUSPENDED: The transfer has been suspended by the or the .

TERMINATED: The has been terminated by the or the .

Transitions marked with C indicate a message sent by the , transitions marked with P indicate a message. Terminal states are final; the state machine may not transition to another state.

The Transfer Request Message is sent by a to initiate a TP.

The consumerPid property refers to the transfer id of the side.

The agreementId property refers to an existing contract between the and .

The dct:format property is a format specified by a Distribution for the associated with the . This is generally obtained from the .

callbackAddress is a URI indicating where messages to the should be sent. If the address is not understood, the MUST return an UNRECOVERABLE error.

Note that should implement idempotent behavior for Transfer Request Messages based on the value of consumerPid. may choose to implement idempotent behavior for a certain period of time. For example, until a TP has completed and been archived after an implementation-specific expiration period, repeated sending of Transfer Request Messages does not change the state of the TP. If a request for the given consumerPid has already been received and the same sent the original message again, the should respond with an appropriate Transfer Start Message.

must include a consumerPid and a providerPid property in the object.

The Transfer Start Message is sent by the to indicate the data transfer has been initiated.

,

The Transfer Suspension Message is sent by the or when either of them needs to temporarily suspend the TP.

,

The Transfer Completion Message is sent by the or when a data transfer has completed. Note that some implementations may optimize completion notification by performing it as part of their wire protocol. In those cases, a Transfer Completion Message does not need to be sent.

,

The Transfer Termination Message is sent by the or at any point except a terminal state to indicate the TP should stop and be placed in a terminal state. If the termination was due to an error, the sender may include error information.

,

The Transfer Process is an object returned by a or indicating a successful state change happened.

,

The Transfer Error is an object returned by a or indicating an error has occurred. It does not cause a state transition.

The TF unique id on side.

The TF unique id on side.

Transfer Process Protocol
Transfer Process
Provider
Datasets
Usage Policy
Consumer
Datasets
Provider
Consumer
Catalog Protocol
Contract Negotiation Protocol
Dataset
Provider's
Consumer
Consumer
Provider
Consumer
Consumer's
Provider
Provider
Consumer
Provider
Consumer
Provider
Dataset
Agreement
Consumer
Provider
Dataset
Consumer
Provider
Consumer
Consumer
Provider
Consumer
Provider
Transfer Process
Consumer
Provider
Consumer
Provider
Consumer
Consumer
Agreement
Consumer
Provider
Dataset
Agreement
Provider's
Catalog
Consumer
Provider
Providers
Providers
Consumer
Provider
Providers
Provider
Provider
Consumer
Provider
Consumer
Connector
Provider
Consumer
Consumer
Provider
Consumer
Provider
Consumer
Provider
Consumer
Provider
Consumer
Provider
Consumer
Provider
Consumer
Provider
Consumer
Provider
Consumer
Provider