openapi: 3.0.1
info:
  description: The API of the Item Relationship Service (IRS) for retrieving item
    graphs along the value chain of CATENA-X partners.
  title: IRS API
  version: 7.1.0
servers:
  - url: http://localhost:8080
security:
  - api_key: []
tags:
  - description: Partner-to-partner recursive notification endpoint
    name: Recursive IRS Notifications
  - description: Grant storage and lookup for recursive chain openings
    name: Recursive Chain Opening Grants
  - description: Recursive supply chain traversal with grant-based access control
    name: Recursive IRS
paths:
  /ess/bpn/investigations:
    post:
      description: Registers an IRS job to start an investigation if a given bpn is
        contained in a part chain of a given globalAssetId.
      operationId: registerBPNInvestigation
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RegisterBpnInvestigationJob"
        required: true
      responses:
        "201":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/job-handle"
              schema:
                $ref: "#/components/schemas/JobHandle"
          description: Returns id of registered job.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Job registration failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: Registers an IRS job to start an investigation if a given bpn is contained
        in a part chain of a given globalAssetId.
      tags:
        - Environmental and Social Standards
  /ess/bpn/investigations/{id}:
    get:
      description: Return job with additional supplyChainImpacted information.
      operationId: getBPNInvestigation
      parameters:
        - description: Id of the job.
          example: 6c311d29-5753-46d4-b32c-19b918ea93b0
          in: path
          name: id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/complete-ess-job-result"
              schema:
                $ref: "#/components/schemas/Jobs"
          description: Return job with item graph for the requested id.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Return job failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
        "404":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-404"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Job with the requested jobId not found.
      security:
        - api_key: []
      summary: Return job with additional supplyChainImpacted information.
      tags:
        - Environmental and Social Standards
  /ess/notification/receive:
    post:
      description: Accepts notifications via EDC. Notifications are filtered by their
        type and processed accordingly.
      operationId: receiveEdcNotification
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EdcNotificationResponseNotificationContent"
        required: true
      responses:
        "200":
          description: Notification received successfully.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Notification malformed.
      summary: Accepts notifications sent via EDC.
      tags:
        - Environmental and Social Standards
  /irs/aspectmodels:
    get:
      description: Get all available aspect models from semantic hub or local models.
      operationId: getAllAspectModels
      responses:
        "200":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/aspect-models-list"
              schema:
                $ref: "#/components/schemas/AspectModels"
          description: Returns all available aspect models.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: Get all available aspect models from semantic hub or local models.
      tags:
        - Aspect Models
  /irs/ess/orders:
    post:
      description: "Registers an order for an ESS investigation with an array of {globalAssetIds}.\
        \ Each globalAssetId will be processed in an separate job, grouped in batches."
      operationId: registerESSInvestigationOrder
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RegisterBpnInvestigationBatchOrder"
        required: true
      responses:
        "201":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/job-handle"
              schema:
                $ref: "#/components/schemas/BatchOrderCreated"
          description: Returns orderId of registered Batch order.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Batch Order registration failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: "Registers an order for an ESS investigation with an array of {globalAssetIds}.\
        \ Each globalAssetId will be processed in an separate job, grouped in batches."
      tags:
        - Environmental and Social Standards
  /irs/jobs:
    get:
      description: Returns paginated jobs with state and execution times.
      operationId: getJobsByJobStates
      parameters:
        - description: Requested job states.
          explode: false
          in: query
          name: states
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - UNSAVED
                - INITIAL
                - RUNNING
                - TRANSFERS_FINISHED
                - COMPLETED
                - CANCELED
                - ERROR
            maxItems: 2147483647
        - description: Zero-based page index (0..N)
          in: query
          name: page
          required: false
          schema:
            type: integer
            default: 0
        - description: The size of the page to be returned
          in: query
          name: size
          required: false
          schema:
            type: integer
            default: 20
        - description: "Sorting criteria in the format: property,(asc|desc). Default\
            \ sort order is ascending. Multiple sort criteria are supported."
          in: query
          name: sort
          required: false
          schema:
            type: array
            items:
              type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PageResult"
          description: Paginated list of jobs with state and execution times for requested
            job states.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Return jobs for requested job states failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: Returns paginated jobs with state and execution times.
      tags:
        - Item Relationship Service
    post:
      description: "Register an IRS job to retrieve an item graph for given {globalAssetId}."
      operationId: registerJobForGlobalAssetId
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RegisterJob"
        required: true
      responses:
        "201":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/job-handle"
              schema:
                $ref: "#/components/schemas/JobHandle"
          description: Returns id of registered job.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Job registration failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: "Register an IRS job to retrieve an item graph for given {globalAssetId}."
      tags:
        - Item Relationship Service
  /irs/jobs/{id}:
    get:
      description: Return job with optional item graph result for requested id.
      operationId: getJobForJobId
      parameters:
        - description: Id of the job.
          example: 6c311d29-5753-46d4-b32c-19b918ea93b0
          in: path
          name: id
          required: true
          schema:
            type: string
            format: uuid
        - description: "\\<true\\> Return job with current processed item graph. \\\
            <false\\> Return job with item graph if job is in state COMPLETED, otherwise\
            \ job."
          in: query
          name: returnUncompletedJob
          required: false
          schema:
            type: boolean
            default: true
      responses:
        "200":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/complete-job-result"
              schema:
                $ref: "#/components/schemas/Jobs"
          description: Return job with item graph for the requested id.
        "206":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/partial-job-result"
              schema:
                $ref: "#/components/schemas/Jobs"
          description: Return job with current processed item graph for the requested
            id.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Return job failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
        "404":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-404"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Job with the requested jobId not found.
      security:
        - api_key: []
      summary: Return job with optional item graph result for requested id.
      tags:
        - Item Relationship Service
    put:
      description: Cancel job for requested jobId.
      operationId: cancelJobByJobId
      parameters:
        - description: Id of the job.
          example: 6c311d29-5753-46d4-b32c-19b918ea93b0
          in: path
          name: id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/canceled-job-response"
              schema:
                $ref: "#/components/schemas/Job"
          description: Job with requested jobId canceled.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Cancel job failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
        "404":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-404"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Job for requested jobId not found.
      security:
        - api_key: []
      summary: Cancel job for requested jobId.
      tags:
        - Item Relationship Service
  /irs/orders:
    post:
      description: "Registers an IRS order with an array of {globalAssetIds}. Each\
        \ globalAssetId will be processed in an IRS Job, grouped in batches."
      operationId: registerOrder
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RegisterBatchOrder"
        required: true
      responses:
        "201":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/job-handle"
              schema:
                $ref: "#/components/schemas/BatchOrderCreated"
          description: Returns orderId of registered Batch order.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Batch Order registration failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: "Registers an IRS order with an array of {globalAssetIds}. Each globalAssetId\
        \ will be processed in an IRS Job, grouped in batches."
      tags:
        - Item Relationship Service
  /irs/orders/{orderId}:
    get:
      description: Get a batch order for a given orderId.
      operationId: getBatchOrder
      parameters:
        - description: Id of the order.
          example: 6c311d29-5753-46d4-b32c-19b918ea93b0
          in: path
          name: orderId
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/complete-order-result"
              schema:
                $ref: "#/components/schemas/BatchOrderResponse"
          description: Get a batch order for a given orderId.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Return Batch Order failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
        "404":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-404"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Batch Order with the requested orderId not found.
      security:
        - api_key: []
      summary: Get a batch order for a given orderId.
      tags:
        - Item Relationship Service
    put:
      description: Cancel a batch order for a given orderId.
      operationId: cancelBatchOrder
      parameters:
        - description: Id of the order.
          example: 6c311d29-5753-46d4-b32c-19b918ea93b0
          in: path
          name: orderId
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/complete-order-result"
              schema:
                $ref: "#/components/schemas/BatchOrderResponse"
          description: Cancel a batch order for a given orderId.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Return Batch Order failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
        "404":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-404"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Batch Order with the requested orderId not found.
      security:
        - api_key: []
      summary: Cancel a batch order for a given orderId.
      tags:
        - Item Relationship Service
  /irs/orders/{orderId}/batches/{batchId}:
    get:
      description: Get a batch with a given batchId for a given orderId.
      operationId: getBatch
      parameters:
        - description: Id of the order.
          example: 6c311d29-5753-46d4-b32c-19b918ea93b0
          in: path
          name: orderId
          required: true
          schema:
            type: string
            format: uuid
        - description: Id of the batch.
          example: 4bce40b8-64c7-41bf-9ca3-e9432c7fef98
          in: path
          name: batchId
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          content:
            application/json:
              examples:
                complete:
                  $ref: "#/components/examples/complete-batch-result"
              schema:
                $ref: "#/components/schemas/BatchResponse"
          description: Get a batch with a given batchId for a given orderId.
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Return batch failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
        "404":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-404"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Batch with the requested orderId and batchId not found.
      security:
        - api_key: []
      summary: Get a batch with a given batchId for a given orderId.
      tags:
        - Item Relationship Service
  /irs/policies:
    get:
      deprecated: true
      description: Lists the registered policies that should be accepted in EDC negotiation.
      operationId: getAllowedPoliciesByBpn
      parameters:
        - description: List of business partner numbers. This may also contain the value
            "default" in order to query the default policies.
          in: query
          name: businessPartnerNumbers
          required: false
          schema:
            type: array
            items:
              type: string
      responses:
        "200":
          content:
            application/json:
              example:
                BPNL1234567890AB:
                  - validUntil: 2025-12-12T23:59:59.999Z
                    payload:
                      '@context':
                        odrl: http://www.w3.org/ns/odrl/2/
                      '@id': e917f5f-8dac-49ac-8d10-5b4d254d2b48
                      policy:
                        policyId: e917f5f-8dac-49ac-8d10-5b4d254d2b48
                        createdOn: 2024-03-28T03:34:42.9454448Z
                        validUntil: 2025-12-12T23:59:59.999Z
                        permissions:
                          - action: use
                            constraint:
                              and:
                                - leftOperand: Membership
                                  operator:
                                    '@id': eq
                                  rightOperand: active
                                - leftOperand: PURPOSE
                                  operator:
                                    '@id': eq
                                  rightOperand: ID 3.1 Trace
                              or: null
                BPNA1234567890DF: []
              schema:
                type: string
                description: Map of BPN to list of policies
          description: Returns the policies as map of BPN to list of policies.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: Lists the registered policies that should be accepted in EDC negotiation.
        (This method is DEPRECATED in favor of `/policies/paged`)
      tags:
        - Policy Store API
    post:
      description: Register a policy that should be accepted in EDC negotiation.
      operationId: registerAllowedPolicy
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreatePolicyRequest"
        required: true
      responses:
        "201":
          content:
            '*/*':
              schema:
                $ref: "#/components/schemas/CreatePoliciesResponse"
          description: Created
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Policy registration failed due to an invalid request.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
        "500":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-500"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Policy registration failed due to an internal error.
      security:
        - api_key: []
      summary: Register a policy that should be accepted in EDC negotiation.
      tags:
        - Policy Store API
    put:
      description: Updates existing policies.
      operationId: updateAllowedPolicy
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdatePolicyRequest"
        required: true
      responses:
        "200":
          description: OK
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Policy update failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
        "500":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-500"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Updating policies failed due to an internal error.
      security:
        - api_key: []
      summary: Updates existing policies.
      tags:
        - Policy Store API
  /irs/policies/attributes/{field}:
    get:
      description: Provides autocomplete suggestions for policy fields based on input
        criteria.
      operationId: autocomplete
      parameters:
        - description: "The field to autocomplete (BPN, policyId, createdOn, validUntil,\
            \ action)"
          in: path
          name: field
          required: true
          schema:
            type: string
        - description: Search query with restricted character set
          in: query
          name: s
          required: true
          schema:
            type: string
            pattern: "^[a-zA-Z0-9\\-\\+: ]*$"
        - description: "Limit for the number of results, default is 10 and max is 100"
          in: query
          name: limit
          required: false
          schema:
            type: integer
            format: int32
            default: 10
            maximum: 100
      responses:
        "200":
          content:
            application/json:
              schema:
                type: string
          description: Successful retrieval of autocomplete suggestions
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Invalid input parameters
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: Autocomplete for policy fields
      tags:
        - Policy Store API
  /irs/policies/paged:
    get:
      description: "Fetch a page of policies with options to filter and sort.\n \n\
        Example:\n```\nsearch=BPN,STARTS_WITH,BPNL12&search=validUntil,AFTER_LOCAL_DATE,2024-12-11&sort=validUntil,asc&sort=BPN,asc\n\
        ```\n \n### Filtering\n \n`search=<Field>,[EQUALS|STARTS_WITH|BEFORE_LOCAL_DATE|AFTER_LOCAL_DATE],<Value>`.\n\
        \ \nExample: `search=BPN,STARTS_WITH,BPNL12&search=policyId,STARTS_WITH,policy2`.\n\
        \ \n| Field        | Supported Operations                     | Value Format\
        \                       |\n|--------------|------------------------------------------|------------------------------------|\n\
        | `BPN`        | `EQUALS`, `STARTS_WITH`                  | any string   \
        \                      |\n| `policyId`   | `EQUALS`, `STARTS_WITH`       \
        \           | any string                         |\n| `action`     | `EQUALS`\
        \                                 | `use` or `access`                  |\n\
        | `createdOn`  | `BEFORE_LOCAL_DATE`, `AFTER_LOCAL_DATE`  | `yyyy-MM-dd` or\
        \ ISO date with time |\n| `validUntil` | `BEFORE_LOCAL_DATE`, `AFTER_LOCAL_DATE`\
        \  | `yyyy-MM-dd` or ISO date with time |\n\n### Sorting\n`sort=[BPN|policyId|action|createdOn|validUntil],[asc|desc]`.\n\
        \ \nExample: `sort=BPN,asc&sort=policyId,desc`. _(default: `BPN,asc`)_\n\n\
        ### Paging\n \nExample: `page=1&size=20` _(default page size: 10, maximal\
        \ page size: 1000)_\n"
      operationId: getPoliciesPaged
      parameters:
        - description: List of business partner numbers. This may also contain the value
            "default" in order to query the default policies.
          in: query
          name: businessPartnerNumbers
          required: false
          schema:
            type: array
            items:
              type: string
      responses:
        "200":
          content:
            application/json:
              examples:
                success:
                  $ref: "#/components/examples/get-policies-paged-result"
              schema:
                $ref: "#/components/schemas/Page"
          description: Successfully retrieved the paged policies
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: "Find registered policies that should be accepted in EDC negotiation\
        \ (with filtering, sorting and paging)."
      tags:
        - Policy Store API
  /irs/policies/{policyId}:
    delete:
      description: Removes a policy that should no longer be accepted in EDC negotiation.
      operationId: deleteAllowedPolicy
      parameters:
        - in: path
          name: policyId
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Policy deletion failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: Removes a policy that should no longer be accepted in EDC negotiation.
      tags:
        - Policy Store API
  /irs/policies/{policyId}/bpnl/{bpnl}:
    delete:
      description: Removes a policy from BPNL that should no longer be accepted in
        EDC negotiation.
      operationId: removeAllowedPolicyFromBpnl
      parameters:
        - in: path
          name: policyId
          required: true
          schema:
            type: string
        - in: path
          name: bpnl
          required: true
          schema:
            type: string
            pattern: "(BPNL)[\\w\\d]{10}[\\w\\d]{2}"
      responses:
        "200":
          description: OK
        "400":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-400"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Policy deletion failed.
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-403"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Authorization refused by server.
      security:
        - api_key: []
      summary: Removes a policy from BPNL that should no longer be accepted in EDC
        negotiation.
      tags:
        - Policy Store API
  /irs/recursive/chain-openings/grants:
    delete:
      operationId: deleteRecursiveChainOpeningGrant
      parameters:
        - description: Id of the recursive chain opening.
          example: opening-42
          in: query
          name: openingId
          required: true
          schema:
            type: string
            pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        - description: The granted material.
          example: urn:uuid:68904173-ad59-4a77-8412-3e73fcafbd8b
          in: query
          name: globalAssetId
          required: true
          schema:
            type: string
            pattern: "^(?:urn:uuid:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        - description: The requesting partner.
          example: BPNL0000ATLS0001
          in: query
          name: requesterBpn
          required: true
          schema:
            type: string
            pattern: "^BPNL[0-9A-Za-z]{12}$"
        - description: Recursive use case.
          example: PURIS_ITEM_STOCK_ANONYMIZED_RECURSIVE
          in: query
          name: useCase
          required: true
          schema:
            type: string
            enum:
              - PURIS_ITEM_STOCK_ANONYMIZED_RECURSIVE
      responses:
        "204":
          description: Grant deleted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Invalid grant key
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Authorization refused by server.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Grant not found
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Unexpected recursive IRS error
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Recursive persistence unavailable
      security:
        - api_key: []
      summary: Delete a chain opening grant
      tags:
        - Recursive Chain Opening Grants
    get:
      description: Admin query endpoint for chain opening grants. By default only
        currently valid grants are returned; set validOnly=false to include expired
        and not-yet-valid grants.
      operationId: listRecursiveChainOpeningGrants
      parameters:
        - description: Optional chain opening filter.
          example: opening-42
          in: query
          name: openingId
          required: false
          schema:
            type: string
            pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]*$"
        - description: Optional filter on the granted material.
          example: urn:uuid:68904173-ad59-4a77-8412-3e73fcafbd8b
          in: query
          name: globalAssetId
          required: false
          schema:
            type: string
            pattern: "^(?:(?:urn:uuid:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})?$"
        - description: Optional filter on the requesting partner.
          example: BPNL0000ATLS0001
          in: query
          name: requesterBpn
          required: false
          schema:
            type: string
            pattern: "^(?:BPNL[0-9A-Za-z]{12})?$"
        - description: Recursive use case.
          example: PURIS_ITEM_STOCK_ANONYMIZED_RECURSIVE
          in: query
          name: useCase
          required: false
          schema:
            type: string
            enum:
              - PURIS_ITEM_STOCK_ANONYMIZED_RECURSIVE
        - description: Return only grants valid at query time.
          example: true
          in: query
          name: validOnly
          required: false
          schema:
            type: boolean
            default: true
      responses:
        "200":
          content:
            application/json: {}
          description: Grant list returned
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Invalid grant filter
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Authorization refused by server.
        "406":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Requested response media type is not supported
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Unexpected recursive IRS error
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Recursive persistence unavailable
      security:
        - api_key: []
      summary: List chain opening grants
      tags:
        - Recursive Chain Opening Grants
    post:
      description: "Stores a grant that authorizes recursive traversal for a specific\
        \ chain opening. The grant key (openingId + globalAssetId + requesterBpn +\
        \ useCase) is taken from the request body; several grants may exist per openingId,\
        \ one per requested material and requesting partner. Only the configured PURIS\
        \ recursive use case is accepted."
      operationId: registerRecursiveChainOpeningGrant
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RecursiveChainOpeningGrant"
        required: true
      responses:
        "201":
          content:
            '*/*':
              schema:
                $ref: "#/components/schemas/RecursiveChainOpeningGrant"
          description: Grant registered
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Invalid grant payload
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Authorization refused by server.
        "406":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Requested response media type is not supported
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: A grant with the same openingId + globalAssetId + requesterBpn
            + useCase already exists
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Request media type is not supported
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Unexpected recursive IRS error
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Recursive persistence unavailable
      security:
        - api_key: []
      summary: Register a chain opening grant
      tags:
        - Recursive Chain Opening Grants
    put:
      description: Replaces a grant identified by the grant key (openingId + globalAssetId
        + requesterBpn + useCase) in the request body. The stored grant keeps its
        original createdAt timestamp and receives a fresh updatedAt. Only the configured
        PURIS recursive use case is accepted.
      operationId: replaceRecursiveChainOpeningGrant
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RecursiveChainOpeningGrant"
        required: true
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: "#/components/schemas/RecursiveChainOpeningGrant"
          description: Grant replaced
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Invalid grant payload
        "401":
          content:
            application/json:
              examples:
                error:
                  $ref: "#/components/examples/error-response-401"
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No valid authentication credentials.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Authorization refused by server.
        "406":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Requested response media type is not supported
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Request media type is not supported
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Unexpected recursive IRS error
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Recursive persistence unavailable
      security:
        - api_key: []
      summary: Replace a chain opening grant
      tags:
        - Recursive Chain Opening Grants
  /irs/recursive/jobs:
    get:
      operationId: listJobs
      responses:
        "200":
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/RecursiveJobStatusResponse"
          description: Jobs returned
        "406":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Requested response media type is not supported
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Unexpected recursive IRS error
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Recursive persistence unavailable
      summary: List all recursive jobs
      tags:
        - Recursive IRS
    post:
      description: "Validates the request against the local grant store, resolves\
        \ the BOM, and determines allowed child partners."
      operationId: startJob
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RecursiveJobRequest"
        required: true
      responses:
        "201":
          content:
            '*/*':
              schema:
                $ref: "#/components/schemas/RecursiveJobStartResponse"
          description: Job created
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: "Unknown use case, unsupported lifecycle, or invalid request"
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Grant validation failed
        "406":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Requested response media type is not supported
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Request media type is not supported
        "422":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Request contains an unsupported aspect
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Unexpected recursive IRS error
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Recursive persistence unavailable
      summary: Start a new recursive job
      tags:
        - Recursive IRS
  /irs/recursive/jobs/{jobId}:
    get:
      description: "Returns the job envelope and, once terminal, the aggregated result.\
        \ Note: job.state reflects the technical run (COMPLETED = all processing finished),\
        \ result.resultStatus the business outcome (COMPLETE/PARTIAL/FAILED) - a COMPLETED\
        \ job can carry a FAILED result."
      operationId: getJobStatus
      parameters:
        - in: path
          name: jobId
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: "#/components/schemas/RecursiveJobStatusResponse"
          description: Job found
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Invalid job id
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Job not found
        "406":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Requested response media type is not supported
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Unexpected recursive IRS error
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Recursive persistence unavailable
      summary: Get recursive job status
      tags:
        - Recursive IRS
  /irs/recursive/notifications:
    post:
      description: Unified endpoint for child requests and parent responses.
        The content.type field (REQUEST or RESPONSE) determines the processing path.
        REQUEST starts the next recursive child hop and requires header.expectedResponseBy,
        content.globalAssetId, content.bomLifecycle=asPlanned and a non-empty
        content.aspects list. RESPONSE returns the correlated child result and
        requires header.relatedMessageId, content.bomLifecycle=asPlanned, a non-empty
        content.aspects list, content.status and content.result; header.expectedResponseBy
        must be omitted.
        This is the endpoint that the EDC notification asset points to.
      operationId: receiveNotification
      parameters:
        - in: header
          name: edc-bpn
          description: EDC transport identity of the sending partner.
          required: true
          schema:
            type: string
            pattern: "^BPNL[0-9A-Za-z]{12}$"
            example: BPNL000000000000
      requestBody:
        description: Recursive notification. See RecursiveNotificationMessage, Header
          and Content for REQUEST and RESPONSE field rules.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RecursiveNotificationMessage"
        required: true
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: "#/components/schemas/RecursiveNotificationResponse"
          description: Notification accepted or correlated response rejected
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Notification payload is invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Transport identity check failed
        "406":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Requested response media type is not supported
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Request media type is not supported
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Unexpected recursive IRS error
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RecursiveErrorResponse"
          description: Recursive persistence unavailable
      summary: Receive a recursive notification
      tags:
        - Recursive IRS Notifications
components:
  examples:
    aspect-models-list:
      value:
        lastUpdated: 2023-02-13T08:18:11.990659500Z
        models:
          - name: SingleLevelBomAsBuilt
            status: RELEASED
            type: SAMM
            urn: urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
            version: 3.0.0
          - name: SerialPart
            status: RELEASED
            type: SAMM
            urn: urn:samm:io.catenax.serial_part:3.0.0#SerialPart
            version: 3.0.0
    canceled-job-response:
      value:
        completedOn: 2022-02-03T14:48:54.709Z
        globalAssetId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
        id: 6c311d29-5753-46d4-b32c-19b918ea93b0
        lastModifiedOn: 2022-02-03T14:48:54.709Z
        startedOn: 2022-02-03T14:48:54.709Z
        state: CANCELED
    canceled-job-result:
      value:
        bpns: []
        job:
          completedOn: 2022-02-03T14:48:54.709Z
          createdOn: 2022-02-03T14:48:54.709Z
          exception:
            errorDetail: Timeout while requesting Digital Registry
            exception: IrsTimeoutException
            exceptionDate: 2022-02-03T14:48:54.709Z
          globalAssetId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          id: e5347c88-a921-11ec-b909-0242ac120002
          lastModifiedOn: 2022-02-03T14:48:54.709Z
          parameter:
            aspects:
              - urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
              - urn:samm:io.catenax.serial_part:3.0.0#SerialPart
            auditContractNegotiation: false
            bomLifecycle: asBuilt
            collectAspects: false
            depth: 1
            direction: downward
            lookupBPNs: false
          startedOn: 2022-02-03T14:48:54.709Z
          state: CANCELED
          summary:
            asyncFetchedItems:
              completed: 0
              failed: 0
              running: 0
        relationships: []
        submodels: []
        tombstones: []
    complete-batch-result:
      value:
        batchId: f253718e-a270-4367-901b-9d50d9bd8462
        batchNumber: 1
        batchProcessingState: COMPLETED
        batchTotal: 1
        completedOn: 2022-02-03T14:48:54.709Z
        jobs:
          - completedOn: 2022-02-03T14:48:54.709Z
            id: 6c311d29-5753-46d4-b32c-19b918ea93b0
            startedOn: 2022-02-03T14:48:54.709Z
            state: COMPLETED
        jobsInBatchChecksum: 1
        orderId: f253718e-a270-4367-901b-9d50d9bd8462
        startedOn: 2022-02-03T14:48:54.709Z
        totalJobs: 1
    complete-ess-job-result:
      value:
        bpns:
          - manufacturerId: BPNL00000003AAXX
            manufacturerName: AB CD
        job:
          completedOn: 2022-02-03T14:48:54.709Z
          createdOn: 2022-02-03T14:48:54.709Z
          exception:
            errorDetail: Timeout while requesting Digital Registry
            exception: IrsTimeoutException
            exceptionDate: 2022-02-03T14:48:54.709Z
          globalAssetId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          id: e5347c88-a921-11ec-b909-0242ac120002
          lastModifiedOn: 2022-02-03T14:48:54.709Z
          parameter:
            aspects:
              - urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
              - urn:samm:io.catenax.serial_part:3.0.0#SerialPart
            auditContractNegotiation: false
            bomLifecycle: asBuilt
            collectAspects: false
            depth: 1
            direction: downward
            lookupBPNs: false
          startedOn: 2022-02-03T14:48:54.709Z
          state: COMPLETED
          summary:
            asyncFetchedItems:
              completed: 3
              failed: 0
              running: 0
        relationships:
          - catenaXId: urn:uuid:d9bec1c6-e47c-4d18-ba41-0a5fe8b7f447
            linkedItem:
              assembledOn: 2022-02-03T14:48:54.709Z
              childCatenaXId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9
              hasAlternatives: false
              lastModifiedOn: 2022-02-03T14:48:54.709Z
              lifecycleContext: asBuilt
              quantity:
                measurementUnit:
                  datatypeURI: urn:bamm:io.openmanufacturing:meta-model:1.0.0#piece
                  lexicalValue: piece
                quantityNumber: 1.0
        shells:
          - contractAgreementId: f253718e-a270-4367-901b-9d50d9bd8462
            payload:
              description:
                - language: en
                  text: The shell for a vehicle
              globalAssetId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9
              id: urn:uuid:882fc530-b69b-4707-95f6-5dbc5e9baaa8
              idShort: future concept x
              specificAssetIds:
                - name: engineserialid
                  value: "12309481209312"
              submodelDescriptors:
                - description:
                  - language: en
                    text: Provides base vehicle information
                  endpoints:
                    - interface: HTTP
                      protocolInformation:
                        endpointProtocol: HTTPS
                        endpointProtocolVersion:
                          - "1.0"
                        href: https://catena-x.net/vehicle/basedetails/
                        subprotocol: DSP
                        subprotocolBody: id=urn:uuid:c8159379-4613-48b8-ad52-6baed7afe923;dspEndpoint=https://irs-provider-controlplane3.dev.demo.catena-x.net
                        subprotocolBodyEncoding: plain
                  id: urn:uuid:5d25a897-6571-4800-b98c-a3352fbf996d
                  idShort: SingleLevelBomAsPlanned
                  semanticId:
                    keys:
                      - type: ExternalReference
                        value: urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
                    type: ModelReference
                - description:
                  - language: en
                    text: Provides base vehicle information
                  endpoints:
                    - interface: HTTP
                      protocolInformation:
                        endpointProtocol: HTTPS
                        endpointProtocolVersion:
                          - "1.0"
                        href: https://catena-x.net/vehicle/partdetails/
                        subprotocol: DSP
                        subprotocolBody: id=urn:uuid:c8159379-4613-48b8-ad52-6baed7afe923;dspEndpoint=https://irs-provider-controlplane3.dev.demo.catena-x.net
                        subprotocolBodyEncoding: plain
                  id: urn:uuid:dae4d249-6d66-4818-b576-bf52f3b9ae90
                  idShort: vehicle part details
                  semanticId:
                    keys:
                      - type: Submodel
                        value: urn:bamm:io.catenax.vehicle:0.1.1#PartDetails
                    type: ModelReference
        submodels:
          - aspectType: supply_chain_impacted
            contractAgreementId: f253718e-a270-4367-901b-9d50d9bd8462
            identification: urn:uuid:fc784d2a-5506-4e61-8e34-21600f8cdeff
            payload:
              supplyChainImpacted: "YES"
        tombstones:
          - catenaXId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
            endpointURL: https://catena-x.net/vehicle/partdetails/
            processingError:
              errorDetail: Details to reason of failure
              lastAttempt: 2022-02-03T14:48:54.709Z
              processStep: SchemaValidation
              retryCounter: 0
    complete-job-list-processing-state:
      value:
        content:
          - completedOn: 2022-02-03T14:48:54.709Z
            id: 6c311d29-5753-46d4-b32c-19b918ea93b0
            startedOn: 2022-02-03T14:48:54.709Z
            state: COMPLETED
        pageCount: 1
        pageNumber: 0
        pageSize: 10
        totalElements: 1
    complete-job-result:
      value:
        bpns:
          - manufacturerId: BPNL00000003AYRE
            manufacturerName: OEM A
        job:
          completedOn: 2022-02-03T14:48:54.709Z
          createdOn: 2022-02-03T14:48:54.709Z
          exception:
            errorDetail: Timeout while requesting Digital Registry
            exception: IrsTimeoutException
            exceptionDate: 2022-02-03T14:48:54.709Z
          globalAssetId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          id: e5347c88-a921-11ec-b909-0242ac120002
          lastModifiedOn: 2022-02-03T14:48:54.709Z
          parameter:
            aspects:
              - urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
              - urn:samm:io.catenax.serial_part:3.0.0#SerialPart
            auditContractNegotiation: false
            bomLifecycle: asBuilt
            collectAspects: false
            depth: 1
            direction: downward
            lookupBPNs: false
          startedOn: 2022-02-03T14:48:54.709Z
          state: COMPLETED
          summary:
            asyncFetchedItems:
              completed: 0
              failed: 0
              running: 0
        relationships:
          - catenaXId: urn:uuid:d9bec1c6-e47c-4d18-ba41-0a5fe8b7f447
            linkedItem:
              assembledOn: 2022-02-03T14:48:54.709Z
              childCatenaXId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9
              hasAlternatives: false
              lastModifiedOn: 2022-02-03T14:48:54.709Z
              lifecycleContext: asBuilt
              quantity:
                measurementUnit:
                  datatypeURI: urn:bamm:io.openmanufacturing:meta-model:1.0.0#piece
                  lexicalValue: piece
                quantityNumber: 1.0
        shells:
          - contractAgreementId: f253718e-a270-4367-901b-9d50d9bd8462
            payload:
              description:
                - language: en
                  text: The shell for a vehicle
              globalAssetId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9
              id: urn:uuid:882fc530-b69b-4707-95f6-5dbc5e9baaa8
              idShort: future concept x
              specificAssetIds:
                - name: engineserialid
                  value: "12309481209312"
              submodelDescriptors:
                - description:
                  - language: en
                    text: Provides base vehicle information
                  endpoints:
                    - interface: HTTP
                      protocolInformation:
                        endpointProtocol: HTTPS
                        endpointProtocolVersion:
                          - "1.0"
                        href: https://catena-x.net/vehicle/basedetails/
                        subprotocol: DSP
                        subprotocolBody: id=urn:uuid:c8159379-4613-48b8-ad52-6baed7afe923;dspEndpoint=https://irs-provider-controlplane3.dev.demo.catena-x.net
                        subprotocolBodyEncoding: plain
                  id: urn:uuid:5d25a897-6571-4800-b98c-a3352fbf996d
                  idShort: SingleLevelBomAsPlanned
                  semanticId:
                    keys:
                      - type: ExternalReference
                        value: urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
                    type: ModelReference
                - description:
                  - language: en
                    text: Provides base vehicle information
                  endpoints:
                    - interface: HTTP
                      protocolInformation:
                        endpointProtocol: HTTPS
                        endpointProtocolVersion:
                          - "1.0"
                        href: https://catena-x.net/vehicle/partdetails/
                        subprotocol: DSP
                        subprotocolBody: id=urn:uuid:c8159379-4613-48b8-ad52-6baed7afe923;dspEndpoint=https://irs-provider-controlplane3.dev.demo.catena-x.net
                        subprotocolBodyEncoding: plain
                  id: urn:uuid:dae4d249-6d66-4818-b576-bf52f3b9ae90
                  idShort: vehicle part details
                  semanticId:
                    keys:
                      - type: Submodel
                        value: urn:bamm:io.catenax.vehicle:0.1.1#PartDetails
                    type: ModelReference
        submodels:
          - aspectType: urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
            contractAgreementId: f253718e-a270-4367-901b-9d50d9bd8462
            identification: urn:uuid:fc784d2a-5506-4e61-8e34-21600f8cdeff
            payload:
              catenaXId: urn:uuid:d9bec1c6-e47c-4d18-ba41-0a5fe8b7f447
              childItems:
                - businessPartner: BPNL00012345aNXY
                  catenaXId: urn:uuid:d9bec1c6-e47c-4d18-ba41-0a5fe8b7f447
                  createdOn: 2022-02-03T14:48:54.709Z
                  hasAlternatives: false
                  lastModifiedOn: 2022-02-03T14:48:54.709Z
                  quantity:
                    unit: unit:piece
                    value: 20.0
        tombstones:
          - catenaXId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
            endpointURL: https://catena-x.net/vehicle/partdetails/
            processingError:
              errorDetail: Details to reason of failure
              lastAttempt: 2022-02-03T14:48:54.709Z
              processStep: SchemaValidation
              retryCounter: 0
    complete-order-result:
      value:
        batchChecksum: 1
        batches:
          - batchId: f253718e-a270-4367-901b-9d50d9bd8462
            batchNumber: 1
            batchProcessingState: PARTIAL
            batchUrl: https://../irs/orders/f253718e-a270-4367-901b-9d50d9bd8462/batches/f253718e-a270-4367-901b-9d50d9bd8462
            jobsInBatchChecksum: 1
        orderId: f253718e-a270-4367-901b-9d50d9bd8462
        state: COMPLETED
    error-response-400:
      value:
        error: Bad request
        messages:
          - BadRequestException
        statusCode: 400 BAD_REQUEST
    error-response-401:
      value:
        error: Unauthorized
        messages:
          - UnauthorizedException
        statusCode: 401 UNAUTHORIZED
    error-response-403:
      value:
        error: Forbidden
        messages:
          - ForbiddenException
        statusCode: 403 FORBIDDEN
    error-response-404:
      value:
        error: Not found
        messages:
          - NotFoundException
        statusCode: 404 NOT_FOUND
    error-response-500:
      value:
        error: Internal Server Error
        messages:
          - InternalServerError
        statusCode: 500 INTERNAL_SERVER_ERROR
    failed-job-result:
      value:
        bpns: []
        job:
          createdOn: 2022-02-03T14:48:54.709Z
          exception:
            errorDetail: Timeout while requesting Digital Registry
            exception: IrsTimeoutException
            exceptionDate: 2022-02-03T14:48:54.709Z
          globalAssetId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          id: e5347c88-a921-11ec-b909-0242ac120002
          lastModifiedOn: 2022-02-03T14:48:54.709Z
          parameter:
            aspects:
              - urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
              - urn:samm:io.catenax.serial_part:3.0.0#SerialPart
            auditContractNegotiation: false
            bomLifecycle: asBuilt
            collectAspects: false
            depth: 1
            direction: downward
            lookupBPNs: false
          startedOn: 2022-02-03T14:48:54.709Z
          state: ERROR
          summary:
            asyncFetchedItems:
              completed: 0
              failed: 0
              running: 0
        relationships: []
        submodels: []
        tombstones: []
    get-policies-paged-result:
      value:
        content:
          - bpn: BPNL1234567890AB
            policy:
              createdOn: 2024-07-08T12:01:19.4677109+02:00
              permissions:
                - action: use
                  constraint:
                    and: []
                    or:
                      - leftOperand: Membership
                        operator:
                          '@id': eq
                        rightOperand: active
                      - leftOperand: FrameworkAgreement.traceability
                        operator:
                          '@id': eq
                        rightOperand: active
                      - leftOperand: PURPOSE
                        operator:
                          '@id': eq
                        rightOperand: ID 3.1 Trace
                - action: access
                  constraint:
                    and: []
                    or:
                      - leftOperand: Membership
                        operator:
                          '@id': eq
                        rightOperand: active
                      - leftOperand: FrameworkAgreement.traceability
                        operator:
                          '@id': eq
                        rightOperand: active
                      - leftOperand: PURPOSE
                        operator:
                          '@id': eq
                        rightOperand: ID 3.1 Trace
              policyId: 13a8523f-c80a-40b8-9e43-faab47fbceaa
              validUntil: 2025-07-08T12:01:19.4677109+02:00
        empty: false
        first: false
        last: true
        number: 1
        numberOfElements: 1
        pageable:
          offset: 10
          pageNumber: 1
          pageSize: 10
          paged: true
          sort:
            empty: true
            sorted: false
            unsorted: true
          unpaged: false
        size: 10
        sort:
          empty: true
          sorted: false
          unsorted: true
        totalElements: 11
        totalPages: 2
    job-handle:
      value:
        id: 6c311d29-5753-46d4-b32c-19b918ea93b0
    job-result-without-uncompleted-result-tree:
      value:
        bpns:
          - manufacturerId: BPNL00000003AYRE
            manufacturerName: OEM A
        job:
          completedOn: 2022-02-03T14:48:54.709Z
          createdOn: 2022-02-03T14:48:54.709Z
          exception:
            errorDetail: Timeout while requesting Digital Registry
            exception: IrsTimeoutException
            exceptionDate: 2022-02-03T14:48:54.709Z
          globalAssetId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          id: e5347c88-a921-11ec-b909-0242ac120002
          lastModifiedOn: 2022-02-03T14:48:54.709Z
          parameter:
            aspects:
              - urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
              - urn:samm:io.catenax.serial_part:3.0.0#SerialPart
            auditContractNegotiation: false
            bomLifecycle: asBuilt
            collectAspects: false
            depth: 1
            direction: downward
            lookupBPNs: false
          startedOn: 2022-02-03T14:48:54.709Z
          state: COMPLETED
          summary:
            asyncFetchedItems:
              completed: 0
              failed: 0
              running: 0
        relationships:
          - catenaXId: urn:uuid:d9bec1c6-e47c-4d18-ba41-0a5fe8b7f447
            linkedItem:
              assembledOn: 2022-02-03T14:48:54.709Z
              childCatenaXId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9
              hasAlternatives: false
              lastModifiedOn: 2022-02-03T14:48:54.709Z
              lifecycleContext: asBuilt
              quantity:
                measurementUnit:
                  datatypeURI: urn:bamm:io.openmanufacturing:meta-model:1.0.0#piece
                  lexicalValue: piece
                quantityNumber: 1.0
        shells:
          - contractAgreementId: f253718e-a270-4367-901b-9d50d9bd8462
            payload:
              description:
                - language: en
                  text: The shell for a vehicle
              globalAssetId: urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9
              id: urn:uuid:882fc530-b69b-4707-95f6-5dbc5e9baaa8
              idShort: future concept x
              specificAssetIds:
                - name: engineserialid
                  value: "12309481209312"
              submodelDescriptors:
                - description:
                  - language: en
                    text: Provides base vehicle information
                  endpoints:
                    - interface: HTTP
                      protocolInformation:
                        endpointProtocol: HTTPS
                        endpointProtocolVersion:
                          - "1.0"
                        href: https://catena-x.net/vehicle/basedetails/
                        subprotocol: DSP
                        subprotocolBody: id=urn:uuid:c8159379-4613-48b8-ad52-6baed7afe923;dspEndpoint=https://irs-provider-controlplane3.dev.demo.catena-x.net
                        subprotocolBodyEncoding: plain
                  id: urn:uuid:5d25a897-6571-4800-b98c-a3352fbf996d
                  idShort: SingleLevelBomAsPlanned
                  semanticId:
                    keys:
                      - type: ExternalReference
                        value: urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
                    type: ModelReference
                - description:
                  - language: en
                    text: Provides base vehicle information
                  endpoints:
                    - interface: HTTP
                      protocolInformation:
                        endpointProtocol: HTTPS
                        endpointProtocolVersion:
                          - "1.0"
                        href: https://catena-x.net/vehicle/partdetails/
                        subprotocol: DSP
                        subprotocolBody: id=urn:uuid:c8159379-4613-48b8-ad52-6baed7afe923;dspEndpoint=https://irs-provider-controlplane3.dev.demo.catena-x.net
                        subprotocolBodyEncoding: plain
                  id: urn:uuid:dae4d249-6d66-4818-b576-bf52f3b9ae90
                  idShort: vehicle part details
                  semanticId:
                    keys:
                      - type: Submodel
                        value: urn:bamm:io.catenax.vehicle:0.1.1#PartDetails
                    type: ModelReference
        submodels:
          - aspectType: urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
            contractAgreementId: f253718e-a270-4367-901b-9d50d9bd8462
            identification: urn:uuid:fc784d2a-5506-4e61-8e34-21600f8cdeff
            payload:
              catenaXId: urn:uuid:d9bec1c6-e47c-4d18-ba41-0a5fe8b7f447
              childItems:
                - businessPartner: BPNL00012345aNXY
                  catenaXId: urn:uuid:d9bec1c6-e47c-4d18-ba41-0a5fe8b7f447
                  createdOn: 2022-02-03T14:48:54.709Z
                  hasAlternatives: false
                  lastModifiedOn: 2022-02-03T14:48:54.709Z
                  quantity:
                    unit: unit:piece
                    value: 20.0
        tombstones:
          - catenaXId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
            endpointURL: https://catena-x.net/vehicle/partdetails/
            processingError:
              errorDetail: Details to reason of failure
              lastAttempt: 2022-02-03T14:48:54.709Z
              processStep: SchemaValidation
              retryCounter: 0
    partial-job-result:
      value:
        bpns: []
        job:
          completedOn: 2022-02-03T14:48:54.709Z
          createdOn: 2022-02-03T14:48:54.709Z
          exception:
            errorDetail: Timeout while requesting Digital Registry
            exception: IrsTimeoutException
            exceptionDate: 2022-02-03T14:48:54.709Z
          globalAssetId: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          id: e5347c88-a921-11ec-b909-0242ac120002
          lastModifiedOn: 2022-02-03T14:48:54.709Z
          parameter:
            aspects:
              - urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
              - urn:samm:io.catenax.serial_part:3.0.0#SerialPart
            auditContractNegotiation: false
            bomLifecycle: asBuilt
            collectAspects: false
            depth: 1
            direction: downward
            lookupBPNs: false
          startedOn: 2022-02-03T14:48:54.709Z
          state: RUNNING
          summary:
            asyncFetchedItems:
              completed: 0
              failed: 0
              running: 0
        relationships: []
        submodels: []
        tombstones: []
  schemas:
    AdministrativeInformation:
      type: object
      additionalProperties: false
      properties:
        revision:
          type: string
        version:
          type: string
    AspectModel:
      type: object
      additionalProperties: false
      properties:
        name:
          type: string
        status:
          type: string
        type:
          type: string
        urn:
          type: string
        version:
          type: string
    AspectModels:
      type: object
      additionalProperties: false
      example: |-
        {"lastUpdated"="2023-02-13T08:18:11.990659500Z", "models"=[{"name"="SingleLevelBomAsBuilt", "status"="RELEASED", "type"="BAMM", "urn"="urn:bamm:io.catenax.single_level_bom_as_built:1.0.0#SingleLevelBomAsBuilt", "version"="1.0.0"},
            {"name"="SerialPart", "status"="RELEASED", "type"="BAMM", "urn"="urn:bamm:io.catenax.serial_part:1.0.0#SerialPart", "version"="1.0.0"}]}
      properties:
        lastUpdated:
          type: string
        models:
          type: array
          items:
            $ref: "#/components/schemas/AspectModel"
    AssetAdministrationShellDescriptor:
      type: object
      additionalProperties: false
      description: AAS shells.
      properties:
        administration:
          $ref: "#/components/schemas/AdministrativeInformation"
        description:
          type: array
          items:
            $ref: "#/components/schemas/LangString"
          maxItems: 2147483647
        globalAssetId:
          type: string
          description: Id of global asset.
          example: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
        id:
          type: string
          example: 882fc530-b69b-4707-95f6-5dbc5e9baaa8
        idShort:
          type: string
          example: future concept x
        specificAssetIds:
          type: array
          items:
            $ref: "#/components/schemas/IdentifierKeyValuePair"
          maxItems: 2147483647
        submodelDescriptors:
          type: array
          items:
            $ref: "#/components/schemas/SubmodelDescriptor"
          maxItems: 2147483647
    AsyncFetchedItems:
      type: object
      additionalProperties: false
      description: Statistics of job execution.
      properties:
        completed:
          type: integer
          format: int32
          description: Number of completed item transfers.
          maximum: 2147483647
          minimum: 0
        failed:
          type: integer
          format: int32
          description: Number of failed item transfers.
          maximum: 2147483647
          minimum: 0
        running:
          type: integer
          format: int32
          description: Number of running item transfers.
          maximum: 2147483647
          minimum: 0
    BatchOrderCreated:
      type: object
      additionalProperties: false
      description: Id of the created Batch order.
      properties:
        id:
          type: string
          format: uuid
          description: Id of the Batch Order.
    BatchOrderResponse:
      type: object
      additionalProperties: false
      description: BatchOrderAck Payload Response.
      example: "{\"batchChecksum\"=1, \"batches\"=[{\"batchId\"=\"f253718e-a270-4367-901b-9d50d9bd8462\"\
        , \"batchNumber\"=1, \"batchProcessingState\"=\"PARTIAL\", \"batchUrl\"=\"\
        https://../irs/orders/f253718e-a270-4367-901b-9d50d9bd8462/batches/f253718e-a270-4367-901b-9d50d9bd8462\"\
        , \"jobsInBatchChecksum\"=1}], \"orderId\"=\"f253718e-a270-4367-901b-9d50d9bd8462\"\
        , \"state\"=\"COMPLETED\"}"
      properties:
        batchChecksum:
          type: integer
          format: int32
          description: Expected number of batches in order.
        batches:
          type: array
          description: Array of batches.
          items:
            $ref: "#/components/schemas/BatchResponse"
          maxItems: 2147483647
        orderId:
          type: string
          format: uuid
          description: Id of the order.
          maxLength: 36
          minLength: 36
          pattern: "/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i"
        state:
          type: string
          description: The state of the order.
          enum:
            - INITIALIZED
            - COMPLETED
            - PROCESSING
            - PARTIAL
            - ERROR
    BatchResponse:
      type: object
      additionalProperties: false
      description: Batch model.
      example: "{\"batchId\"=\"f253718e-a270-4367-901b-9d50d9bd8462\", \"batchNumber\"\
        =1, \"batchProcessingState\"=\"COMPLETED\", \"batchTotal\"=1, \"completedOn\"\
        =\"2022-02-03T14:48:54.709Z\", \"jobs\"=[{\"completedOn\"=\"2022-02-03T14:48:54.709Z\"\
        , \"id\"=\"6c311d29-5753-46d4-b32c-19b918ea93b0\", \"startedOn\"=\"2022-02-03T14:48:54.709Z\"\
        , \"state\"=\"COMPLETED\"}], \"jobsInBatchChecksum\"=1, \"orderId\"=\"f253718e-a270-4367-901b-9d50d9bd8462\"\
        , \"startedOn\"=\"2022-02-03T14:48:54.709Z\", \"totalJobs\"=1}"
      properties:
        batchId:
          type: string
          format: uuid
          description: Id of the batch.
          maxLength: 36
          minLength: 36
          pattern: "/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i"
        batchNumber:
          type: integer
          format: int32
          description: Sequential number begins with first (1.) batch.
        batchProcessingState:
          type: string
          description: The state of the batch.
          enum:
            - INITIALIZED
            - COMPLETED
            - PROCESSING
            - PARTIAL
            - ERROR
        batchTotal:
          type: integer
          format: int32
          description: The total number of batches.
        completedOn:
          type: string
          format: date-time
        jobs:
          type: array
          description: Array of jobs.
          items:
            $ref: "#/components/schemas/JobStatusResult"
          maxItems: 2147483647
        jobsInBatchChecksum:
          type: integer
          format: int32
          description: Expected number of jobs in batch.
        orderId:
          type: string
          format: uuid
          description: Id of the order.
          maxLength: 36
          minLength: 36
          pattern: "/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i"
        startedOn:
          type: string
          format: date-time
        totalJobs:
          type: integer
          format: int32
          description: Total amount of jobs inside the order.
    Bpn:
      type: object
      additionalProperties: false
      description: Business partner id with name
      properties:
        manufacturerId:
          type: string
          example: BPNL00000003AYRE
        manufacturerName:
          type: string
          example: OEM A
    Content:
      type: object
      additionalProperties: false
      description: Recursive notification content. REQUEST requires type, openingId,
        useCase, globalAssetId, bomLifecycle=asPlanned and a non-empty aspects list;
        status and result must be omitted. RESPONSE requires type, openingId, useCase,
        bomLifecycle=asPlanned, the same non-empty aspects list, status and result.
      properties:
        aspects:
          type: array
          items:
            type: string
            enum:
              - urn:samm:io.catenax.item_stock_anonymized:1.0.0#ItemStockAnonymized
              - urn:samm:io.catenax.delivery_information_anonymized:1.0.0#DeliveryInformationAnonymized
              - urn:samm:io.catenax.planned_production_output_anonymized:1.0.0#PlannedProductionOutputAnonymized
            pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        bomLifecycle:
          type: string
          description: BOM lifecycle used for recursive PURIS traversal. PURIS supports
            only asPlanned.
          enum:
            - asPlanned
        globalAssetId:
          type: string
          pattern: "^(?:urn:uuid:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        openingId:
          type: string
          pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        result:
          $ref: "#/components/schemas/RecursiveJobResult"
        status:
          type: string
          enum:
            - COMPLETED
            - FAILED
            - TIMED_OUT
        type:
          type: string
          enum:
            - REQUEST
            - RESPONSE
        useCase:
          type: string
          enum:
            - PURIS_ITEM_STOCK_ANONYMIZED_RECURSIVE
      required:
        - openingId
        - type
        - useCase
    CreatePoliciesResponse:
      type: object
      additionalProperties: false
      properties:
        policyId:
          type: string
          description: ID of the registered policy
    CreatePolicyRequest:
      type: object
      additionalProperties: false
      description: Request to add a policy
      properties:
        businessPartnerNumber:
          type: string
          description: |
            The business partner number (BPN) for which the policy should be registered.
            This parameter is optional.
            If not set the policy is registered for each existing BPN.
          example: BPNL1234567890AB
          pattern: "(BPNL)[\\w\\d]{10}[\\w\\d]{2}"
        payload:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/JsonValue"
          description: The policy payload.
          example:
            '@context':
              odrl: http://www.w3.org/ns/odrl/2/
            '@id': e917f5f-8dac-49ac-8d10-5b4d254d2b48
            '@type': PolicyDefinitionRequestDto
            policy:
              '@type': Policy
              odrl:permission:
                - odrl:action: use
                  odrl:constraint:
                    odrl:and:
                      - odrl:leftOperand: Membership
                        odrl:operator:
                          '@id': odrl:eq
                        odrl:rightOperand: active
                      - odrl:leftOperand: PURPOSE
                        odrl:operator:
                          '@id': odrl:eq
                        odrl:rightOperand: ID 3.1 Trace
          properties:
            empty:
              type: boolean
            valueType:
              type: string
              enum:
                - ARRAY
                - OBJECT
                - STRING
                - NUMBER
                - "TRUE"
                - "FALSE"
                - "NULL"
        validUntil:
          type: string
          format: date-time
          description: Timestamp after which the policy will no longer be accepted
            in negotiations.
          example: 2025-12-12T23:59:59.999Z
      required:
        - payload
        - validUntil
    EdcNotificationHeader:
      type: object
      additionalProperties: false
      description: EDC notification header information
      properties:
        notificationId:
          type: string
        notificationType:
          type: string
        originalNotificationId:
          type: string
        recipientBpn:
          type: string
        replyAssetId:
          type: string
        replyAssetSubPath:
          type: string
        senderBpn:
          type: string
        senderEdc:
          type: string
      required:
        - notificationId
        - notificationType
        - recipientBpn
        - senderBpn
    EdcNotificationResponseNotificationContent:
      type: object
      additionalProperties: false
      properties:
        content:
          $ref: "#/components/schemas/ResponseNotificationContent"
        header:
          $ref: "#/components/schemas/EdcNotificationHeader"
      required:
        - content
        - header
    Endpoint:
      type: object
      additionalProperties: false
      properties:
        interface:
          type: string
          example: HTTP
        protocolInformation:
          $ref: "#/components/schemas/ProtocolInformation"
    ErrorResponse:
      type: object
      additionalProperties: false
      description: Error response.
      properties:
        error:
          type: string
          description: Error.
        messages:
          type: array
          description: List of error messages.
          items:
            type: string
          maxItems: 2147483647
        statusCode:
          type: string
          description: Error code.
          enum:
            - 100 CONTINUE
            - 101 SWITCHING_PROTOCOLS
            - 102 PROCESSING
            - 103 EARLY_HINTS
            - 103 CHECKPOINT
            - 200 OK
            - 201 CREATED
            - 202 ACCEPTED
            - 203 NON_AUTHORITATIVE_INFORMATION
            - 204 NO_CONTENT
            - 205 RESET_CONTENT
            - 206 PARTIAL_CONTENT
            - 207 MULTI_STATUS
            - 208 ALREADY_REPORTED
            - 226 IM_USED
            - 300 MULTIPLE_CHOICES
            - 301 MOVED_PERMANENTLY
            - 302 FOUND
            - 302 MOVED_TEMPORARILY
            - 303 SEE_OTHER
            - 304 NOT_MODIFIED
            - 305 USE_PROXY
            - 307 TEMPORARY_REDIRECT
            - 308 PERMANENT_REDIRECT
            - 400 BAD_REQUEST
            - 401 UNAUTHORIZED
            - 402 PAYMENT_REQUIRED
            - 403 FORBIDDEN
            - 404 NOT_FOUND
            - 405 METHOD_NOT_ALLOWED
            - 406 NOT_ACCEPTABLE
            - 407 PROXY_AUTHENTICATION_REQUIRED
            - 408 REQUEST_TIMEOUT
            - 409 CONFLICT
            - 410 GONE
            - 411 LENGTH_REQUIRED
            - 412 PRECONDITION_FAILED
            - 413 PAYLOAD_TOO_LARGE
            - 413 REQUEST_ENTITY_TOO_LARGE
            - 414 URI_TOO_LONG
            - 414 REQUEST_URI_TOO_LONG
            - 415 UNSUPPORTED_MEDIA_TYPE
            - 416 REQUESTED_RANGE_NOT_SATISFIABLE
            - 417 EXPECTATION_FAILED
            - 418 I_AM_A_TEAPOT
            - 419 INSUFFICIENT_SPACE_ON_RESOURCE
            - 420 METHOD_FAILURE
            - 421 DESTINATION_LOCKED
            - 422 UNPROCESSABLE_ENTITY
            - 423 LOCKED
            - 424 FAILED_DEPENDENCY
            - 425 TOO_EARLY
            - 426 UPGRADE_REQUIRED
            - 428 PRECONDITION_REQUIRED
            - 429 TOO_MANY_REQUESTS
            - 431 REQUEST_HEADER_FIELDS_TOO_LARGE
            - 451 UNAVAILABLE_FOR_LEGAL_REASONS
            - 500 INTERNAL_SERVER_ERROR
            - 501 NOT_IMPLEMENTED
            - 502 BAD_GATEWAY
            - 503 SERVICE_UNAVAILABLE
            - 504 GATEWAY_TIMEOUT
            - 505 HTTP_VERSION_NOT_SUPPORTED
            - 506 VARIANT_ALSO_NEGOTIATES
            - 507 INSUFFICIENT_STORAGE
            - 508 LOOP_DETECTED
            - 509 BANDWIDTH_LIMIT_EXCEEDED
            - 510 NOT_EXTENDED
            - 511 NETWORK_AUTHENTICATION_REQUIRED
    Header:
      type: object
      additionalProperties: true
      description: CX-0151 message header based on
        urn:samm:io.catenax.shared.message_header:3.0.0#MessageHeaderAspect.
        REQUEST messages require expectedResponseBy. RESPONSE messages require relatedMessageId
        and must not contain expectedResponseBy.
      properties:
        context:
          type: string
          description: Recursive IRS notification API context.
          pattern: ^IndustryCore-RecursiveIrsNotificationApi-Receive:1\.0\.0$
        expectedResponseBy:
          type: string
          description: REQUEST only. ISO 8601 timestamp by which the child should
            respond. Must be omitted for RESPONSE messages.
          pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        messageId:
          type: string
          pattern: "^(?:urn:uuid:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        receiverBpn:
          type: string
          description: Receiver BPNL.
          pattern: "^BPNL[0-9A-Za-z]{12}$"
        relatedMessageId:
          type: string
          description: Correlation to the previous recursive notification. REQUEST
            uses it to link to the parent job message. RESPONSE uses it to reference
            the child request being answered.
          pattern: "^(?:urn:uuid:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        senderBpn:
          type: string
          description: Sender BPNL.
          pattern: "^BPNL[0-9A-Za-z]{12}$"
        sentDateTime:
          type: string
          pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        version:
          type: string
          description: MessageHeaderAspect semantic model version.
          pattern: ^3\.0\.0$
      required:
        - context
        - messageId
        - receiverBpn
        - senderBpn
        - sentDateTime
        - version
    IdentifierKeyValuePair:
      type: object
      additionalProperties: false
      properties:
        externalSubjectId:
          $ref: "#/components/schemas/Reference"
        name:
          type: string
          example: engineserialid
        semanticId:
          $ref: "#/components/schemas/Reference"
        value:
          type: string
          example: "12309481209312"
    Job:
      type: object
      additionalProperties: false
      description: Executable unit with meta information and item graph result.
      properties:
        aasIdentifier:
          type: string
          description: Asset Administration Shell Id
          example: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
        completedOn:
          type: string
          format: date-time
          example: 2022-02-03T14:48:54.709Z
        createdOn:
          type: string
          format: date-time
          example: 2022-02-03T14:48:54.709Z
        exception:
          $ref: "#/components/schemas/JobErrorDetails"
        globalAssetId:
          type: string
          description: Part global unique id in the format urn:uuid:uuid4.
          example: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          maxLength: 45
          minLength: 45
          pattern: "^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        id:
          type: string
          format: uuid
          description: Id of the job.
          example: e5347c88-a921-11ec-b909-0242ac120002
          maxLength: 36
          minLength: 36
          pattern: "/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i"
        lastModifiedOn:
          type: string
          format: date-time
          example: 2022-02-03T14:48:54.709Z
        parameter:
          $ref: "#/components/schemas/JobParameter"
        startedOn:
          type: string
          format: date-time
          example: 2022-02-03T14:48:54.709Z
        state:
          type: string
          enum:
            - UNSAVED
            - INITIAL
            - RUNNING
            - TRANSFERS_FINISHED
            - COMPLETED
            - CANCELED
            - ERROR
          example: COMPLETED
        summary:
          $ref: "#/components/schemas/Summary"
      required:
        - id
        - state
    JobErrorDetails:
      type: object
      additionalProperties: false
      description: Job error details.
      properties:
        errorDetail:
          type: string
          description: Detailed exception information.
          example: Timeout while requesting Digital Registry
          maxLength: 4000
        exception:
          type: string
          description: Exception name.
          example: IrsTimeoutException
          maxLength: 100
        exceptionDate:
          type: string
          format: date-time
          description: Datetime error occurs.
          example: 2022-02-03T14:48:54.709Z
    JobHandle:
      type: object
      additionalProperties: false
      description: The unique jobId handle of the just processed job.
      properties:
        id:
          type: string
          format: uuid
          description: Id of the job.
          maxLength: 36
          minLength: 36
          pattern: "/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i"
    JobParameter:
      type: object
      additionalProperties: false
      description: Job parameter of job processing.
      properties:
        aspects:
          type: string
          example: SerialPart
        auditContractNegotiation:
          type: boolean
          example: false
        bomLifecycle:
          type: string
          description: The lifecycle context in which the child part was assembled
            into the parent part.
          enum:
            - asBuilt
            - asPlanned
            - asSpecified
          example: asBuilt
        bpn:
          type: string
          example: BPNL00000003AYRE
        callbackUrl:
          type: string
          example: "https://hostname.com/callback?id={id}&state={state}"
        collectAspects:
          type: boolean
          example: false
        depth:
          type: integer
          format: int32
          example: 1
          maximum: 2147483647
          minimum: 0
        direction:
          type: string
          description: Item graph traversal direction.
          enum:
            - upward
            - downward
          example: upward
        lookupBPNs:
          type: boolean
          example: false
    JobStatusResult:
      type: object
      additionalProperties: false
      properties:
        completedOn:
          type: string
          format: date-time
        id:
          type: string
          format: uuid
        startedOn:
          type: string
          format: date-time
        state:
          type: string
          enum:
            - UNSAVED
            - INITIAL
            - RUNNING
            - TRANSFERS_FINISHED
            - COMPLETED
            - CANCELED
            - ERROR
    Jobs:
      type: object
      additionalProperties: false
      description: Container for a job with item graph.
      example: |-
        {"bpns"=[{"manufacturerId"="BPNL00000003AAXX", "manufacturerName"="AB CD"}], "job"={"completedOn"="2022-02-03T14:48:54.709Z", "createdOn"="2022-02-03T14:48:54.709Z", "exception"={"errorDetail"="Timeout while requesting Digital Registry", "exception"="IrsTimeoutException", "exceptionDate"="2022-02-03T14:48:54.709Z"}, "globalAssetId"="urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0", "id"="e5347c88-a921-11ec-b909-0242ac120002", "lastModifiedOn"="2022-02-03T14:48:54.709Z", "parameter"={"aspects"=["SerialPart", "AddressAspect"], "auditContractNegotiation"=false, "bomLifecycle"="asBuilt", "collectAspects"=false, "depth"=1, "direction"="downward", "lookupBPNs"=false}, "startedOn"="2022-02-03T14:48:54.709Z", "state"="COMPLETED", "summary"={"asyncFetchedItems"={"completed"=3, "failed"=0, "running"=0}}}, "relationships"=[{"catenaXId"="urn:uuid:d9bec1c6-e47c-4d18-ba41-0a5fe8b7f447", "linkedItem"={"assembledOn"="2022-02-03T14:48:54.709Z", "childCatenaXId"="urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9", "hasAlternatives"=false, "lastModifiedOn"="2022-02-03T14:48:54.709Z", "lifecycleContext"="asBuilt", "quantity"={"measurementUnit"={"datatypeURI"="urn:bamm:io.openmanufacturing:meta-model:1.0.0#piece", "lexicalValue"="piece"}, "quantityNumber"=1}}}], "shells"=[{"contractAgreementId"="f253718e-a270-4367-901b-9d50d9bd8462", "payload"={"description"=[{"language"="en", "text"="The shell for a vehicle"}], "globalAssetId"="urn:uuid:a45a2246-f6e1-42da-b47d-5c3b58ed62e9", "id"="urn:uuid:882fc530-b69b-4707-95f6-5dbc5e9baaa8", "idShort"="future concept x", "specificAssetIds"=[{"name"="engineserialid", "value"="12309481209312"}], "submodelDescriptors"=[{"description"=[{"language"="en", "text"="Provides base vehicle information"}], "endpoints"=[{"interface"="HTTP", "protocolInformation"={"endpointProtocol"="HTTPS", "endpointProtocolVersion"=["1.0"], "href"="https://catena-x.net/vehicle/basedetails/", "subprotocol"="DSP", "subprotocolBody"="id=urn:uuid:c8159379-4613-48b8-ad52-6baed7afe923;dspEndpoint=https://irs-provider-controlplane3.dev.demo.catena-x.net", "subprotocolBodyEncoding"="plain"}}], "id"="urn:uuid:5d25a897-6571-4800-b98c-a3352fbf996d", "idShort"="SingleLevelBomAsPlanned", "semanticId"={"keys"=[{"type"="ExternalReference", "value"="urn:bamm:io.catenax.single_level_bom_as_planned:2.0.0#SingleLevelBomAsPlanned"}], "type"="ModelReference"}},
            {"description"=[{"language"="en", "text"="Provides base vehicle information"}], "endpoints"=[{"interface"="HTTP", "protocolInformation"={"endpointProtocol"="HTTPS", "endpointProtocolVersion"=["1.0"], "href"="https://catena-x.net/vehicle/partdetails/", "subprotocol"="DSP", "subprotocolBody"="id=urn:uuid:c8159379-4613-48b8-ad52-6baed7afe923;dspEndpoint=https://irs-provider-controlplane3.dev.demo.catena-x.net", "subprotocolBodyEncoding"="plain"}}], "id"="urn:uuid:dae4d249-6d66-4818-b576-bf52f3b9ae90", "idShort"="vehicle part details", "semanticId"={"keys"=[{"type"="Submodel", "value"="urn:bamm:com.catenax.vehicle:0.1.1#PartDetails"}], "type"="ModelReference"}}]}}], "submodels"=[{"aspectType"="supply_chain_impacted", "contractAgreementId"="f253718e-a270-4367-901b-9d50d9bd8462", "identification"="urn:uuid:fc784d2a-5506-4e61-8e34-21600f8cdeff", "payload"={"supplyChainImpacted"="YES"}}], "tombstones"=[{"catenaXId"="urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0", "endpointURL"="https://catena-x.net/vehicle/partdetails/", "processingError"={"errorDetail"="Details to reason of failure", "lastAttempt"="2022-02-03T14:48:54.709Z", "processStep"="SchemaValidation", "retryCounter"=0}}]}
      properties:
        bpns:
          type: array
          description: Collection of bpn mappings
          items:
            $ref: "#/components/schemas/Bpn"
          maxItems: 2147483647
          uniqueItems: true
        job:
          $ref: "#/components/schemas/Job"
        relationships:
          type: array
          description: Relationships between parent and child items.
          items:
            $ref: "#/components/schemas/Relationship"
          maxItems: 2147483647
        shells:
          type: array
          description: AAS shells.
          items:
            $ref: "#/components/schemas/Shell"
          maxItems: 2147483647
        submodels:
          type: array
          description: Collection of requested Submodels
          items:
            $ref: "#/components/schemas/Submodel"
          maxItems: 2147483647
        tombstones:
          type: array
          description: Collection of not resolvable endpoints as tombstones. Including
            cause of error and endpoint URL.
          items:
            $ref: "#/components/schemas/Tombstone"
          maxItems: 2147483647
    JsonValue:
      type: object
      additionalProperties: false
      description: The policy payload.
      example:
        '@context':
          odrl: http://www.w3.org/ns/odrl/2/
        '@id': e917f5f-8dac-49ac-8d10-5b4d254d2b48
        '@type': PolicyDefinitionRequestDto
        policy:
          '@type': Policy
          odrl:permission:
            - odrl:action: use
              odrl:constraint:
                odrl:and:
                  - odrl:leftOperand: Membership
                    odrl:operator:
                      '@id': odrl:eq
                    odrl:rightOperand: active
                  - odrl:leftOperand: PURPOSE
                    odrl:operator:
                      '@id': odrl:eq
                    odrl:rightOperand: ID 3.1 Trace
      properties:
        valueType:
          type: string
          enum:
            - ARRAY
            - OBJECT
            - STRING
            - NUMBER
            - "TRUE"
            - "FALSE"
            - "NULL"
    LangString:
      type: object
      additionalProperties: false
      properties:
        language:
          type: string
          example: en
        text:
          type: string
          example: The shell for a vehicle
    LinkedItem:
      type: object
      additionalProperties: false
      description: Set of child parts the parent object is assembled by (one structural
        level down).
      properties:
        assembledOn:
          type: string
          format: date-time
          description: Datetime of assembly.
          example: 2022-02-03T14:48:54.709Z
        childCatenaXId:
          type: string
          description: CatenaX child global asset id in the format urn:uuid:uuid4.
          example: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          maxLength: 45
          minLength: 45
          pattern: "^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        hasAlternatives:
          type: boolean
          description: Expresses whether the part is built-in or whether it is one
            of several options.
        lastModifiedOn:
          type: string
          format: date-time
          description: Last datetime item was modified.
          example: 2022-02-03T14:48:54.709Z
        lifecycleContext:
          type: string
          description: The lifecycle context in which the child part was assembled
            into the parent part.
          enum:
            - asBuilt
            - asPlanned
            - asSpecified
          example: asBuilt
        quantity:
          $ref: "#/components/schemas/Quantity"
    MeasurementUnit:
      type: object
      additionalProperties: false
      properties:
        datatypeURI:
          type: string
          example: urn:bamm:io.openmanufacturing:meta-model:1.0.0#piece
        lexicalValue:
          type: string
          example: piece
    Page:
      type: object
      additionalProperties: false
      properties:
        content:
          type: array
          items:
            type: object
        empty:
          type: boolean
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        numberOfElements:
          type: integer
          format: int32
        pageable:
          $ref: "#/components/schemas/PageableObject"
        size:
          type: integer
          format: int32
        sort:
          $ref: "#/components/schemas/SortObject"
        totalElements:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
    PageResult:
      type: object
      additionalProperties: false
      example: "{\"content\"=[{\"completedOn\"=\"test\", \"id\"=\"046b6c7f-0b8a-43b9-b35d-6489e6daee91\"\
        , \"startedOn\"=\"2000-01-23T04:56:07.000+00:00\", \"state\"=\"UNSAVED\"}],\
        \ \"pageCount\"=0, \"pageNumber\"=6, \"pageSize\"=1, \"totalElements\"=5}"
      properties:
        content:
          type: array
          items:
            $ref: "#/components/schemas/JobStatusResult"
        pageCount:
          type: integer
          format: int32
        pageNumber:
          type: integer
          format: int32
        pageSize:
          type: integer
          format: int32
        totalElements:
          type: integer
          format: int32
    PageableObject:
      type: object
      additionalProperties: false
      properties:
        offset:
          type: integer
          format: int64
        pageNumber:
          type: integer
          format: int32
        pageSize:
          type: integer
          format: int32
        paged:
          type: boolean
        sort:
          $ref: "#/components/schemas/SortObject"
        unpaged:
          type: boolean
    PartChainIdentificationKey:
      type: object
      additionalProperties: false
      description: Key object contains required attributes for identify part chain
        entry node.
      properties:
        bpn:
          type: string
          description: BPN of partner providing the initial asset
          example: BPNL0123456789XX
          maxLength: 16
          minLength: 16
        globalAssetId:
          type: string
          description: Id of global asset.
          example: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          maxLength: 45
          minLength: 45
          pattern: "^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        identifier:
          type: string
          description: Id of Asset Administration Shell.
          example: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          maxLength: 45
          minLength: 36
          pattern: "^(urn:uuid:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
      required:
        - bpn
    ProcessingError:
      type: object
      additionalProperties: false
      properties:
        errorDetail:
          type: string
        lastAttempt:
          type: string
          format: date-time
        processStep:
          type: string
          enum:
            - SubmodelRequest
            - DigitalTwinRequest
            - SchemaValidation
            - SchemaRequest
            - UsagePolicyValidation
            - EssValidation
        retryCounter:
          type: integer
          format: int32
          maximum: 2147483647
          minimum: 0
        rootCauses:
          type: array
          items:
            type: string
    ProtocolInformation:
      type: object
      additionalProperties: false
      properties:
        endpointProtocol:
          type: string
          example: HTTPS
        endpointProtocolVersion:
          type: array
          example:
            - "1.0"
          items:
            type: string
        href:
          type: string
          example: "https://edc.data.plane/{path}/submodel"
        securityAttributes:
          type: array
          items:
            $ref: "#/components/schemas/SecurityAttribute"
          maxItems: 2147483647
        subprotocol:
          type: string
        subprotocolBody:
          type: string
        subprotocolBodyEncoding:
          type: string
    Quantity:
      type: object
      additionalProperties: false
      description: Quantity component.
      properties:
        measurementUnit:
          $ref: "#/components/schemas/MeasurementUnit"
        quantityNumber:
          type: number
          format: double
          example: 1.0
          maximum: 2147483647
          minimum: 0
    RecursiveAspectItem:
      type: object
      additionalProperties: false
      properties:
        aspect:
          type: string
          enum:
            - urn:samm:io.catenax.item_stock_anonymized:1.0.0#ItemStockAnonymized
            - urn:samm:io.catenax.delivery_information_anonymized:1.0.0#DeliveryInformationAnonymized
            - urn:samm:io.catenax.planned_production_output_anonymized:1.0.0#PlannedProductionOutputAnonymized
        items:
          type: object
          additionalProperties: true
    RecursiveChainOpeningGrant:
      type: object
      additionalProperties: false
      properties:
        allowedBpnlSet:
          type: array
          items:
            type: string
            pattern: "^BPNL[0-9A-Za-z]{12}$"
          uniqueItems: true
        createdAt:
          type: string
          format: date-time
        globalAssetId:
          type: string
          pattern: "^(?:urn:uuid:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        openingId:
          type: string
          pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        requesterBpn:
          type: string
          pattern: "^BPNL[0-9A-Za-z]{12}$"
        updatedAt:
          type: string
          format: date-time
        useCase:
          type: string
          description: Supported recursive use case.
          enum:
            - PURIS_ITEM_STOCK_ANONYMIZED_RECURSIVE
        validFrom:
          type: string
          format: date-time
        validTo:
          type: string
          format: date-time
      required:
        - globalAssetId
        - openingId
        - requesterBpn
        - useCase
    RecursiveChildItem:
      type: object
      additionalProperties: false
      properties:
        childItems:
          type: array
          items:
            $ref: "#/components/schemas/RecursiveChildItem"
        items:
          type: array
          items:
            $ref: "#/components/schemas/RecursiveAspectItem"
        materialName:
          type: string
        materialNumber:
          type: string
        quantity:
          $ref: "#/components/schemas/RecursiveQuantity"
        tombstones:
          type: array
          items:
            $ref: "#/components/schemas/RecursiveTombstone"
    RecursiveErrorResponse:
      type: object
      additionalProperties: false
      properties:
        code:
          type: string
          enum:
            - INVALID_REQUEST
            - MALFORMED_REQUEST
            - UNSUPPORTED_ASPECT
            - CHAIN_OPENING_GRANT_REJECTED
            - NOTIFICATION_AUTHENTICATION_FAILED
            - AUTHORIZATION_FAILED
            - INVALID_NOTIFICATION
            - RECURSIVE_JOB_NOT_FOUND
            - CHAIN_OPENING_GRANT_NOT_FOUND
            - CHAIN_OPENING_GRANT_ALREADY_EXISTS
            - PERSISTENCE_UNAVAILABLE
            - RECURSIVE_ENDPOINT_NOT_FOUND
            - METHOD_NOT_ALLOWED
            - NOT_ACCEPTABLE
            - UNSUPPORTED_MEDIA_TYPE
            - INTERNAL_ERROR
        errorRef:
          type: string
        message:
          type: string
        status:
          type: integer
          format: int32
        supportedAspects:
          type: array
          items:
            type: string
        unknownAspects:
          type: array
          items:
            type: string
    RecursiveJobParameter:
      type: object
      additionalProperties: false
      properties:
        aspects:
          type: array
          items:
            type: string
            enum:
              - urn:samm:io.catenax.item_stock_anonymized:1.0.0#ItemStockAnonymized
              - urn:samm:io.catenax.delivery_information_anonymized:1.0.0#DeliveryInformationAnonymized
              - urn:samm:io.catenax.planned_production_output_anonymized:1.0.0#PlannedProductionOutputAnonymized
        bomLifecycle:
          type: string
          description: BOM lifecycle used for recursive PURIS traversal. PURIS supports
            only asPlanned.
          enum:
            - asPlanned
        childResponseDeadline:
          type: string
          format: date-time
        deadline:
          type: string
          format: date-time
        openingId:
          type: string
          description: "Chain opening identifier, identical across the whole recursive\
            \ chain."
          pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        useCase:
          type: string
          enum:
            - PURIS_ITEM_STOCK_ANONYMIZED_RECURSIVE
    RecursiveJobRequest:
      type: object
      additionalProperties: false
      properties:
        aspects:
          type: array
          description: "Semantic IDs of the payload aspects to collect. Optional -\
            \ when omitted, all three anonymized PURIS aspects are collected. An explicit\
            \ list must be a subset of the configured use-case bundle. Unknown or\
            \ bundle-external aspects are rejected at every hop."
          items:
            type: string
            description: "Semantic IDs of the payload aspects to collect. Optional\
              \ - when omitted, all three anonymized PURIS aspects are collected.\
              \ An explicit list must be a subset of the configured use-case bundle.\
              \ Unknown or bundle-external aspects are rejected at every hop."
            enum:
              - urn:samm:io.catenax.item_stock_anonymized:1.0.0#ItemStockAnonymized
              - urn:samm:io.catenax.delivery_information_anonymized:1.0.0#DeliveryInformationAnonymized
              - urn:samm:io.catenax.planned_production_output_anonymized:1.0.0#PlannedProductionOutputAnonymized
            pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        bomLifecycle:
          type: string
          default: asPlanned
          description: BOM lifecycle used for recursive PURIS traversal. PURIS supports
            only asPlanned.
          enum:
            - asPlanned
        globalAssetId:
          type: string
          pattern: "^(?:urn:uuid:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        openingId:
          type: string
          description: "Chain opening identifier, identical across the whole recursive\
            \ chain."
          pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        requesterBpn:
          type: string
          pattern: "^(?:BPNL[0-9A-Za-z]{12})?$"
        ttl:
          type: string
          description: "Job time-to-live as ISO 8601 duration, e.g. PT30M. Defaults\
            \ to irs.recursive.timeout.defaultJobTtl and is capped at maxJobTtl. Each\
            \ hop passes the remaining budget minus a safety buffer to the child\
            \ as the child response deadline."
          pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]*$"
        useCase:
          type: string
          description: Recursive use case. Only the configured PURIS anonymized bundle
            is supported.
          enum:
            - PURIS_ITEM_STOCK_ANONYMIZED_RECURSIVE
          example: PURIS_ITEM_STOCK_ANONYMIZED_RECURSIVE
      required:
        - globalAssetId
        - openingId
        - useCase
    RecursiveJobResult:
      type: object
      additionalProperties: false
      properties:
        bomLifecycle:
          type: string
          description: BOM lifecycle used for recursive PURIS traversal. PURIS supports
            only asPlanned.
          enum:
            - asPlanned
        childItems:
          type: array
          items:
            $ref: "#/components/schemas/RecursiveChildItem"
        requestedAspects:
          type: array
          items:
            type: string
            enum:
              - urn:samm:io.catenax.item_stock_anonymized:1.0.0#ItemStockAnonymized
              - urn:samm:io.catenax.delivery_information_anonymized:1.0.0#DeliveryInformationAnonymized
              - urn:samm:io.catenax.planned_production_output_anonymized:1.0.0#PlannedProductionOutputAnonymized
        resultStatus:
          type: string
          description: "Business outcome of the aggregation: COMPLETE (no tombstones),\
            \ PARTIAL (usable material tree plus tombstones) or FAILED (no usable\
            \ material tree). Independent of job.state, which reflects the technical\
            \ run - a COMPLETED job can carry a FAILED result when the chain delivered\
            \ no usable data."
          enum:
            - COMPLETE
            - PARTIAL
            - FAILED
        tombstones:
          type: array
          description: Sanitized root-level or otherwise unassignable failures. Failures
            that belong to a material node are exposed in that child item's tombstones.
            Identical tombstones within the same scope are merged with an occurrences
            counter.
          items:
            $ref: "#/components/schemas/RecursiveTombstone"
        useCase:
          type: string
          enum:
            - PURIS_ITEM_STOCK_ANONYMIZED_RECURSIVE
    RecursiveJobStartResponse:
      type: object
      additionalProperties: false
      required:
        - jobId
      properties:
        jobId:
          type: string
          format: uuid
    RecursiveJobStatusResponse:
      type: object
      additionalProperties: false
      properties:
        job:
          $ref: "#/components/schemas/RecursiveJobView"
        result:
          $ref: "#/components/schemas/RecursiveJobResult"
    RecursiveJobView:
      type: object
      additionalProperties: false
      required:
        - id
      properties:
        asyncFetchedItems:
          $ref: "#/components/schemas/AsyncFetchedItems"
        completedOn:
          type: string
          format: date-time
        createdOn:
          type: string
          format: date-time
        exception:
          $ref: "#/components/schemas/JobErrorDetails"
        globalAssetId:
          type: string
        id:
          type: string
          format: uuid
        lastModifiedOn:
          type: string
          format: date-time
        parameter:
          $ref: "#/components/schemas/RecursiveJobParameter"
        state:
          type: string
          enum:
            - UNSAVED
            - INITIAL
            - RUNNING
            - TRANSFERS_FINISHED
            - COMPLETED
            - CANCELED
            - ERROR
    RecursiveNotificationMessage:
      type: object
      additionalProperties: false
      description: Recursive notification envelope. REQUEST messages start the next recursive
        child hop. RESPONSE messages return the correlated child result to the parent.
      properties:
        content:
          $ref: "#/components/schemas/Content"
        header:
          $ref: "#/components/schemas/Header"
      required:
        - content
        - header
    RecursiveNotificationResponse:
      type: object
      additionalProperties: false
      properties:
        messageId:
          type: string
        status:
          type: string
    RecursiveQuantity:
      type: object
      additionalProperties: false
      required:
        - unit
        - value
      properties:
        unit:
          type: string
          enum:
            - unit:piece
            - unit:set
            - unit:pair
            - unit:page
            - unit:cycle
            - unit:kilowattHour
            - unit:gram
            - unit:kilogram
            - unit:tonneMetricTon
            - unit:tonUsOrShortTonUkorus
            - unit:ounceAvoirdupois
            - unit:pound
            - unit:metre
            - unit:centimetre
            - unit:kilometre
            - unit:inch
            - unit:foot
            - unit:yard
            - unit:squareCentimetre
            - unit:squareMetre
            - unit:squareInch
            - unit:squareFoot
            - unit:squareYard
            - unit:cubicCentimetre
            - unit:cubicMetre
            - unit:cubicInch
            - unit:cubicFoot
            - unit:cubicYard
            - unit:litre
            - unit:millilitre
            - unit:hectolitre
            - unit:secondUnitOfTime
            - unit:minuteUnitOfTime
            - unit:hourUnitOfTime
            - unit:day
        value:
          type: number
          format: double
    RecursiveTombstone:
      type: object
      additionalProperties: false
      description: Sanitized root-level or otherwise unassignable failures. Failures
        that belong to a material node are exposed in that child item's tombstones.
        Identical tombstones within the same scope are merged with an occurrences
        counter.
      required:
        - aspects
        - detail
        - errorRefs
        - occurrences
        - reason
        - retryable
        - scope
        - type
      properties:
        aspects:
          type: array
          items:
            type: string
            enum:
              - urn:samm:io.catenax.item_stock_anonymized:1.0.0#ItemStockAnonymized
              - urn:samm:io.catenax.delivery_information_anonymized:1.0.0#DeliveryInformationAnonymized
              - urn:samm:io.catenax.planned_production_output_anonymized:1.0.0#PlannedProductionOutputAnonymized
            pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        detail:
          type: string
          minLength: 1
          pattern: "^[^\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+$"
        errorRefs:
          type: array
          minItems: 1
          items:
            type: string
            pattern: "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        occurrences:
          type: integer
          format: int32
          minimum: 1
        reason:
          type: string
          enum:
            - RECURSIVE_DEADLINE_EXCEEDED
            - CHILD_RESPONSE_TIMEOUT
            - CHILD_BRANCH_FAILED
            - CHILD_RESPONSE_INVALID
            - CHAIN_OPENING_REJECTED
            - LOCAL_ASPECT_NOT_AVAILABLE
            - LOCAL_ASPECT_REQUEST_FAILED
            - PART_TYPE_INFORMATION_NOT_AVAILABLE
            - PART_TYPE_INFORMATION_REQUEST_FAILED
            - BOM_QUANTITY_NOT_AVAILABLE
            - BOM_CHILD_GLOBAL_ASSET_ID_INVALID
            - BOM_SUBMODEL_NOT_SUPPORTED
            - BOM_SUBMODEL_ENDPOINT_MISSING
            - UNSUPPORTED_ANONYMIZED_ASPECT
        retryable:
          type: boolean
        scope:
          type: string
          enum:
            - LOCAL_NODE
            - CHILD_BRANCH
            - RECURSIVE_CHAIN
        type:
          type: string
          enum:
            - RECURSIVE_TOMBSTONE
    Reference:
      type: object
      additionalProperties: false
      properties:
        keys:
          type: array
          items:
            $ref: "#/components/schemas/SemanticId"
          maxItems: 2147483647
        type:
          type: string
    RegisterBatchOrder:
      type: object
      additionalProperties: false
      description: Request body for registering a new Batch Order.
      properties:
        aspects:
          type: array
          description: List of aspect names that will be collected if \<collectAspects\>
            flag is set to true.
          example:
            - urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
          items:
            type: string
            pattern: "^(urn:[bs]amm:.*\\d\\.\\d\\.\\d)?(#)?(\\w+)?$"
          maxItems: 2147483647
          pattern: "^(urn:[bs]amm:.*\\d\\.\\d\\.\\d)?(#)?(\\w+)?$"
        auditContractNegotiation:
          type: boolean
          description: "Flag enables and disables auditing, including provisioning\
            \ of ContractAgreementId inside submodels and shells objects. Default\
            \ is true."
        batchSize:
          type: integer
          format: int32
          default: 20
          description: Size of the batch.
          maximum: 100
          minimum: 10
        batchStrategy:
          type: string
          description: The strategy how the batch is processed internally in IRS.
          enum:
            - PRESERVE_BATCH_JOB_ORDER
            - PRESERVE_JOB_ORDER
            - PRESERVE_BATCH_ORDER
        bomLifecycle:
          type: string
          description: The lifecycle context in which the child part was assembled
            into the parent part.
          enum:
            - asBuilt
            - asPlanned
            - asSpecified
        callbackUrl:
          type: string
          description: "Callback url to notify requestor when job processing is finished.\
            \ There are four uri variable placeholders that can be used: orderId,\
            \ batchId, orderState and batchState."
          example: "https://hostname.com/callback?orderId={orderId}&batchId={batchId}&orderState={orderState}&batchState={batchState}"
        collectAspects:
          type: boolean
          description: Flag to specify whether aspects should be requested and collected.
            Default is false.
        depth:
          type: integer
          format: int32
          description: Max depth of the item graph returned. If no depth is set item
            graph with max depth is returned.
          maximum: 100
          minimum: 1
        direction:
          type: string
          default: downward
          description: Item graph traversal direction.
          enum:
            - upward
            - downward
        jobTimeout:
          type: integer
          format: int32
          default: 3600
          description: Timeout in seconds for each job processing inside the complete
            order.
          maximum: 7200
          minimum: 60
        keys:
          type: array
          items:
            $ref: "#/components/schemas/PartChainIdentificationKey"
          maxItems: 2147483647
        lookupBPNs:
          type: boolean
          deprecated: true
          description: Flag to specify whether BPNs should be collected and resolved
            via the configured BPDM URL. Default is false.
        timeout:
          type: integer
          format: int32
          default: 43200
          description: Timeout in seconds for the complete batch order processing.
          maximum: 86400
          minimum: 60
      required:
        - keys
    RegisterBpnInvestigationBatchOrder:
      type: object
      additionalProperties: false
      description: Request body for registering a new Batch Order for ESS Investigation
        Job.
      properties:
        auditContractNegotiation:
          type: boolean
          description: "Flag enables and disables auditing, including provisioning\
            \ of ContractAgreementId inside submodels and shells objects. Default\
            \ is true."
          example: true
        batchSize:
          type: integer
          format: int32
          default: 20
          description: Size of the batch.
          maximum: 100
          minimum: 10
        batchStrategy:
          type: string
          description: The strategy how the batch is processed internally in IRS.
          enum:
            - PRESERVE_BATCH_JOB_ORDER
            - PRESERVE_JOB_ORDER
            - PRESERVE_BATCH_ORDER
        bomLifecycle:
          type: string
          description: The lifecycle context in which the child part was assembled
            into the parent part.
          enum:
            - asBuilt
            - asPlanned
            - asSpecified
        callbackUrl:
          type: string
          description: "Callback url to notify requestor when job processing is finished.\
            \ There are four uri variable placeholders that can be used: orderId,\
            \ batchId, orderState and batchState."
          example: "https://hostname.com/callback?orderId={orderId}&batchId={batchId}&orderState={orderState}&batchState={batchState}"
        incidentBPNSs:
          type: array
          items:
            type: string
            pattern: "(BPN)[LSA][\\w\\d]{10}[\\w\\d]{2}"
          maxItems: 2147483647
        jobTimeout:
          type: integer
          format: int32
          default: 3600
          description: Timeout in seconds for each job processing inside the complete
            order.
          maximum: 7200
          minimum: 60
        keys:
          type: array
          items:
            $ref: "#/components/schemas/PartChainIdentificationKey"
          maxItems: 2147483647
        timeout:
          type: integer
          format: int32
          default: 43200
          description: Timeout in seconds for the complete batch order processing.
          maximum: 86400
          minimum: 60
      required:
        - incidentBPNSs
        - keys
    RegisterBpnInvestigationJob:
      type: object
      additionalProperties: false
      description: The requested job definition.
      properties:
        bomLifecycle:
          type: string
          description: The lifecycle context in which the child part was assembled
            into the parent part.
          enum:
            - asBuilt
            - asPlanned
            - asSpecified
          example: asPlanned
        callbackUrl:
          type: string
          description: "Callback url to notify requestor when job processing is finished.\
            \ There are two uri variable placeholders that can be used: jobId and\
            \ jobState."
          example: "https://hostname.com/callback?jobId={jobId}&jobState={jobState}"
        incidentBPNSs:
          type: array
          description: Array of BPNS numbers.
          example:
            - BPNS000000000DDD
          items:
            type: string
            pattern: "(BPN)[LSA][\\w\\d]{10}[\\w\\d]{2}"
          maxItems: 2147483647
          pattern: "(BPN)[LSA][\\w\\d]{10}[\\w\\d]{2}"
        key:
          $ref: "#/components/schemas/PartChainIdentificationKey"
      required:
        - incidentBPNSs
        - key
    RegisterJob:
      type: object
      additionalProperties: false
      description: The requested job definition.
      properties:
        aspects:
          type: array
          description: List of aspect names that will be collected if \<collectAspects\>
            flag is set to true.
          example:
            - urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt
          items:
            type: string
            pattern: "^(urn:[bs]amm:.*\\d\\.\\d\\.\\d)?(#)?(\\w+)?$"
          maxItems: 2147483647
          pattern: "^(urn:[bs]amm:.*\\d\\.\\d\\.\\d)?(#)?(\\w+)?$"
        auditContractNegotiation:
          type: boolean
          description: "Flag enables and disables auditing, including provisioning\
            \ of ContractAgreementId inside submodels and shells objects. Default\
            \ is true."
        bomLifecycle:
          type: string
          description: The lifecycle context in which the child part was assembled
            into the parent part.
          enum:
            - asBuilt
            - asPlanned
            - asSpecified
        callbackUrl:
          type: string
          description: "Callback url to notify requestor when job processing is finished.\
            \ There are two uri variable placeholders that can be used: id and state."
          example: "https://hostname.com/callback?id={id}&state={state}"
        collectAspects:
          type: boolean
          description: Flag to specify whether aspects should be requested and collected.
            Default is false.
        depth:
          type: integer
          format: int32
          description: Max depth of the item graph returned. If no depth is set item
            graph with max depth is returned.
          maximum: 100
          minimum: 1
        direction:
          type: string
          default: downward
          description: Item graph traversal direction.
          enum:
            - upward
            - downward
        key:
          $ref: "#/components/schemas/PartChainIdentificationKey"
        lookupBPNs:
          type: boolean
          deprecated: true
          description: Flag to specify whether BPNs should be collected and resolved
            via the configured BPDM URL. Default is false.
      required:
        - key
    Relationship:
      type: object
      additionalProperties: false
      description: Relationships between parent and child items.
      properties:
        aspectType:
          type: string
          example: SingleLevelBomAsBuilt
        bpn:
          type: string
          example: BPNL00000003AYRE
        catenaXId:
          type: string
          description: CATENA-X global asset id in the format urn:uuid:uuid4.
          example: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          maxLength: 45
          minLength: 45
          pattern: "^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        linkedItem:
          $ref: "#/components/schemas/LinkedItem"
    ResponseNotificationContent:
      type: object
      additionalProperties: false
      properties:
        bpn:
          type: string
        hops:
          type: integer
          format: int32
        result:
          type: string
    SecurityAttribute:
      type: object
      additionalProperties: false
      properties:
        key:
          type: string
        type:
          type: string
        value:
          type: string
    SemanticId:
      type: object
      additionalProperties: false
      properties:
        type:
          type: string
          example: urn:bamm:com.catenax.vehicle:0.1.1
        value:
          type: string
          example: Submodel
    Shell:
      type: object
      additionalProperties: false
      properties:
        contractAgreementId:
          type: string
        payload:
          $ref: "#/components/schemas/AssetAdministrationShellDescriptor"
    SortObject:
      type: object
      additionalProperties: false
      properties:
        empty:
          type: boolean
        sorted:
          type: boolean
        unsorted:
          type: boolean
    Submodel:
      type: object
      additionalProperties: false
      description: "Submodel with identification of SubmodelDescriptor, aspect type\
        \ and payload as String"
      properties:
        aspectType:
          type: string
        contractAgreementId:
          type: string
        identification:
          type: string
        payload:
          type: object
          additionalProperties:
            type: object
    SubmodelDescriptor:
      type: object
      additionalProperties: false
      properties:
        administration:
          $ref: "#/components/schemas/AdministrativeInformation"
        description:
          type: array
          items:
            $ref: "#/components/schemas/LangString"
          maxItems: 2147483647
        endpoints:
          type: array
          items:
            $ref: "#/components/schemas/Endpoint"
          maxItems: 2147483647
        id:
          type: string
        idShort:
          type: string
        semanticId:
          $ref: "#/components/schemas/Reference"
    Summary:
      type: object
      additionalProperties: false
      description: Summary of the job with statistics of the job processing.
      properties:
        asyncFetchedItems:
          $ref: "#/components/schemas/AsyncFetchedItems"
    Tombstone:
      type: object
      additionalProperties: false
      description: Tombstone with information about request failure
      properties:
        businessPartnerNumber:
          type: string
        catenaXId:
          type: string
          description: CATENA-X global asset id in the format urn:uuid:uuid4.
          example: urn:uuid:6c311d29-5753-46d4-b32c-19b918ea93b0
          maxLength: 45
          minLength: 45
          pattern: "^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
        endpointURL:
          type: string
        policy:
          type: object
          additionalProperties:
            type: object
        processingError:
          $ref: "#/components/schemas/ProcessingError"
    UpdatePolicyRequest:
      type: object
      additionalProperties: false
      description: Request to update a policy
      properties:
        businessPartnerNumbers:
          type: array
          description: Business Partner Number (BPN).
          items:
            type: string
            description: Business Partner Number (BPN).
        policyIds:
          type: array
          description: The IDs of the policies to be updated.
          items:
            type: string
            description: The IDs of the policies to be updated.
        validUntil:
          type: string
          format: date-time
          description: Timestamp after which the policy will no longer be accepted
            in negotiations.
      required:
        - policyIds
        - validUntil
  securitySchemes:
    api_key:
      description: Api Key access
      in: header
      name: X-API-KEY
      type: apiKey
