openapi: 3.0.0
paths:
  /api/management/audit-logs:
    get:
      description: Fetches paginated audit log entries with optional filters.
      operationId: AuditLogController_list
      parameters:
        - name: order
          required: false
          in: query
          schema:
            default: DESC
            type: string
            enum:
              - ASC
              - DESC
        - name: order_by
          required: false
          in: query
          schema:
            default: modifiedDate
            type: string
        - name: page
          required: false
          in: query
          schema:
            minimum: 1
            default: 1
            type: number
        - name: per_page
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 100
            default: 100
            type: number
        - name: callerSub
          required: false
          in: query
          schema:
            type: string
        - name: callerType
          required: false
          in: query
          schema:
            type: string
        - name: resultAllowed
          required: false
          in: query
          schema:
            type: boolean
        - name: correlationId
          required: false
          in: query
          schema:
            type: string
        - name: ipAddress
          required: false
          in: query
          schema:
            type: string
        - name: requestPath
          required: false
          in: query
          schema:
            type: string
        - name: from
          required: false
          in: query
          schema:
            type: string
        - name: to
          required: false
          in: query
          schema:
            type: string
        - name: resourceType
          required: false
          in: query
          schema:
            type: array
            items:
              type: string
        - name: action
          required: false
          in: query
          schema:
            type: array
            items:
              type: string
        - name: severity
          required: false
          in: query
          schema:
            type: array
            items:
              type: string
              enum:
                - debug
                - info
                - warning
                - error
                - critical
      responses:
        "200":
          description: Successful response
          headers:
            x-page:
              description: Index of the current page (starting at 1)
              schema:
                type: integer
            x-prev-page:
              description: Index of the previous page
              schema:
                type: integer
              required: false
            x-next-page:
              description: Index of the next page
              schema:
                type: integer
              required: false
            x-per-page:
              description: Number of items per page
              schema:
                type: integer
            x-total-pages:
              description: Total number of pages
              schema:
                type: integer
            x-total:
              description: Total number of items
              schema:
                type: integer
            link:
              description: Web Linking to other pages of this resource
              schema:
                type: string
      security:
        - oauth2:
            - read:hdp.audit_log
      summary: List audit log entries
      tags: &a1
        - Audit Logs
  /api/management/audit-logs/{id}:
    get:
      description: Fetches a single audit log entry by its ID.
      operationId: AuditLogController_getById
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        "200":
          description: ""
      security:
        - oauth2:
            - read:hdp.audit_log
      summary: Get audit log entry by ID
      tags: *a1
  /api/settings:
    get:
      description: Retrieves the settings of the control plane.
      operationId: ConfigController_getSettings
      parameters: []
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RuntimeConfigDto"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Retrieve settings
      tags: &a2
        - Settings
  /api/settings/update:
    post:
      description: Updates runtime settings for the control plane.
      operationId: ConfigController_updateSettings
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RuntimeConfigDto"
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RuntimeConfigDto"
        "400":
          description: Malformed request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - update:hdp.config
      summary: Update settings
      tags: *a2
  /api/settings/upload:
    post:
      description: Uploads logo for the control plane, receive a base64 encoded url.
      operationId: ConfigController_uploadFile
      parameters: []
      responses:
        "200":
          description: ""
      security:
        - oauth2:
            - update:hdp.config
      summary: Upload logo
      tags: *a2
  /api/catalog:
    get:
      description: Get catalog, currently not implemented.
      operationId: DataPlaneController_getCatalog
      parameters: []
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
        "501":
          description: ""
      security: &a3
        - oauth2:
            - read:hdp.dataplane
      summary: Get catalog
      tags: &a4
        - Data Plane
  /health:
    get:
      description: Retrieves the current health of the control plane. If the control
        plane is running it always returns an empty 200 OK
      operationId: DataPlaneController_healthCheck
      parameters: []
      responses:
        "200":
          description: ""
        "502":
          description: ""
      security: *a3
      summary: Health check
      tags: *a4
  /api/management/state:
    get:
      description: Get the state of the data plane, consisting of the id, details and
        the dataset.
      operationId: DataPlaneManagementController_getState
      parameters: []
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPlaneStateDto"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:hdp.dataplane
      summary: Get Data Plane state
      tags: &a5
        - Data Plane Management
  /api/management/catalog:
    get:
      description: Get the current catalog from the Control Plane.
      operationId: DataPlaneManagementController_getCatalog
      parameters: []
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CatalogSchema"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:hdp.dataplane
      summary: Get catalog
      tags: *a5
  /api/management/registry/addresses:
    get:
      description: Get the current registry addresses from the Control Plane.
      operationId: DataPlaneManagementController_getRegistryAddresses
      parameters: []
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    didId:
                      type: string
                    address:
                      type: string
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:hdp.dataplane
      summary: Get registry addresses
      tags: *a5
  /api/management/registry/catalog/{participantId}:
    get:
      description: Get the catalog of a participant based on its participant ID.
      operationId: DataPlaneManagementController_getRegistryCatalog
      parameters:
        - name: participantId
          required: true
          in: path
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/CatalogSchema"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:hdp.dataplane
      summary: Get participant catalog
      tags: *a5
  /api/management/registry/refresh:
    post:
      description: Force refresh the registry by triggering a re-crawl of all
        participant addresses and catalogs on the Control Plane.
      operationId: DataPlaneManagementController_refreshRegistry
      parameters: []
      responses:
        "200":
          description: Registry refresh initiated successfully
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - execute:hdp.dataplane
      summary: Refresh registry
      tags: *a5
  /api/management/participant-id:
    get:
      description: Get the ID of the current participant from the Control Plane catalog.
      operationId: DataPlaneManagementController_getParticipantId
      parameters: []
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: string
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:adp.dataplane
      summary: Get current participant ID
      tags: *a5
  /api/management/refresh:
    post:
      description: Use this endpoint to (re)register your data plane. Currently it
        will register with defaults from the config.
      operationId: DataPlaneManagementController_refreshRegistration
      parameters: []
      responses:
        "202":
          description: ""
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - execute:hdp.dataplane
      summary: (Re)register data plane
      tags: *a5
  /api/management/openapi:
    get:
      description: Fetch an OpenAPI document from a given URL and return it as JSON.
      operationId: DataPlaneManagementController_fetchOpenApiDocument
      parameters:
        - name: url
          required: true
          in: query
          description: URL of the OpenAPI document
          schema:
            type: string
      responses:
        "200":
          description: ""
      security:
        - oauth2:
            - read:hdp.dataplane
      summary: Fetch OpenAPI document
      tags: *a5
  /api/management/config:
    get:
      description: Get the current dataset configuration.
      operationId: DataPlaneManagementController_getDatasetConfig
      parameters: []
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DatasetConfig"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:hdp.dataplane
      summary: Get dataset
      tags: *a5
    put:
      description: Update the current dataset configuration.
      operationId: DataPlaneManagementController_updateDatasetConfig
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DatasetConfig"
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPlaneStateDto"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - update:hdp.dataplane
      summary: Update dataset
      tags: *a5
  /api/management/datasets:
    get:
      description: Retrieve all datasets.
      operationId: DataPlaneManagementController_getDatasets
      parameters: []
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DatasetItem"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:hdp.dataplane
      summary: Get datasets
      tags: *a5
    post:
      description: Create a new dataset.
      operationId: DataPlaneManagementController_createDataset
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DatasetItem"
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DatasetItem"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - create:hdp.dataplane
      summary: Create dataset
      tags: *a5
  /api/management/datasets/{id}:
    get:
      description: Retrieve a specific dataset by id.
      operationId: DataPlaneManagementController_getDataset
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DatasetConfig"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:hdp.dataplane
      summary: Get dataset
      tags: *a5
    put:
      description: Update an existing dataset by id.
      operationId: DataPlaneManagementController_updateDataset
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DatasetItem"
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DatasetItem"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - update:hdp.dataplane
      summary: Update dataset
      tags: *a5
    delete:
      description: Delete an existing dataset by id.
      operationId: DataPlaneManagementController_deleteDataset
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DatasetItemWithDto"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - delete:hdp.dataplane
      summary: Delete dataset
      tags: *a5
  /api/auth/user:
    get:
      description: Retrieves current user state, whether someone is logged in or not a
        200 result is provided. This is used in the frontend to determine
        whether certain aspects should be shown.
      operationId: AuthController_getUser
      parameters: []
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/AuthenticatedUser"
                  - $ref: "#/components/schemas/UnauthenticatedUser"
      summary: Retrieve current user status
      tags: &a6
        - Authentication
  /api/auth/login:
    get:
      description: Redirects user to the correct authorization server
      operationId: AuthController_login
      parameters: []
      responses:
        "302":
          description: ""
      summary: Login redirect
      tags: *a6
  /api/auth/logout:
    get:
      description: Removes session information and redirects user the root of the
        frontend (`auth.redirectURL`)
      operationId: AuthController_logout
      parameters: []
      responses:
        "302":
          description: ""
      summary: Logout redirect
      tags: *a6
  /api/auth/callback:
    get:
      description: Users are redirected from the authorization server to this endpoint
        which will redirect them to the frontend (`auth.redirectURL`)
      operationId: AuthController_callback
      parameters:
        - name: state
          required: false
          in: query
          description: The state parameter
          schema:
            example: randomState
            type: string
        - name: code
          required: false
          in: query
          description: The authorization code
          schema:
            example: code
            type: string
        - name: access_token
          required: false
          in: query
          description: The access token
          schema:
            type: string
        - name: token_type
          required: false
          in: query
          description: The token type
          schema:
            example: Bearer
            type: string
        - name: expires_in
          required: false
          in: query
          description: The token expiration in seconds
          schema:
            example: 3600
            type: string
        - name: id_token
          required: false
          in: query
          description: The ID token
          schema:
            type: string
        - name: code_verifier
          required: false
          in: query
          description: The code verifier
          schema:
            example: randomChallengeVerifier
            type: string
      responses:
        "302":
          description: ""
      summary: Login callback
      tags: *a6
  /api/management/logging/ingress:
    get:
      operationId: LoggingController_getIngressLogs
      parameters:
        - name: order
          required: false
          in: query
          schema:
            default: DESC
            type: string
            enum:
              - ASC
              - DESC
        - name: page
          required: false
          in: query
          schema:
            minimum: 1
            default: 1
            type: number
        - name: take
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 50
            default: 10
            type: number
        - required: false
          name: order
          in: query
          schema:
            default: DESC
            type: string
        - required: false
          name: page
          in: query
          schema:
            minimum: 1
            default: 1
            type: number
        - required: false
          name: take
          in: query
          schema:
            minimum: 1
            maximum: 50
            default: 10
            type: number
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PageDto"
      security:
        - oauth2:
            - read:hdp.logs
      summary: Get ingress logs
      tags: &a7
        - Logging
  /api/management/logging/egress:
    get:
      operationId: LoggingController_getEgressLogs
      parameters:
        - name: order
          required: false
          in: query
          schema:
            default: DESC
            type: string
            enum:
              - ASC
              - DESC
        - name: page
          required: false
          in: query
          schema:
            minimum: 1
            default: 1
            type: number
        - name: take
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 50
            default: 10
            type: number
        - required: false
          name: order
          in: query
          schema:
            default: DESC
            type: string
        - required: false
          name: page
          in: query
          schema:
            minimum: 1
            default: 1
            type: number
        - required: false
          name: take
          in: query
          schema:
            minimum: 1
            maximum: 50
            default: 10
            type: number
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PageDto"
      security:
        - oauth2:
            - read:hdp.logs
      summary: Get egress logs
      tags: *a7
  /api/management/transfers:
    get:
      operationId: TransferManagementController_getTransfers
      parameters: []
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TransferDto"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:dp.transfer
      summary: Get all transfers
      tags: &a8
        - Data Plane Management
  /api/management/transfers/{id}:
    get:
      operationId: TransferManagementController_getTransfer
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransferDto"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:dp.transfer
      summary: Get transfer by ID
      tags: *a8
  /api/management/transfers/{id}/metadata:
    get:
      operationId: TransferManagementController_getMetadata
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MetadataDto"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - read:dp.transfer
      summary: Get metadata of transfer by ID
      tags: *a8
  /api/management/transfers/{id}/start:
    post:
      operationId: TransferManagementController_startTransfer
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
      responses:
        "202":
          description: ""
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - execute:dp.transfer
      summary: Start a transfer by ID
      tags: *a8
  /api/management/transfers/{id}/completion:
    post:
      operationId: TransferManagementController_completeTransfer
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
      responses:
        "202":
          description: ""
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - execute:dp.transfer
      summary: Complete a transfer by ID
      tags: *a8
  /api/management/transfers/{id}/termination:
    post:
      operationId: TransferManagementController_terminateTransfer
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: code
          required: true
          in: query
          schema:
            type: string
        - name: reason
          required: true
          in: query
          schema:
            type: string
      responses:
        "202":
          description: ""
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - execute:dp.transfer
      summary: Terminate a transfer by ID
      tags: *a8
  /api/management/transfers/{id}/suspension:
    post:
      operationId: TransferManagementController_suspendTransfer
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: reason
          required: true
          in: query
          schema:
            type: string
        - name: code
          required: true
          in: query
          schema:
            type: string
      responses:
        "202":
          description: ""
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - execute:dp.transfer
      summary: Suspend a transfer by ID
      tags: *a8
  /api/management/transfers/{id}/execute/{path}:
    get:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: TransferManagementController_executeTransfer_get
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request
      tags: *a8
    post:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: TransferManagementController_executeTransfer_post
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request
      tags: *a8
    put:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: TransferManagementController_executeTransfer_put
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request
      tags: *a8
    delete:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: TransferManagementController_executeTransfer_delete
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request
      tags: *a8
    patch:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: TransferManagementController_executeTransfer_patch
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request
      tags: *a8
    options:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: TransferManagementController_executeTransfer_options
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request
      tags: *a8
    head:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: TransferManagementController_executeTransfer_head
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request
      tags: *a8
    search:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: TransferManagementController_executeTransfer_search
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request
      tags: *a8
  /api/management/execute/{path}:
    get:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_get
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    post:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_post
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    put:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_put
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    delete:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_delete
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    patch:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_patch
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    options:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_options
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    head:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_head
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    search:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_search
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
  /api/management/execute:
    get:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_get
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    post:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_post
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    put:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_put
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    delete:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_delete
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    patch:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_patch
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    options:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_options
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    head:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_head
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
    search:
      description: This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy and the transfer hasn't been created yet. Used for automatic
        handling of the DSP.
      operationId: TransferManagementController_executeTransferWithoutId_search
      parameters:
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
        - name: x-audience
          required: true
          in: header
          schema:
            type: string
        - name: x-controlplane-address
          required: true
          in: header
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      summary: Proxy a request without transfer ID
      tags: *a8
  /api/proxy/{id}/{path}:
    get:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_get
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: &a9
        - Proxy
    post:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_post
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    put:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_put
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    delete:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_delete
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    patch:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_patch
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    options:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_options
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    head:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_head
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    search:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_search
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
  /api/proxy/{id}:
    get:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_get
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    post:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_post
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    put:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_put
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    delete:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_delete
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    patch:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_patch
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    options:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_options
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    head:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_head
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
    search:
      description: "This endpoint is used if the HTTP Data Plane needs to serve as a
        proxy. "
      operationId: ProxyController_getData_search
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer identifier
          schema:
            type: string
        - name: path
          required: true
          in: path
          description: Path of receiving application
          schema:
            type: string | string[] | undefined
      responses:
        "200":
          description: ""
      summary: Proxy a request
      tags: *a9
  /api/transfers/request/{role}:
    post:
      description: Requests a transfer from control plane to data plane.
      operationId: TransferController_requestTransfer
      parameters:
        - name: role
          required: true
          in: path
          schema:
            type: string
        - name: processId
          required: true
          in: query
          schema:
            type: string
        - name: x-remote-party
          required: true
          in: header
          schema:
            type: string
        - name: x-dataset-id
          required: true
          in: header
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TransferRequestMessageSchema"
      responses:
        "200":
          description: ""
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DataPlaneRequestResponseDto"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorDto"
      security:
        - oauth2:
            - create:dp.transfer
      summary: Request Transfer
      tags: &a10
        - Data Plane
  /api/transfers/{id}/start:
    post:
      operationId: TransferController_startTransfer
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer ID
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TransferStartMessageSchema"
      responses:
        "202":
          description: Transfer started successfully
      security:
        - oauth2:
            - execute:dp.transfer
      summary: Start transfer process
      tags: *a10
  /api/transfers/{id}/completion:
    post:
      operationId: TransferController_completeTransfer
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer ID
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TransferCompletionMessageSchema"
      responses:
        "202":
          description: Transfer completed successfully
      security:
        - oauth2:
            - execute:dp.transfer
      summary: Complete transfer process
      tags: *a10
  /api/transfers/{id}/termination:
    post:
      operationId: TransferController_terminateTransfer
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer ID
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TransferTerminationMessageSchema"
      responses:
        "202":
          description: Transfer terminated successfully
      security:
        - oauth2:
            - execute:dp.transfer
      summary: Terminate transfer process
      tags: *a10
  /api/transfers/{id}/suspension:
    post:
      operationId: TransferController_suspendTransfer
      parameters:
        - name: id
          required: true
          in: path
          description: Transfer ID
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TransferSuspensionMessageSchema"
      responses:
        "202":
          description: Transfer suspended successfully
      security:
        - oauth2:
            - execute:dp.transfer
      summary: Suspend transfer process
      tags: *a10
info:
  title: TSG HTTP Data Plane
  description: This OpenAPI specification shows the endpoints of the HTTP Data Plane.
  version: ""
  contact: {}
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
tags:
  - name: Health
    description: Health Controller
  - name: Settings
    description: Settings Controller
  - name: Authentication
    description: Authentication Controller
  - name: Data Plane
    description: Data Plane Controller
  - name: Data Plane Management
    description: Data Plane Management Controller
  - name: Proxy
    description: Proxy Controller
  - name: Logging
    description: Logging Controller
servers: []
components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          scopes: &a11
            create:hdp.config: create:hdp.config
            read:hdp.config: read:hdp.config
            update:hdp.config: update:hdp.config
            delete:hdp.config: delete:hdp.config
            execute:hdp.config: execute:hdp.config
            manage:hdp.config: manage:hdp.config
            create:hdp.dataplane: create:hdp.dataplane
            read:hdp.dataplane: read:hdp.dataplane
            update:hdp.dataplane: update:hdp.dataplane
            delete:hdp.dataplane: delete:hdp.dataplane
            execute:hdp.dataplane: execute:hdp.dataplane
            manage:hdp.dataplane: manage:hdp.dataplane
            create:hdp.logs: create:hdp.logs
            read:hdp.logs: read:hdp.logs
            update:hdp.logs: update:hdp.logs
            delete:hdp.logs: delete:hdp.logs
            execute:hdp.logs: execute:hdp.logs
            manage:hdp.logs: manage:hdp.logs
        clientCredentials:
          scopes: *a11
  schemas:
    RuntimeConfigDto:
      type: object
      properties:
        color:
          type: string
          example: "#3B8BF6"
        darkThemeUrl:
          type: string
          example: https://example.com/darktheme.png
        lightThemeUrl:
          type: string
          example: https://example.com/lighttheme.png
      required:
        - color
    ErrorDto:
      type: object
      properties:
        name:
          type: string
          example: ResourceNotFound
        status:
          type: string
          example: 404 Not Found
        code:
          type: number
          example: 404
        message:
          type: object
          example: The requested resource does not exist.
        error:
          type: string
          example: Not Found
      required:
        - name
        - status
        - code
    DataPlaneDetailsDto:
      type: object
      properties:
        dataplaneType:
          type: string
          example: exampleType
        title:
          type: string
          example: Dataplane Titel
        endpointPrefix:
          type: string
          example: /api/v1/dataplane
        callbackAddress:
          type: string
          example: http://localhost/callback
        managementAddress:
          type: string
          example: http://localhost/manage
        catalogSynchronization:
          type: string
          enum:
            - push
            - pull
          example: push
        role:
          type: string
          enum:
            - consumer
            - provider
            - both
          example: consumer
        id:
          type: string
          example: dp-12345
      required:
        - dataplaneType
        - title
        - endpointPrefix
        - callbackAddress
        - managementAddress
        - catalogSynchronization
        - role
        - id
    DataPlaneStateDto:
      type: object
      properties:
        id:
          type: string
          example: 44d1f3d6-f65d-4a7c-84db-f92ba826305e
        details:
          $ref: "#/components/schemas/DataPlaneDetailsDto"
      required:
        - id
        - details
    ConstraintSchema:
      type: object
      properties:
        "@type":
          type: string
          example: Constraint
        leftOperand:
          type: string
          example: leftOperandExample
        operator:
          type: string
          example: operatorExample
        rightOperand:
          type: object
          example:
            value: rightOperandExample
        rightOperandReference:
          type: string
          example: rightOperandReferenceExample
      required:
        - "@type"
        - leftOperand
        - operator
    PermissionSchema:
      type: object
      properties:
        "@type":
          type: string
          example: Permission
        assigner:
          type: string
          example: assignerExample
        assignee:
          type: string
          example: assigneeExample
        action:
          type: string
          example: actionExample
        target:
          type: string
          example: targetExample
        constraint:
          example: &a12 []
          type: array
          items:
            $ref: "#/components/schemas/ConstraintSchema"
        Duty:
          example: []
          type: array
          items:
            type: string
      required:
        - "@type"
        - action
    ProhibitionSchema:
      type: object
      properties:
        "@type":
          type: string
          example: Prohibition
        assigner:
          type: string
          example: assignerExample
        assignee:
          type: string
          example: assigneeExample
        action:
          type: string
          example: actionExample
        target:
          type: string
          example: targetExample
        constraint:
          example: *a12
          type: array
          items:
            $ref: "#/components/schemas/ConstraintSchema"
      required:
        - "@type"
        - action
    DutySchema:
      type: object
      properties:
        "@type":
          type: string
          example: Duty
        assigner:
          type: string
          example: assignerExample
        assignee:
          type: string
          example: assigneeExample
        action:
          type: string
          example: actionExample
        target:
          type: string
          example: targetExample
        constraint:
          example: *a12
          type: array
          items:
            $ref: "#/components/schemas/ConstraintSchema"
      required:
        - "@type"
        - action
    PolicySchema:
      type: object
      properties:
        "@id":
          type: string
          example: 3f2592da-ffc9-40cb-a336-a9daa9343ce8
        "@type":
          type: string
          example: Offer
        assigner:
          type: string
          example: assignerExample
        assignee:
          type: string
          example: assigneeExample
        profile:
          type: string
          example: profileExample
        permission:
          example: &a20 []
          type: array
          items:
            $ref: "#/components/schemas/PermissionSchema"
        prohibition:
          example: &a21 []
          type: array
          items:
            $ref: "#/components/schemas/ProhibitionSchema"
        obligation:
          example: &a22 []
          type: array
          items:
            $ref: "#/components/schemas/DutySchema"
        target:
          type: string
          example: targetExample
      required:
        - "@id"
        - "@type"
    DurationSchema:
      type: object
      properties:
        "@value":
          type: string
          example: P3Y6M4DT12H30M5S
        "@type":
          type: string
          example: xsd:duration
      required:
        - "@value"
        - "@type"
    DatasetSchema:
      type: object
      properties:
        "@id":
          type: string
          example: 3f2592da-ffc9-40cb-a336-a9daa9343ce8
        contactPoint:
          type: string
          example: contactPointExample
        keyword:
          example: &a13
            - keyword1
            - keyword2
          type: array
          items:
            type: string
        landingPage:
          type: string
          example: landingPageExample
        theme:
          example: &a14
            - theme1
            - theme2
          type: array
          items:
            type: string
        conformsTo:
          example: &a15
            - conformsToExample
          type: array
          items:
            type: string
        creator:
          type: string
          example: creatorExample
        description:
          example: &a16
            - description1
            - description2
          type: array
          items:
            type: string
        identifier:
          type: string
          example: identifierExample
        isReferencedBy:
          type: string
          example: isReferencedByExample
        issued:
          type: string
          example: 2020-01-01
        language:
          type: string
          example: en
        license:
          type: string
          example: licenseExample
        modified:
          type: string
          example: 2020-01-02
        publisher:
          type: string
          example: publisherExample
        relation:
          type: string
          example: relationExample
        title:
          type: string
          example: titleExample
        type:
          type: string
          example: typeExample
        hasPolicy:
          example: &a17 []
          type: array
          items:
            $ref: "#/components/schemas/PolicySchema"
        hasVersion:
          example: &a18
            - version1
            - version2
          type: array
          items:
            type: string
        isVersionOf:
          type: string
          example: isVersionOfExample
        version:
          type: string
          example: versionExample
        hasCurrentVersion:
          type: string
          example: hasCurrentVersionExample
        previousVersion:
          type: string
          example: previousVersionExample
        "@type":
          type: string
          example: Dataset
        distribution:
          type: array
          items:
            type: string
        spatialResolutionInMeters:
          type: string
          example: "100"
        temporalResolution:
          example: P1Y
          allOf:
            - $ref: "#/components/schemas/DurationSchema"
        accrualPeriodicity:
          type: string
          example: accrualPeriodicityExample
        spatial:
          type: string
          example: spatialExample
        temporal:
          type: string
          example: temporalExample
        wasGeneratedBy:
          type: string
          example: wasGeneratedByExample
      required:
        - "@id"
        - "@type"
    ResourceSchema:
      type: object
      properties:
        "@id":
          type: string
          example: 3f2592da-ffc9-40cb-a336-a9daa9343ce8
        "@type":
          type: string
          example: Resource
        contactPoint:
          type: string
          example: contactPointExample
        keyword:
          example: *a13
          type: array
          items:
            type: string
        landingPage:
          type: string
          example: landingPageExample
        theme:
          example: *a14
          type: array
          items:
            type: string
        conformsTo:
          example: *a15
          type: array
          items:
            type: string
        creator:
          type: string
          example: creatorExample
        description:
          example: *a16
          type: array
          items:
            type: string
        identifier:
          type: string
          example: identifierExample
        isReferencedBy:
          type: string
          example: isReferencedByExample
        issued:
          type: string
          example: 2020-01-01
        language:
          type: string
          example: en
        license:
          type: string
          example: licenseExample
        modified:
          type: string
          example: 2020-01-02
        publisher:
          type: string
          example: publisherExample
        relation:
          type: string
          example: relationExample
        title:
          type: string
          example: titleExample
        type:
          type: string
          example: typeExample
        hasPolicy:
          example: *a17
          type: array
          items:
            $ref: "#/components/schemas/PolicySchema"
        hasVersion:
          example: *a18
          type: array
          items:
            type: string
        isVersionOf:
          type: string
          example: isVersionOfExample
        version:
          type: string
          example: versionExample
        hasCurrentVersion:
          type: string
          example: hasCurrentVersionExample
        previousVersion:
          type: string
          example: previousVersionExample
      required:
        - "@id"
        - "@type"
    CatalogRecordSchema:
      type: object
      properties:
        "@id":
          type: string
          example: 3f2592da-ffc9-40cb-a336-a9daa9343ce8
        "@type":
          type: string
          example: CatalogRecord
        conformsTo:
          example:
            - conformsToExample
          type: array
          items:
            type: string
        description:
          example:
            - Record description
          type: array
          items:
            type: string
        issued:
          format: date-time
          type: string
          example: 2020-03-01T00:00:00Z
        modified:
          format: date-time
          type: string
          example: 2020-03-02T00:00:00Z
        title:
          type: string
          example: Catalog title example
        primaryTopic:
          example: {}
          allOf:
            - $ref: "#/components/schemas/ResourceSchema"
      required:
        - "@id"
        - "@type"
    DataServiceSchema:
      type: object
      properties:
        "@id":
          type: string
          example: 3f2592da-ffc9-40cb-a336-a9daa9343ce8
        contactPoint:
          type: string
          example: contactPointExample
        keyword:
          example: *a13
          type: array
          items:
            type: string
        landingPage:
          type: string
          example: landingPageExample
        theme:
          example: *a14
          type: array
          items:
            type: string
        conformsTo:
          example: *a15
          type: array
          items:
            type: string
        creator:
          type: string
          example: creatorExample
        description:
          example: *a16
          type: array
          items:
            type: string
        identifier:
          type: string
          example: identifierExample
        isReferencedBy:
          type: string
          example: isReferencedByExample
        issued:
          type: string
          example: 2020-01-01
        language:
          type: string
          example: en
        license:
          type: string
          example: licenseExample
        modified:
          type: string
          example: 2020-01-02
        publisher:
          type: string
          example: publisherExample
        relation:
          type: string
          example: relationExample
        title:
          type: string
          example: titleExample
        type:
          type: string
          example: typeExample
        hasPolicy:
          example: *a17
          type: array
          items:
            $ref: "#/components/schemas/PolicySchema"
        hasVersion:
          example: *a18
          type: array
          items:
            type: string
        isVersionOf:
          type: string
          example: isVersionOfExample
        version:
          type: string
          example: versionExample
        hasCurrentVersion:
          type: string
          example: hasCurrentVersionExample
        previousVersion:
          type: string
          example: previousVersionExample
        "@type":
          type: string
          example: DataService
        endpointDescription:
          type: string
          example: endpointDescriptionExample
        endpointURL:
          type: string
          example: https://example.com/api
        servesDataset:
          example: []
          type: array
          items:
            $ref: "#/components/schemas/DatasetSchema"
      required:
        - "@id"
        - "@type"
    CatalogSchema:
      type: object
      properties:
        "@id":
          type: string
          example: 3f2592da-ffc9-40cb-a336-a9daa9343ce8
        contactPoint:
          type: string
          example: contactPointExample
        keyword:
          example: *a13
          type: array
          items:
            type: string
        landingPage:
          type: string
          example: landingPageExample
        theme:
          example: *a14
          type: array
          items:
            type: string
        conformsTo:
          example: *a15
          type: array
          items:
            type: string
        creator:
          type: string
          example: creatorExample
        description:
          example: *a16
          type: array
          items:
            type: string
        identifier:
          type: string
          example: identifierExample
        isReferencedBy:
          type: string
          example: isReferencedByExample
        issued:
          type: string
          example: 2020-01-01
        language:
          type: string
          example: en
        license:
          type: string
          example: licenseExample
        modified:
          type: string
          example: 2020-01-02
        publisher:
          type: string
          example: publisherExample
        relation:
          type: string
          example: relationExample
        title:
          type: string
          example: titleExample
        type:
          type: string
          example: typeExample
        hasPolicy:
          example: *a17
          type: array
          items:
            $ref: "#/components/schemas/PolicySchema"
        hasVersion:
          example: *a18
          type: array
          items:
            type: string
        isVersionOf:
          type: string
          example: isVersionOfExample
        version:
          type: string
          example: versionExample
        hasCurrentVersion:
          type: string
          example: hasCurrentVersionExample
        previousVersion:
          type: string
          example: previousVersionExample
        distribution:
          type: array
          items:
            type: string
        spatialResolutionInMeters:
          type: string
          example: "100"
        temporalResolution:
          example: P1Y
          allOf:
            - $ref: "#/components/schemas/DurationSchema"
        accrualPeriodicity:
          type: string
          example: accrualPeriodicityExample
        spatial:
          type: string
          example: spatialExample
        temporal:
          type: string
          example: temporalExample
        wasGeneratedBy:
          type: string
          example: wasGeneratedByExample
        "@type":
          type: string
          example: Catalog
        participantId:
          type: string
          example: did:web:example
        dataset:
          example: []
          type: array
          items:
            $ref: "#/components/schemas/DatasetSchema"
        record:
          example: {}
          type: array
          items:
            $ref: "#/components/schemas/CatalogRecordSchema"
        service:
          example: []
          type: array
          items:
            $ref: "#/components/schemas/DataServiceSchema"
        themeTaxonomy:
          type: string
          example: themeTaxonomyExample
        hasPart:
          example: []
          type: array
          items:
            $ref: "#/components/schemas/ResourceSchema"
        homepage:
          type: string
          example: https://example.com/homepage
      required:
        - "@id"
        - "@type"
        - participantId
    DatasetConfig:
      type: object
      properties:
        type:
          type: string
          description: Type of the dataset configuration
          enum:
            - versioned
            - collection
        validateExtraProps:
          type: string
          description: Whether to validate extraProps for unknown prefixes and
            unresolvable keys. Defaults to 'error'.
          enum:
            - error
            - warn
            - ignore
          default: error
      required:
        - type
    RuleConstraintConfig:
      type: object
      properties:
        type:
          type: string
          description: Type of the constraint
          example: CredentialType
        value:
          type: string
          description: Value of the constraint
          example: MembershipCredential
      required:
        - type
        - value
    PolicyRuleConfig:
      type: object
      properties:
        action:
          type: string
          description: Action of the rule
          example: use
        constraints:
          description: Constraints of the rule
          type: array
          items:
            $ref: "#/components/schemas/RuleConstraintConfig"
      required:
        - action
    PolicyConfig:
      type: object
      properties:
        type:
          type: string
          description: Definition type of the policy
          enum:
            - default
            - rules
            - manual
          default: default
        permissions:
          description: Permissions of the policy
          type: array
          items:
            $ref: "#/components/schemas/PolicyRuleConfig"
        prohibitions:
          description: Prohibitions of the policy
          type: array
          items:
            $ref: "#/components/schemas/PolicyRuleConfig"
        raw:
          type: object
          description: Raw serialized ODRL offer
      required:
        - type
    DatasetItem:
      type: object
      properties:
        id:
          type: object
          description: ID of the dataset item
          nullable: true
        title:
          type: string
          description: Title of the dataset item
          example: Example Dataset
        description:
          description: Description of the dataset
          type: array
          items:
            type: string
        version:
          type: string
          description: Version of the dataset item
          example: 1.0.0
        backendUrl:
          type: string
          description: Backend URL of the dataset item
          example: http://localhost:3000
        authorization:
          type: object
          description: Authorization header required for the backend
        mediaType:
          type: object
          description: Media type of the dataset item
          example: application/json
        schemaRef:
          type: object
          description: Schema reference of the dataset item
        openApiSpecRef:
          type: object
          description: OpenAPI specification reference of the dataset
        policy:
          description: Policy of the dataset item
          type: array
          items:
            $ref: "#/components/schemas/PolicyConfig"
        extraProps:
          type: object
          description: Additional DCAT properties for the dataset item
          example: &a19
            dcat:keyword:
              - example
      required:
        - title
        - version
        - backendUrl
    DatasetItemWithDto:
      type: object
      properties:
        id:
          type: object
          description: ID of the dataset item
          nullable: true
        title:
          type: string
          description: Title of the dataset item
          example: Example Dataset
        description:
          description: Description of the dataset
          type: array
          items:
            type: string
        version:
          type: string
          description: Version of the dataset item
          example: 1.0.0
        backendUrl:
          type: string
          description: Backend URL of the dataset item
          example: http://localhost:3000
        authorization:
          type: object
          description: Authorization header required for the backend
        mediaType:
          type: object
          description: Media type of the dataset item
          example: application/json
        schemaRef:
          type: object
          description: Schema reference of the dataset item
        openApiSpecRef:
          type: object
          description: OpenAPI specification reference of the dataset
        policy:
          description: Policy of the dataset item
          type: array
          items:
            $ref: "#/components/schemas/PolicyConfig"
        extraProps:
          type: object
          description: Additional DCAT properties for the dataset item
          example: *a19
        dataset:
          type: object
          description: The full DCAT dataset DTO
      required:
        - title
        - version
        - backendUrl
    ClientInfo:
      type: object
      properties:
        sub:
          type: string
          example: user-id-123
        name:
          type: string
          example: John Doe
        email:
          type: string
          example: john.doe@example.com
        didId:
          type: string
          example: did:example:123456789
        permissions:
          example:
            - read:credential:own
            - manage:key
          description: ABAC permissions
          type: array
          items:
            type: string
        refreshToken:
          type: string
          example: refresh-token-abc123
      required:
        - sub
        - name
        - email
        - permissions
    AuthenticatedUser:
      type: object
      properties:
        state:
          type: object
          example: authenticated
        user:
          example:
            sub: user-id-123
            name: John Doe
            email: john.doe@example.com
            permissions:
              - read:credential:own
              - manage:key
            didId: did:example:123456789
            refreshToken: refresh-token-abc123
          allOf:
            - $ref: "#/components/schemas/ClientInfo"
      required:
        - state
        - user
    UnauthenticatedUser:
      type: object
      properties:
        state:
          type: object
          example: unauthenticated
      required:
        - state
    PageMetaDto:
      type: object
      properties:
        page:
          type: number
          example: 1
        take:
          type: number
          example: 10
        itemCount:
          type: number
          example: 100
        pageCount:
          type: number
          example: 10
        hasPreviousPage:
          type: boolean
          example: false
        hasNextPage:
          type: boolean
          example: true
      required:
        - page
        - take
        - itemCount
        - pageCount
        - hasPreviousPage
        - hasNextPage
    PageDto:
      type: object
      properties:
        data:
          type: array
          items:
            type: array
        meta:
          $ref: "#/components/schemas/PageMetaDto"
      required:
        - data
        - meta
    EndpointPropertySchema:
      type: object
      properties:
        "@type":
          type: string
          example: EndpointProperty
        name:
          type: string
          example: endpointName
        value:
          type: string
          example: endpointValue
      required:
        - "@type"
        - name
        - value
    DataAddressSchema:
      type: object
      properties:
        "@type":
          type: string
          example: DataAddress
        endpointType:
          type: string
          example: http
        endpoint:
          type: string
          example: https://api.example.com
        endpointProperties:
          example:
            - "@type": EndpointProperty
              name: endpointName
              value: endpointValue
          type: array
          items:
            $ref: "#/components/schemas/EndpointPropertySchema"
      required:
        - "@type"
        - endpointType
        - endpoint
    TransferRequestMessageSchema:
      type: object
      properties:
        "@type":
          type: string
          example: TransferRequestMessage
        consumerPid:
          type: string
          example: consumer-pid-123
        agreementId:
          type: string
          example: agreement-id-456
        format:
          type: string
          example: application/json
        dataAddress:
          example:
            "@type": DataAddress
            endpointType: http
            endpoint: https://api.example.com
            endpointProperties:
              - "@type": EndpointProperty
                name: name
                value: value
          allOf:
            - $ref: "#/components/schemas/DataAddressSchema"
        callbackAddress:
          type: string
          example: https://callback.example.com
      required:
        - "@type"
        - consumerPid
        - agreementId
        - format
        - callbackAddress
    DataPlaneProperty:
      type: object
      properties:
        name:
          type: string
          example: propertyName
        value:
          type: string
          example: propertyValue
      required:
        - name
        - value
    DataPlaneAddressDto:
      type: object
      properties:
        endpoint:
          type: string
          example: http://data-plane-endpoint
        properties:
          example:
            - name: propertyName
              value: propertyValue
          type: array
          items:
            $ref: "#/components/schemas/DataPlaneProperty"
      required:
        - endpoint
        - properties
    DataPlaneRequestResponseDto:
      type: object
      properties:
        accepted:
          type: boolean
          example: true
        id:
          type: string
          example: req-identifier
        dataAddress:
          example:
            endpoint: http://address
            properties:
              - name: key
                value: value
          allOf:
            - $ref: "#/components/schemas/DataPlaneAddressDto"
        callbackAddress:
          type: string
          example: http://callback-address
      required:
        - accepted
        - id
    TransferDto:
      type: object
      properties:
        id:
          type: string
          example: 123e4567-e89b-12d3-a456-426614174000
        role:
          type: string
          enum:
            - provider
            - consumer
          example: provider
        processId:
          type: string
          example: process-001
        remoteParty:
          type: string
          example: remote-system
        secret:
          type: string
          example: secret-key
        datasetId:
          type: string
          example: urn:uuid:123e4567-e89b-12d3-a456-426614174000
        state:
          type: string
          enum:
            - REQUESTED
            - STARTED
            - TERMINATED
            - COMPLETED
            - SUSPENDED
          example: REQUESTED
        request:
          example: {}
          allOf:
            - $ref: "#/components/schemas/TransferRequestMessageSchema"
        response:
          example: {}
          allOf:
            - $ref: "#/components/schemas/DataPlaneRequestResponseDto"
        dataAddress:
          example: {}
          allOf:
            - $ref: "#/components/schemas/DataAddressSchema"
        createdDate:
          format: date-time
          type: string
          example: 2023-01-01T00:00:00.000Z
        modifiedDate:
          format: date-time
          type: string
          example: 2023-01-02T00:00:00.000Z
        deletedDate:
          format: date-time
          type: string
          example: 2023-01-03T00:00:00.000Z
      required:
        - id
        - role
        - processId
        - remoteParty
        - state
        - request
        - response
        - createdDate
        - modifiedDate
        - deletedDate
    AgreementSchema:
      type: object
      properties:
        "@id":
          type: string
          example: 3f2592da-ffc9-40cb-a336-a9daa9343ce8
        "@type":
          type: string
          example: Agreement
        assigner:
          type: string
          example: did:example:assigner
        assignee:
          type: string
          example: did:example:assignee
        profile:
          type: string
          example: profileExample
        permission:
          example: *a20
          type: array
          items:
            $ref: "#/components/schemas/PermissionSchema"
        prohibition:
          example: *a21
          type: array
          items:
            $ref: "#/components/schemas/ProhibitionSchema"
        obligation:
          example: *a22
          type: array
          items:
            $ref: "#/components/schemas/DutySchema"
        target:
          type: string
          example: urn:example:target
        timestamp:
          type: string
          example: 2023-10-01T12:34:56Z
      required:
        - "@id"
        - "@type"
        - timestamp
    MetadataDto:
      type: object
      properties:
        agreement:
          $ref: "#/components/schemas/AgreementSchema"
        dataset:
          $ref: "#/components/schemas/DatasetSchema"
      required:
        - agreement
        - dataset
    TransferStartMessageSchema:
      type: object
      properties:
        "@type":
          type: string
          example: TransferStartMessage
        providerPid:
          type: string
          example: provider-pid-789
        consumerPid:
          type: string
          example: consumer-pid-123
        dataAddress:
          example:
            "@type": DataAddress
            endpointType: http
            endpoint: https://api.example.com
            endpointProperties:
              - "@type": EndpointProperty
                name: name
                value: value
          allOf:
            - $ref: "#/components/schemas/DataAddressSchema"
      required:
        - "@type"
        - providerPid
        - consumerPid
    TransferCompletionMessageSchema:
      type: object
      properties:
        "@type":
          type: string
          example: TransferCompletionMessage
        providerPid:
          type: string
          example: provider-pid-789
        consumerPid:
          type: string
          example: consumer-pid-123
      required:
        - "@type"
        - providerPid
        - consumerPid
    TransferTerminationMessageSchema:
      type: object
      properties:
        "@type":
          type: string
          example: TransferTerminationMessage
        providerPid:
          type: string
          example: provider-pid-789
        consumerPid:
          type: string
          example: consumer-pid-123
        code:
          type: string
          example: TERMINATED
        reason:
          example:
            - Contract breach
          type: array
          items:
            type: string
      required:
        - "@type"
        - providerPid
        - consumerPid
        - code
    TransferSuspensionMessageSchema:
      type: object
      properties:
        "@type":
          type: string
          example: TransferSuspensionMessage
        providerPid:
          type: string
          example: provider-pid-789
        consumerPid:
          type: string
          example: consumer-pid-123
        reason:
          example:
            - Technical issue
          type: array
          items:
            type: string
      required:
        - "@type"
        - providerPid
        - consumerPid
externalDocs:
  description: Git Repository
  url: https://gitlab.com/tno-tsg/dataspace-protocol/tno-security-gateway
