openapi: 3.0.1
info:
  title: Tractus-X EDC control-plane API
  description: Tractus-X EDC control-plane API Documentation
  version: 0.10.3
servers:
- url: /
paths:
  /business-partner-groups:
    put:
      tags:
      - Business Partner Group
      description: Updates the entry for a particular BPN
      operationId: updateEntryV1
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/List"
      responses:
        "204":
          description: The object was successfully updated
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: No entry for the given BPN was found
      deprecated: true
    post:
      tags:
      - Business Partner Group
      description: Creates an entry for a particular BPN
      operationId: createEntryV1
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/List"
      responses:
        "204":
          description: The object was successfully created
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "409":
          description: An entry already exists for that BPN
      deprecated: true
  /business-partner-groups/{bpn}:
    get:
      tags:
      - Business Partner Group
      description: Resolves all groups for a particular BPN
      operationId: resolveV1
      parameters:
      - name: bpn
        in: path
        description: The business partner number
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: An object containing an array with the assigned groups
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: No entry for the given BPN was found
      deprecated: true
    delete:
      tags:
      - Business Partner Group
      description: Deletes the entry for a particular BPN
      operationId: deleteEntryV1
      parameters:
      - name: bpn
        in: path
        description: The business partner number
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "204":
          description: The object was successfully deleted
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: No entry for the given BPN was found
      deprecated: true
  /check/health:
    get:
      tags:
      - Application Observability
      description: Performs a liveness probe to determine whether the runtime is working
        properly.
      operationId: checkHealth
      responses:
        "200":
          description: The runtime is working properly.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthStatus"
  /check/liveness:
    get:
      tags:
      - Application Observability
      description: Performs a liveness probe to determine whether the runtime is working
        properly.
      operationId: getLiveness
      responses:
        "200":
          description: The runtime is working properly.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthStatus"
  /check/readiness:
    get:
      tags:
      - Application Observability
      description: Performs a readiness probe to determine whether the runtime is
        able to accept requests.
      operationId: getReadiness
      responses:
        "200":
          description: The runtime is able to accept requests.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthStatus"
  /check/startup:
    get:
      tags:
      - Application Observability
      description: Performs a startup probe to determine whether the runtime has completed
        startup.
      operationId: getStartup
      responses:
        "200":
          description: The runtime has completed startup.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthStatus"
  /v2/edrs:
    post:
      tags:
      - Control Plane EDR Api
      description: Initiates an EDR negotiation by handling a contract negotiation
        first and then a transfer process for a given offer and with the given counter
        part. Please note that successfully invoking this endpoint only means that
        the negotiation was initiated.
      operationId: initiateEdrNegotiationV2
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                empty:
                  type: boolean
                valueType:
                  type: string
                  enum:
                  - ARRAY
                  - OBJECT
                  - STRING
                  - NUMBER
                  - "TRUE"
                  - "FALSE"
                  - "NULL"
              additionalProperties:
                $ref: "#/components/schemas/ContractRequest"
      responses:
        "200":
          description: The negotiation was successfully initiated.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdResponse"
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
      deprecated: true
  /v2/edrs/request:
    post:
      tags:
      - Control Plane EDR Api
      description: Request all Edr entries according to a particular query
      operationId: requestEdrEntriesV2
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/QuerySpec"
      responses:
        "200":
          description: The edr entries matching the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/EndpointDataReferenceEntry"
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
      deprecated: true
  /v2/edrs/{transferProcessId}:
    delete:
      tags:
      - Control Plane EDR Api
      description: Removes an EDR entry given the transfer process ID
      operationId: removeEdrEntryV2
      parameters:
      - name: transferProcessId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "204":
          description: EDR entry was deleted successfully
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An EDR entry with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
      deprecated: true
  /v2/edrs/{transferProcessId}/dataaddress:
    get:
      tags:
      - Control Plane EDR Api
      description: Gets the EDR data address with the given transfer process ID
      operationId: getEdrEntryDataAddressV2
      parameters:
      - name: transferProcessId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: auto_refresh
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          default: true
      responses:
        "200":
          description: The data address
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataAddress"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An EDR data address with the given transfer process ID does
            not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
      deprecated: true
  /v2/edrs/{transferProcessId}/refresh:
    post:
      tags:
      - Control Plane EDR Api
      description: Refreshes and returns the EDR data address with the given transfer
        process ID
      operationId: refreshEdrV2
      parameters:
      - name: transferProcessId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The data address
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataAddress"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An EDR data address with the given transfer process ID does
            not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
      deprecated: true
  /v3/assets:
    put:
      tags:
      - Asset V3
      description: "Updates an asset with the given ID if it exists. If the asset\
        \ is not found, no further action is taken. DANGER ZONE: Note that updating\
        \ assets can have unexpected results, especially for contract offers that\
        \ have been sent out or are ongoing in contract negotiations."
      operationId: updateAssetV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AssetInput"
      responses:
        "204":
          description: Asset was updated successfully
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: "Asset could not be updated, because it does not exist."
    post:
      tags:
      - Asset V3
      description: Creates a new asset together with a data address
      operationId: createAssetV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AssetInput"
      responses:
        "200":
          description: Asset was created successfully. Returns the asset Id and created
            timestamp
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdResponse"
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "409":
          description: "Could not create asset, because an asset with that ID already\
            \ exists"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/assets/request:
    post:
      tags:
      - Asset V3
      description: Request all assets according to a particular query
      operationId: requestAssetsV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/QuerySpec"
      responses:
        "200":
          description: The assets matching the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AssetOutput"
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/assets/{id}:
    get:
      tags:
      - Asset V3
      description: Gets an asset with the given ID
      operationId: getAssetV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The asset
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AssetOutput"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An asset with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
    delete:
      tags:
      - Asset V3
      description: "Removes an asset with the given ID if possible. Deleting an asset\
        \ is only possible if that asset is not yet referenced by a contract agreement,\
        \ in which case an error is returned. DANGER ZONE: Note that deleting assets\
        \ can have unexpected results, especially for contract offers that have been\
        \ sent out or ongoing or contract negotiations."
      operationId: removeAssetV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "204":
          description: Asset was deleted successfully
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An asset with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "409":
          description: "The asset cannot be deleted, because it is referenced by a\
            \ contract agreement"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/business-partner-groups:
    put:
      tags:
      - Business Partner Group
      description: Updates the entry for a particular BPN
      operationId: updateEntryV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/List"
      responses:
        "204":
          description: The object was successfully updated
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: No entry for the given BPN was found
    post:
      tags:
      - Business Partner Group
      description: Creates an entry for a particular BPN
      operationId: createEntryV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/List"
      responses:
        "204":
          description: The object was successfully created
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "409":
          description: An entry already exists for that BPN
  /v3/business-partner-groups/group/{group}:
    get:
      tags:
      - Business Partner Group
      description: Resolves all BPNs for a particular BPN group
      operationId: resolveGroupV3
      parameters:
      - name: group
        in: path
        description: The business partner group
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: An object containing an array with the bpns assigned to the
            group
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: No entry for the given BPN group was found
  /v3/business-partner-groups/groups:
    get:
      tags:
      - Business Partner Group
      description: Resolves all BPN Groups
      operationId: resolveGroupsV3
      responses:
        "200":
          description: An object containing an array with the all BPN groups
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/business-partner-groups/{bpn}:
    get:
      tags:
      - Business Partner Group
      description: Resolves all groups for a particular BPN
      operationId: resolveV3
      parameters:
      - name: bpn
        in: path
        description: The business partner number
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: An object containing an array with the assigned groups
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: No entry for the given BPN was found
    delete:
      tags:
      - Business Partner Group
      description: Deletes the entry for a particular BPN
      operationId: deleteEntryV3
      parameters:
      - name: bpn
        in: path
        description: The business partner number
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "204":
          description: The object was successfully deleted
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: No entry for the given BPN was found
  /v3/catalog/dataset/request:
    post:
      tags:
      - Catalog V3
      operationId: getDatasetV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DatasetRequest"
      responses:
        default:
          description: Gets single dataset from a connector
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Dataset"
  /v3/catalog/request:
    post:
      tags:
      - Catalog V3
      operationId: requestCatalogV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CatalogRequest"
      responses:
        default:
          description: Gets contract offers (=catalog) of a single connector
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Catalog"
  /v3/contractagreements/request:
    post:
      tags:
      - Contract Agreement V3
      description: Gets all contract agreements according to a particular query
      operationId: queryAgreementsV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/QuerySpec"
      responses:
        "200":
          description: The contract agreements matching the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ContractAgreement"
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractagreements/retirements:
    post:
      tags:
      - Agreements Retirement
      description: Retires an active contract agreement.
      operationId: retireAgreementV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Retirement Example"
      responses:
        "204":
          description: The contract agreement was successfully retired
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "409":
          description: The contract agreement is already retired
  /v3/contractagreements/retirements/request:
    post:
      tags:
      - Agreements Retirement
      description: Get all retired contract agreements.
      operationId: getAllRetiredV3
      responses:
        "200":
          description: A list of retired contract agreements
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractagreements/retirements/{agreementId}:
    delete:
      tags:
      - Agreements Retirement
      description: "Removes a contract agreement from the retired list, reactivating\
        \ it."
      operationId: reactivateRetiredV3
      parameters:
      - name: agreementId
        in: path
        description: The contract agreement id
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "204":
          description: The contract agreement is reactivated
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: No entry for the given agreementId was found
  /v3/contractagreements/{id}:
    get:
      tags:
      - Contract Agreement V3
      description: Gets an contract agreement with the given ID
      operationId: getAgreementByIdV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The contract agreement
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContractAgreement"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An contract agreement with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractagreements/{id}/negotiation:
    get:
      tags:
      - Contract Agreement V3
      description: Gets a contract negotiation with the given contract agreement ID
      operationId: getNegotiationByAgreementIdV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The contract negotiation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContractNegotiation"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An contract agreement with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractdefinitions:
    put:
      tags:
      - Contract Definition V3
      description: Updated a contract definition with the given ID. The supplied JSON
        structure must be a valid JSON-LD object
      operationId: updateContractDefinitionV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ContractDefinitionInput"
      responses:
        "204":
          description: Contract definition was updated successfully
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: A contract definition with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
    post:
      tags:
      - Contract Definition V3
      description: Creates a new contract definition
      operationId: createContractDefinitionV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ContractDefinitionInput"
      responses:
        "200":
          description: contract definition was created successfully. Returns the Contract
            Definition Id and created timestamp
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdResponse"
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "409":
          description: "Could not create contract definition, because a contract definition\
            \ with that ID already exists"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractdefinitions/request:
    post:
      tags:
      - Contract Definition V3
      description: Returns all contract definitions according to a query
      operationId: queryContractDefinitionsV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/QuerySpec"
      responses:
        "200":
          description: The contract definitions matching the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ContractDefinitionOutput"
        "400":
          description: Request was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractdefinitions/{id}:
    get:
      tags:
      - Contract Definition V3
      description: Gets an contract definition with the given ID
      operationId: getContractDefinitionV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The contract definition
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContractDefinitionOutput"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An contract agreement with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
    delete:
      tags:
      - Contract Definition V3
      description: "Removes a contract definition with the given ID if possible. DANGER\
        \ ZONE: Note that deleting contract definitions can have unexpected results,\
        \ especially for contract offers that have been sent out or ongoing or contract\
        \ negotiations."
      operationId: deleteContractDefinitionV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "204":
          description: Contract definition was deleted successfully
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: A contract definition with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractnegotiations:
    post:
      tags:
      - Contract Negotiation V3
      description: "Initiates a contract negotiation for a given offer and with the\
        \ given counter part. Please note that successfully invoking this endpoint\
        \ only means that the negotiation was initiated. Clients must poll the /{id}/state\
        \ endpoint to track the state"
      operationId: initiateContractNegotiationV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ContractRequest"
      responses:
        "200":
          description: The negotiation was successfully initiated. Returns the contract
            negotiation ID and created timestamp
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdResponse"
          links:
            poll-state:
              operationId: getNegotiationStateV3
              parameters:
                id: $response.body#/id
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractnegotiations/request:
    post:
      tags:
      - Contract Negotiation V3
      description: Returns all contract negotiations according to a query
      operationId: queryNegotiationsV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/QuerySpec"
      responses:
        "200":
          description: The contract negotiations that match the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ContractNegotiation"
        "400":
          description: Request was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractnegotiations/{id}:
    get:
      tags:
      - Contract Negotiation V3
      description: Gets a contract negotiation with the given ID
      operationId: getNegotiationV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The contract negotiation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContractNegotiation"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An contract negotiation with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractnegotiations/{id}/agreement:
    get:
      tags:
      - Contract Negotiation V3
      description: Gets a contract agreement for a contract negotiation with the given
        ID
      operationId: getAgreementForNegotiationV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: "The contract agreement that is attached to the negotiation,\
            \ or null"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContractAgreement"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An contract negotiation with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractnegotiations/{id}/state:
    get:
      tags:
      - Contract Negotiation V3
      description: Gets the state of a contract negotiation with the given ID
      operationId: getNegotiationStateV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The contract negotiation's state
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NegotiationState"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An contract negotiation with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/contractnegotiations/{id}/terminate:
    post:
      tags:
      - Contract Negotiation V3
      description: Terminates the contract negotiation.
      operationId: terminateNegotiationV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TerminateNegotiationSchema"
      responses:
        "200":
          description: ContractNegotiation is terminating
          links:
            poll-state:
              operationId: getNegotiationStateV3
        "400":
          description: Request was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: A contract negotiation with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/dataplanes:
    get:
      tags:
      - Dataplane Selector V3
      description: Returns a list of all currently registered data plane instances
      operationId: getAllDataPlaneInstancesV3
      responses:
        "200":
          description: A (potentially empty) list of currently registered data plane
            instances
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DataPlaneInstanceSchemaV3"
  /v3/edrs:
    post:
      tags:
      - Control Plane EDR Api
      description: Initiates an EDR negotiation by handling a contract negotiation
        first and then a transfer process for a given offer and with the given counter
        part. Please note that successfully invoking this endpoint only means that
        the negotiation was initiated.
      operationId: initiateEdrNegotiationV3
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                empty:
                  type: boolean
                valueType:
                  type: string
                  enum:
                  - ARRAY
                  - OBJECT
                  - STRING
                  - NUMBER
                  - "TRUE"
                  - "FALSE"
                  - "NULL"
              additionalProperties:
                $ref: "#/components/schemas/ContractRequest"
      responses:
        "200":
          description: The negotiation was successfully initiated.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdResponse"
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/edrs/request:
    post:
      tags:
      - Control Plane EDR Api
      description: Request all Edr entries according to a particular query
      operationId: requestEdrEntriesV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/QuerySpec"
      responses:
        "200":
          description: The edr entries matching the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/EndpointDataReferenceEntry"
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/edrs/{transferProcessId}:
    delete:
      tags:
      - Control Plane EDR Api
      description: Removes an EDR entry given the transfer process ID
      operationId: removeEdrEntryV3
      parameters:
      - name: transferProcessId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "204":
          description: EDR entry was deleted successfully
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An EDR entry with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/edrs/{transferProcessId}/dataaddress:
    get:
      tags:
      - Control Plane EDR Api
      description: Gets the EDR data address with the given transfer process ID
      operationId: getEdrEntryDataAddressV3
      parameters:
      - name: transferProcessId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: auto_refresh
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          default: true
      responses:
        "200":
          description: The data address
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataAddress"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An EDR data address with the given transfer process ID does
            not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/edrs/{transferProcessId}/refresh:
    post:
      tags:
      - Control Plane EDR Api
      description: Refreshes and returns the EDR data address with the given transfer
        process ID
      operationId: refreshEdrV3
      parameters:
      - name: transferProcessId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The data address
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataAddress"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An EDR data address with the given transfer process ID does
            not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/policydefinitions:
    post:
      tags:
      - Policy Definition v3
      description: Creates a new policy definition
      operationId: createPolicyDefinitionV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PolicyDefinitionInput"
      responses:
        "200":
          description: policy definition was created successfully. Returns the Policy
            Definition Id and created timestamp
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdResponse"
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "409":
          description: "Could not create policy definition, because a contract definition\
            \ with that ID already exists"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/policydefinitions/request:
    post:
      tags:
      - Policy Definition v3
      description: Returns all policy definitions according to a query
      operationId: queryPolicyDefinitionsV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/QuerySpec"
      responses:
        "200":
          description: The policy definitions matching the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/PolicyDefinitionOutput"
        "400":
          description: Request was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/policydefinitions/{id}:
    get:
      tags:
      - Policy Definition v3
      description: Gets a policy definition with the given ID
      operationId: getPolicyDefinitionV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The  policy definition
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyDefinitionOutput"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An  policy definition with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
    put:
      tags:
      - Policy Definition v3
      description: "Updates an existing Policy, If the Policy is not found, an error\
        \ is reported"
      operationId: updatePolicyDefinitionV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PolicyDefinitionInput"
      responses:
        "204":
          description: policy definition was updated successfully.
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: "policy definition could not be updated, because it does not\
            \ exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiErrorDetail"
    delete:
      tags:
      - Policy Definition v3
      description: "Removes a policy definition with the given ID if possible. Deleting\
        \ a policy definition is only possible if that policy definition is not yet\
        \ referenced by a contract definition, in which case an error is returned.\
        \ DANGER ZONE: Note that deleting policy definitions can have unexpected results,\
        \ do this at your own risk!"
      operationId: deletePolicyDefinitionV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "204":
          description: Policy definition was deleted successfully
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An policy definition with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "409":
          description: "The policy definition cannot be deleted, because it is referenced\
            \ by a contract definition"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/policydefinitions/{id}/evaluationplan:
    post:
      tags:
      - Policy Definition v3
      description: "Creates an execution plane for an existing Policy, If the Policy\
        \ is not found, an error is reported"
      operationId: createExecutionPlaneV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PolicyEvaluationPlanRequestSchema"
      responses:
        "200":
          description: Returns the evaluation plan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyEvaluationPlanSchema"
        "404":
          description: "An evaluation plan could not be created, because the policy\
            \ definition does not exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiErrorDetail"
  /v3/policydefinitions/{id}/validate:
    post:
      tags:
      - Policy Definition v3
      description: "Validates an existing Policy, If the Policy is not found, an error\
        \ is reported"
      operationId: validatePolicyDefinitionV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Returns the validation result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyValidationResultSchema"
        "404":
          description: "policy definition could not be validated, because it does\
            \ not exists"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiErrorDetail"
  /v3/transferprocesses:
    post:
      tags:
      - Transfer Process V3
      description: "Initiates a data transfer with the given parameters. Due to the\
        \ asynchronous nature of transfers, a successful response only indicates that\
        \ the request was successfully received. This may take a long time, so clients\
        \ must poll the /{id}/state endpoint to track the state."
      operationId: initiateTransferProcessV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TransferRequest"
      responses:
        "200":
          description: The transfer was successfully initiated. Returns the transfer
            process ID and created timestamp
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IdResponse"
          links:
            poll-state:
              operationId: getTransferProcessStateV3
              parameters:
                id: $response.body#/id
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/transferprocesses/request:
    post:
      tags:
      - Transfer Process V3
      description: Returns all transfer process according to a query
      operationId: queryTransferProcessesV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/QuerySpec"
      responses:
        "200":
          description: The transfer processes matching the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TransferProcess"
        "400":
          description: Request was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/transferprocesses/{id}:
    get:
      tags:
      - Transfer Process V3
      description: Gets an transfer process with the given ID
      operationId: getTransferProcessV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The transfer process
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransferProcess"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: A transfer process with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/transferprocesses/{id}/deprovision:
    post:
      tags:
      - Transfer Process V3
      description: "Requests the deprovisioning of resources associated with a transfer\
        \ process. Due to the asynchronous nature of transfers, a successful response\
        \ only indicates that the request was successfully received. This may take\
        \ a long time, so clients must poll the /{id}/state endpoint to track the\
        \ state."
      operationId: deprovisionTransferProcessV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "204":
          description: Request to deprovision the transfer process was successfully
            received
          links:
            poll-state:
              operationId: deprovisionTransferProcessV3
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: A transfer process with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/transferprocesses/{id}/resume:
    post:
      tags:
      - Transfer Process V3
      description: "Requests the resumption of a suspended transfer process. Due to\
        \ the asynchronous nature of transfers, a successful response only indicates\
        \ that the request was successfully received. This may take a long time, so\
        \ clients must poll the /{id}/state endpoint to track the state."
      operationId: resumeTransferProcessV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "204":
          description: Request to resume the transfer process was successfully received
          links:
            poll-state:
              operationId: resumeTransferProcessV3
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: A transfer process with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/transferprocesses/{id}/state:
    get:
      tags:
      - Transfer Process V3
      description: Gets the state of a transfer process with the given ID
      operationId: getTransferProcessStateV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The  transfer process's state
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransferState"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An  transfer process with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/transferprocesses/{id}/suspend:
    post:
      tags:
      - Transfer Process V3
      description: "Requests the suspension of a transfer process. Due to the asynchronous\
        \ nature of transfers, a successful response only indicates that the request\
        \ was successfully received. This may take a long time, so clients must poll\
        \ the /{id}/state endpoint to track the state."
      operationId: suspendTransferProcessV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SuspendTransfer"
      responses:
        "204":
          description: Request to suspend the transfer process was successfully received
          links:
            poll-state:
              operationId: suspendTransferProcessV3
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: A transfer process with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "409":
          description: "Could not suspend the transfer process, because it is already\
            \ completed or terminated."
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v3/transferprocesses/{id}/terminate:
    post:
      tags:
      - Transfer Process V3
      description: "Requests the termination of a transfer process. Due to the asynchronous\
        \ nature of transfers, a successful response only indicates that the request\
        \ was successfully received. This may take a long time, so clients must poll\
        \ the /{id}/state endpoint to track the state."
      operationId: terminateTransferProcessV3
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TerminateTransfer"
      responses:
        "204":
          description: Request to terminate the transfer process was successfully
            received
          links:
            poll-state:
              operationId: terminateTransferProcessV3
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: A transfer process with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "409":
          description: "Could not terminate transfer process, because it is already\
            \ completed or terminated."
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v4alpha/contractagreements/request:
    post:
      tags:
      - Contract Agreement v4alpha
      description: Gets all contract agreements according to a particular query
      operationId: queryAgreementsV4Alpha
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/QuerySpec"
      responses:
        "200":
          description: The contract agreements matching the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ContractAgreement"
        "400":
          description: Request body was malformed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v4alpha/contractagreements/{id}:
    get:
      tags:
      - Contract Agreement v4alpha
      description: Gets an contract agreement with the given ID
      operationId: getAgreementByIdV4Alpha
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The contract agreement
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContractAgreement"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An contract agreement with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v4alpha/contractagreements/{id}/negotiation:
    get:
      tags:
      - Contract Agreement v4alpha
      description: Gets a contract negotiation with the given contract agreement ID
      operationId: getNegotiationByAgreementIdV4Alpha
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: The contract negotiation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContractNegotiation"
        "400":
          description: "Request was malformed, e.g. id was null"
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
        "404":
          description: An contract agreement with the given ID does not exist
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ApiErrorDetail"
  /v4alpha/dataplanes:
    get:
      tags:
      - Dataplane Selector v4alpha
      description: Returns a list of all currently registered data plane instances
      operationId: getAllDataPlaneInstancesV4
      responses:
        "200":
          description: A (potentially empty) list of currently registered data plane
            instances
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DataPlaneInstanceSchemaV4"
  /v4alpha/protocol-versions/request:
    post:
      tags:
      - Protocol Version v4alpha
      operationId: requestProtocolVersionV4alpha
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CatalogRequest"
      responses:
        default:
          description: Gets supported protocol versions of a single connector
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProtocolVersion"
components:
  schemas:
    ApiErrorDetail:
      type: object
      properties:
        invalidValue:
          type: string
        message:
          type: string
        path:
          type: string
        type:
          type: string
      example:
        message: error message
        type: ErrorType
        path: object.error.path
        invalidValue: this value is not valid
    AssetInput:
      required:
      - '@context'
      - dataAddress
      - properties
      type: object
      properties:
        '@context':
          type: object
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/Asset
        dataAddress:
          $ref: "#/components/schemas/DataAddress"
        privateProperties:
          $ref: "#/components/schemas/Properties"
        properties:
          $ref: "#/components/schemas/Properties"
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@id': asset-id
        properties:
          key: value
        privateProperties:
          privateKey: privateValue
        dataAddress:
          type: HttpData
          baseUrl: https://jsonplaceholder.typicode.com/todos
    AssetOutput:
      type: object
      properties:
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/Asset
        createdAt:
          type: integer
          format: int64
        dataAddress:
          $ref: "#/components/schemas/DataAddress"
        privateProperties:
          $ref: "#/components/schemas/Properties"
        properties:
          $ref: "#/components/schemas/Properties"
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@id': asset-id
        properties:
          key: value
        privateProperties:
          privateKey: privateValue
        dataAddress:
          type: HttpData
          baseUrl: https://jsonplaceholder.typicode.com/todos
        createdAt: 1688465655
    CallbackAddress:
      type: object
      properties:
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/CallbackAddress
        authCodeId:
          type: string
        authKey:
          type: string
        events:
          uniqueItems: true
          type: array
          items:
            type: string
        transactional:
          type: boolean
        uri:
          type: string
    Catalog:
      type: object
      description: DCAT catalog
      example:
        '@id': 7df65569-8c59-4013-b1c0-fa14f6641bf2
        '@type': dcat:Catalog
        dcat:dataset:
          '@id': bcca61be-e82e-4da6-bfec-9716a56cef35
          '@type': dcat:Dataset
          odrl:hasPolicy:
            '@id': OGU0ZTMzMGMtODQ2ZS00ZWMxLThmOGQtNWQxNWM0NmI2NmY4:YmNjYTYxYmUtZTgyZS00ZGE2LWJmZWMtOTcxNmE1NmNlZjM1:NDY2ZTZhMmEtNjQ1Yy00ZGQ0LWFlZDktMjdjNGJkZTU4MDNj
            '@type': odrl:Set
            odrl:permission:
              odrl:target: bcca61be-e82e-4da6-bfec-9716a56cef35
              odrl:action:
                odrl:type: http://www.w3.org/ns/odrl/2/use
              odrl:constraint:
                odrl:and:
                - odrl:leftOperand: https://w3id.org/edc/v0.0.1/ns/inForceDate
                  odrl:operator:
                    '@id': odrl:gteq
                  odrl:rightOperand: 2023-07-07T07:19:58.585601395Z
                - odrl:leftOperand: https://w3id.org/edc/v0.0.1/ns/inForceDate
                  odrl:operator:
                    '@id': odrl:lteq
                  odrl:rightOperand: 2023-07-12T07:19:58.585601395Z
            odrl:prohibition: []
            odrl:obligation: []
          dcat:distribution:
          - '@type': dcat:Distribution
            dct:format:
              '@id': HttpData
            dcat:accessService: 5e839777-d93e-4785-8972-1005f51cf367
          description: description
          id: bcca61be-e82e-4da6-bfec-9716a56cef35
        dcat:service:
          '@id': 5e839777-d93e-4785-8972-1005f51cf367
          '@type': dcat:DataService
          dct:terms: connector
          dct:endpointUrl: http://localhost:16806/protocol
        dspace:participantId: urn:connector:provider
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
          dct: http://purl.org/dc/terms/
          edc: https://w3id.org/edc/v0.0.1/ns/
          dcat: http://www.w3.org/ns/dcat#
          odrl: http://www.w3.org/ns/odrl/2/
          dspace: https://w3id.org/dspace/v0.8/
    CatalogRequest:
      required:
      - '@context'
      - counterPartyAddress
      - protocol
      type: object
      properties:
        '@context':
          type: object
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/CatalogRequest
        additionalScopes:
          type: array
          items:
            type: string
        counterPartyAddress:
          type: string
        counterPartyId:
          type: string
        protocol:
          type: string
        querySpec:
          $ref: "#/components/schemas/QuerySpec"
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': CatalogRequest
        counterPartyAddress: http://provider-address
        counterPartyId: providerId
        protocol: dataspace-protocol-http
        additionalScopes:
        - org.eclipse.edc.vc.type:SomeCredential:read
        - org.eclipse.edc.vc.type:AnotherCredential:write
        querySpec:
          offset: 0
          limit: 50
          sortOrder: DESC
          sortField: fieldName
          filterExpression: []
    ContractAgreement:
      type: object
      properties:
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/ContractAgreement
        assetId:
          type: string
        consumerId:
          type: string
        contractSigningDate:
          type: integer
          format: int64
        policy:
          $ref: "#/components/schemas/Policy"
        providerId:
          type: string
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': https://w3id.org/edc/v0.0.1/ns/ContractAgreement
        '@id': negotiation-id
        providerId: provider-id
        consumerId: consumer-id
        assetId: asset-id
        contractSigningDate: 1688465655
        policy:
          '@context': http://www.w3.org/ns/odrl.jsonld
          '@type': Set
          '@id': offer-id
          permission:
          - target: asset-id
            action: display
    ContractDefinitionInput:
      required:
      - '@context'
      - accessPolicyId
      - assetsSelector
      - contractPolicyId
      type: object
      properties:
        '@context':
          type: object
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/ContractDefinition
        accessPolicyId:
          type: string
        assetsSelector:
          type: array
          items:
            $ref: "#/components/schemas/Criterion"
        contractPolicyId:
          type: string
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@id': definition-id
        accessPolicyId: asset-policy-id
        contractPolicyId: contract-policy-id
        assetsSelector: []
    ContractDefinitionOutput:
      type: object
      properties:
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/ContractDefinition
        accessPolicyId:
          type: string
        assetsSelector:
          type: array
          items:
            $ref: "#/components/schemas/Criterion"
        contractPolicyId:
          type: string
        createdAt:
          type: integer
          format: int64
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@id': definition-id
        accessPolicyId: asset-policy-id
        contractPolicyId: contract-policy-id
        assetsSelector: []
        createdAt: 1688465655
    ContractNegotiation:
      type: object
      properties:
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/ContractNegotiation
        callbackAddresses:
          type: array
          items:
            $ref: "#/components/schemas/CallbackAddress"
        contractAgreementId:
          type: string
        counterPartyAddress:
          type: string
        counterPartyId:
          type: string
        errorDetail:
          type: string
        protocol:
          type: string
        state:
          type: string
        type:
          type: string
          enum:
          - CONSUMER
          - PROVIDER
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': https://w3id.org/edc/v0.0.1/ns/ContractNegotiation
        '@id': negotiation-id
        type: PROVIDER
        protocol: dataspace-protocol-http
        counterPartyId: counter-party-id
        counterPartyAddress: http://counter/party/address
        state: VERIFIED
        contractAgreementId: contract:agreement:id
        errorDetail: eventual-error-detail
        createdAt: 1688465655
        callbackAddresses:
        - transactional: false
          uri: http://callback/url
          events:
          - contract.negotiation
          - transfer.process
          authKey: auth-key
          authCodeId: auth-code-id
    ContractRequest:
      required:
      - '@context'
      - counterPartyAddress
      - policy
      - protocol
      type: object
      properties:
        '@context':
          type: object
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/ContractRequest
        callbackAddresses:
          type: array
          items:
            $ref: "#/components/schemas/CallbackAddress"
        counterPartyAddress:
          type: string
        policy:
          $ref: "#/components/schemas/Offer"
        protocol:
          type: string
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': https://w3id.org/edc/v0.0.1/ns/ContractRequest
        counterPartyAddress: http://provider-address
        protocol: dataspace-protocol-http
        policy:
          '@context': http://www.w3.org/ns/odrl.jsonld
          '@type': odrl:Offer
          '@id': offer-id
          assigner: providerId
          permission: []
          prohibition: []
          obligation: []
          target: assetId
        callbackAddresses:
        - transactional: false
          uri: http://callback/url
          events:
          - contract.negotiation
          - transfer.process
          authKey: auth-key
          authCodeId: auth-code-id
    Criterion:
      required:
      - operandLeft
      - operandRight
      - operator
      type: object
      properties:
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/Criterion
        operandLeft:
          type: object
        operandRight:
          type: object
        operator:
          type: string
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': Criterion
        operandLeft: fieldName
        operator: =
        operandRight: some value
    DataAddress:
      type: object
      properties:
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/DataAddress
        type:
          type: string
    DataPlaneInstanceSchemaV3:
      required:
      - '@context'
      - allowedDestTypes
      - allowedSourceTypes
      - url
      type: object
      properties:
        '@context':
          type: object
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/DataPlaneInstance
        allowedDestTypes:
          uniqueItems: true
          type: array
          deprecated: true
          items:
            type: string
            deprecated: true
        allowedSourceTypes:
          uniqueItems: true
          type: array
          items:
            type: string
        lastActive:
          type: integer
          format: int64
        state:
          type: string
        stateTimestamp:
          type: integer
          format: int64
        turnCount:
          type: integer
          format: int32
          deprecated: true
        url:
          type: string
          format: url
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@id': your-dataplane-id
        url: http://somewhere.com:1234/api/v1
        allowedSourceTypes:
        - source-type1
        - source-type2
        allowedDestTypes:
        - your-dest-type
        allowedTransferTypes:
        - transfer-type
        state: AVAILABLE
        stateTimestamp: 1688465655
    DataPlaneInstanceSchemaV4:
      required:
      - '@context'
      - allowedSourceTypes
      - url
      type: object
      properties:
        '@context':
          type: object
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/DataPlaneInstance
        allowedSourceTypes:
          uniqueItems: true
          type: array
          items:
            type: string
        lastActive:
          type: integer
          format: int64
        state:
          type: string
        stateTimestamp:
          type: integer
          format: int64
        url:
          type: string
          format: url
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@id': your-dataplane-id
        url: http://somewhere.com:1234/api/v1
        allowedSourceTypes:
        - source-type1
        - source-type2
        allowedTransferTypes:
        - transfer-type
        state: AVAILABLE
        stateTimestamp: 1688465655
    Dataset:
      type: object
      description: DCAT dataset
      example:
        '@id': bcca61be-e82e-4da6-bfec-9716a56cef35
        '@type': dcat:Dataset
        odrl:hasPolicy:
          '@id': OGU0ZTMzMGMtODQ2ZS00ZWMxLThmOGQtNWQxNWM0NmI2NmY4:YmNjYTYxYmUtZTgyZS00ZGE2LWJmZWMtOTcxNmE1NmNlZjM1:NDY2ZTZhMmEtNjQ1Yy00ZGQ0LWFlZDktMjdjNGJkZTU4MDNj
          '@type': odrl:Set
          odrl:permission:
            odrl:target: bcca61be-e82e-4da6-bfec-9716a56cef35
            odrl:action:
              odrl:type: http://www.w3.org/ns/odrl/2/use
            odrl:constraint:
              odrl:and:
              - odrl:leftOperand: https://w3id.org/edc/v0.0.1/ns/inForceDate
                odrl:operator:
                  '@id': odrl:gteq
                odrl:rightOperand: 2023-07-07T07:19:58.585601395Z
              - odrl:leftOperand: https://w3id.org/edc/v0.0.1/ns/inForceDate
                odrl:operator:
                  '@id': odrl:lteq
                odrl:rightOperand: 2023-07-12T07:19:58.585601395Z
          odrl:prohibition: []
          odrl:obligation: []
          odrl:target: bcca61be-e82e-4da6-bfec-9716a56cef35
        dcat:distribution:
        - '@type': dcat:Distribution
          dct:format:
            '@id': HttpData
          dcat:accessService: 5e839777-d93e-4785-8972-1005f51cf367
        description: description
        id: bcca61be-e82e-4da6-bfec-9716a56cef35
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
          dct: http://purl.org/dc/terms/
          edc: https://w3id.org/edc/v0.0.1/ns/
          dcat: http://www.w3.org/ns/dcat#
          odrl: http://www.w3.org/ns/odrl/2/
          dspace: https://w3id.org/dspace/v0.8/
    DatasetRequest:
      type: object
      properties:
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/CatalogRequest
        counterPartyAddress:
          type: string
        counterPartyId:
          type: string
        protocol:
          type: string
        querySpec:
          $ref: "#/components/schemas/QuerySpec"
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': DatasetRequest
        '@id': dataset-id
        counterPartyAddress: http://counter-party-address
        counterPartyId: counter-party-id
        protocol: dataspace-protocol-http
    EndpointDataReferenceEntry:
      type: object
      properties:
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/EndpointDataReferenceEntry
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@id': transfer-process-id
        transferProcessId: transfer-process-id
        agreementId: agreement-id
        contractNegotiationId: contract-negotiation-id
        assetId: asset-id
        providerId: provider-id
        createdAt: 1688465655
    Failure:
      type: object
      properties:
        failureDetail:
          type: string
        messages:
          type: array
          items:
            type: string
    HealthCheckResult:
      type: object
      properties:
        component:
          type: string
        failure:
          $ref: "#/components/schemas/Failure"
        isHealthy:
          type: boolean
    HealthStatus:
      type: object
      properties:
        componentResults:
          type: array
          items:
            $ref: "#/components/schemas/HealthCheckResult"
        isSystemHealthy:
          type: boolean
    IdResponse:
      type: object
      properties:
        '@id':
          type: string
        createdAt:
          type: integer
          format: int64
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@id': id-value
        createdAt: 1688465655
    JsonArray:
      type: array
      properties:
        empty:
          type: boolean
        valueType:
          type: string
          enum:
          - ARRAY
          - OBJECT
          - STRING
          - NUMBER
          - "TRUE"
          - "FALSE"
          - "NULL"
      items:
        $ref: "#/components/schemas/JsonValue"
    JsonObject:
      type: object
      properties:
        empty:
          type: boolean
        valueType:
          type: string
          enum:
          - ARRAY
          - OBJECT
          - STRING
          - NUMBER
          - "TRUE"
          - "FALSE"
          - "NULL"
      additionalProperties:
        $ref: "#/components/schemas/JsonValue"
    JsonValue:
      type: object
      properties:
        valueType:
          type: string
          enum:
          - ARRAY
          - OBJECT
          - STRING
          - NUMBER
          - "TRUE"
          - "FALSE"
          - "NULL"
    List:
      type: object
      properties:
        '@id':
          type: string
        groups:
          uniqueItems: true
          type: array
          items:
            type: string
      example:
        '@context':
          tx: https://w3id.org/tractusx/v0.0.1/ns/
        '@id': BPN000001234
        tx:groups: "group1,group2,group3"
    NegotiationState:
      type: object
      properties:
        state:
          type: string
    Offer:
      required:
      - '@id'
      - assigner
      - target
      type: object
      properties:
        '@id':
          type: string
        '@type':
          type: string
          example: http://www.w3.org/ns/odrl/2/Offer
        assigner:
          type: string
        target:
          type: string
      description: ODRL offer
      example:
        '@context': http://www.w3.org/ns/odrl.jsonld
        '@type': odrl:Offer
        '@id': offer-id
        assigner: providerId
        target: assetId
        permission: []
        prohibition: []
        obligation: []
    Policy:
      type: object
      description: ODRL policy
      example:
        '@context': http://www.w3.org/ns/odrl.jsonld
        '@id': 0949ba30-680c-44e6-bc7d-1688cbe1847e
        '@type': odrl:Set
        permission:
          target: http://example.com/asset:9898.movie
          action:
            type: http://www.w3.org/ns/odrl/2/use
          constraint:
            leftOperand: https://w3id.org/edc/v0.0.1/ns/left
            operator: eq
            rightOperand: value
        prohibition: []
        obligation: []
    PolicyDefinitionInput:
      required:
      - '@context'
      - policy
      type: object
      properties:
        '@context':
          type: object
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/PolicyDefinition
        policy:
          $ref: "#/components/schemas/Policy"
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@id': definition-id
        policy:
          '@context': http://www.w3.org/ns/odrl.jsonld
          '@type': Set
          uid: http://example.com/policy:1010
          profile: http://example.com/odrl:profile:02
          permission:
          - target: http://example.com/asset:9898.movie
            action: display
            constraint:
            - leftOperand: spatial
              operator: eq
              rightOperand: https://www.wikidata.org/wiki/Q183
              comment: i.e Germany
    PolicyDefinitionOutput:
      type: object
      properties:
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/PolicyDefinition
        policy:
          $ref: "#/components/schemas/Policy"
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@id': definition-id
        policy:
          '@context': http://www.w3.org/ns/odrl.jsonld
          '@type': Set
          uid: http://example.com/policy:1010
          permission:
          - target: http://example.com/asset:9898.movie
            action: display
            constraint:
            - leftOperand: spatial
              operator: eq
              rightOperand: https://www.wikidata.org/wiki/Q183
              comment: i.e Germany
        createdAt: 1688465655
    PolicyEvaluationPlanRequestSchema:
      type: object
      properties:
        policyScope:
          type: string
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': PolicyEvaluationPlanRequest
        policyScope: catalog
    PolicyEvaluationPlanSchema:
      type: object
      example:
        '@type': PolicyEvaluationPlan
        preValidators: DcpScopeExtractorFunction
        permissionSteps:
          '@type': PermissionStep
          isFiltered: false
          filteringReasons: []
          ruleFunctions: []
          constraintSteps:
            '@type': AtomicConstraintStep
            isFiltered: true
            filteringReasons:
            - leftOperand 'MembershipCredential' is not bound to scope 'request.catalog'
            - leftOperand 'MembershipCredential' is not bound to any function within
              scope 'request.catalog'
            functionParams:
            - '''MembershipCredential'''
            - EQ
            - '''active'''
          dutySteps: []
        prohibitionSteps: []
        obligationSteps: []
        postValidators: DefaultScopeMappingFunction
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
          edc: https://w3id.org/edc/v0.0.1/ns/
          odrl: http://www.w3.org/ns/odrl/2/
    PolicyValidationResultSchema:
      type: object
      properties:
        errors:
          type: array
          items:
            type: string
        isValid:
          type: boolean
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': PolicyValidationResult
        isValid: false
        errors:
        - error1
        - error2
    Properties:
      type: object
    ProtocolVersion:
      type: object
      description: Protocol Version
      example:
        protocolVersions:
        - version: 2024/1
          path: /2024/1
        - version: v0.8
          path: /
    QuerySpec:
      type: object
      properties:
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/QuerySpec
        filterExpression:
          type: array
          items:
            $ref: "#/components/schemas/Criterion"
        limit:
          type: integer
          format: int32
        offset:
          type: integer
          format: int32
        sortField:
          type: string
        sortOrder:
          type: string
          enum:
          - ASC
          - DESC
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': QuerySpec
        offset: 5
        limit: 10
        sortOrder: DESC
        sortField: fieldName
        filterExpression: []
    Retirement Example:
      type: object
      properties:
        '@id':
          type: string
        reason:
          type: string
      example:
        '@context':
          tx: https://w3id.org/tractusx/v0.0.1/ns/
          edc: https://w3id.org/edc/v0.0.1/ns/
        edc:agreementId: contract-agreement-id
        tx:reason: This contract agreement was retired since the physical counterpart
          is no longer valid.
    SuspendTransfer:
      type: object
      properties:
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/SuspendTransfer
        state:
          type: string
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': https://w3id.org/edc/v0.0.1/ns/SuspendTransfer
        reason: a reason to suspend
    TerminateNegotiationSchema:
      type: object
      properties:
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/TerminateNegotiation
        reason:
          type: string
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': https://w3id.org/edc/v0.0.1/ns/TerminateNegotiation
        '@id': negotiation-id
        reason: a reason to terminate
    TerminateTransfer:
      type: object
      properties:
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/TerminateTransfer
        state:
          type: string
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': https://w3id.org/edc/v0.0.1/ns/TerminateTransfer
        reason: a reason to terminate
    TransferProcess:
      type: object
      properties:
        '@id':
          type: string
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/TransferProcess
        callbackAddresses:
          type: array
          items:
            $ref: "#/components/schemas/CallbackAddress"
        contractAgreementId:
          type: string
        counterPartyAddress:
          type: string
        counterPartyId:
          type: string
        dataDestination:
          $ref: "#/components/schemas/DataAddress"
        errorDetail:
          type: string
        privateProperties:
          $ref: "#/components/schemas/Properties"
        protocol:
          type: string
        state:
          type: string
        type:
          type: string
          enum:
          - CONSUMER
          - PROVIDER
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': https://w3id.org/edc/v0.0.1/ns/TransferProcess
        '@id': process-id
        correlationId: correlation-id
        type: PROVIDER
        state: STARTED
        stateTimestamp: 1688465655
        assetId: asset-id
        contractId: contractId
        dataDestination:
          type: data-destination-type
        privateProperties:
          private-key: private-value
        errorDetail: eventual-error-detail
        createdAt: 1688465655
        callbackAddresses:
        - transactional: false
          uri: http://callback/url
          events:
          - contract.negotiation
          - transfer.process
          authKey: auth-key
          authCodeId: auth-code-id
    TransferRequest:
      required:
      - '@context'
      - contractId
      - counterPartyAddress
      - protocol
      - transferType
      type: object
      properties:
        '@context':
          type: object
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/TransferRequest
        assetId:
          type: string
          deprecated: true
        callbackAddresses:
          type: array
          items:
            $ref: "#/components/schemas/CallbackAddress"
        contractId:
          type: string
        counterPartyAddress:
          type: string
        dataDestination:
          $ref: "#/components/schemas/DataAddress"
        privateProperties:
          $ref: "#/components/schemas/Properties"
        protocol:
          type: string
        transferType:
          type: string
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': https://w3id.org/edc/v0.0.1/ns/TransferRequest
        protocol: dataspace-protocol-http
        counterPartyAddress: http://provider-address
        contractId: contract-id
        transferType: transferType
        dataDestination:
          type: data-destination-type
        privateProperties:
          private-key: private-value
        callbackAddresses:
        - transactional: false
          uri: http://callback/url
          events:
          - contract.negotiation
          - transfer.process
          authKey: auth-key
          authCodeId: auth-code-id
    TransferState:
      type: object
      properties:
        '@type':
          type: string
          example: https://w3id.org/edc/v0.0.1/ns/TransferState
        state:
          type: string
      example:
        '@context':
          '@vocab': https://w3id.org/edc/v0.0.1/ns/
        '@type': https://w3id.org/edc/v0.0.1/ns/TransferState
        state: STARTED
