openapi: 3.0.0
info:
  contact: {}
  description: API for Asseto2.0 - suite of software products in the market to issue, manage and trade RWAs on any DLT or blockchain.
  title: Asseto 2.0 API
  version: 1.0.0
paths:
  /api/v1/.well-known/jwks.json:
    get:
      description: 'Returns public keys to verify JWT created for notifications. More info: https://www.rfc-editor.org/info/rfc7517/.'
      operationId: jwks
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JWKS'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: JSON Web Key Set
      tags:
      - Notifications
  /api/v1/admin/transactions/evm/retry:
    post:
      description: 'Retries a previously submitted transaction that is stored in the system and has not been executed yet on the target DLT.


        The request must include the hash of the original transaction.


        Fee parameters are optional:

        - For legacy transactions (type 0), `gasPrice` may be provided.

        - For EIP-1559 transactions (type 2), `maxPriorityFeePerGas` may be provided.

        - If a fee field is omitted, the value from the original transaction is reused.

        - If `useMultiplier=true`, the system applies the configured retry multiplier to the fee values.


        The nonce is also optional. If omitted, the current address nonce is retrieved.'
      operationId: retry-transaction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetryTransactionRequest'
        description: Retry transaction request
        required: true
      responses:
        '200':
          description: Retry transaction accepted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetriedTransaction'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Retry an existing transaction
      tags:
      - Admin
  /api/v1/assetlifecycle/assets/{assetId}/interest-payments/{lifecycleEventId}:
    get:
      description: Retrieves a specific interest payment lifecycle event by its ID for the given asset.
      operationId: get-interest-payment-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique interest payment lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Interest payment lifecycle event retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InterestPaymentLifecycleEvent'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get interest payment lifecycle event by ID
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events:
    get:
      description: 'Retrieves the lifecycle events associated with the provided asset.

        Supports pagination, sorting, and filtering by status, type, record date, and execution date.'
      operationId: get-asset-lifecycle-events
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 10
        in: query
        name: pageSize
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
      - description: Number of items to skip before starting to collect the result set
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          minimum: 0
          default: 0
      - description: Field used for sorting. Any sortable field of the lifecycle event can be used. Defaults to createdAt if not provided.
        example: name
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: Sort direction (asc or desc). Defaults to desc.
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - description: Filter by lifecycle event status
        example: SCHEDULED
        in: query
        name: status
        schema:
          type: string
          enum:
          - DRAFT
          - SCHEDULED
          - READY
          - EXECUTED
          - FAILED
          - CANCELLED
      - description: Filter by lifecycle event type
        example: COUPON
        in: query
        name: type
        schema:
          type: string
          enum:
          - COUPON
          - AMORTIZATION
          - INTEREST_PAYMENT
          - REDEMPTION_PAYMENT
      - description: 'Filter by record date (format: yyyy-mm-dd)'
        example: 2026-01-01
        in: query
        name: recordDate
        schema:
          type: string
          format: date
      - description: 'Filter by execution date (format: yyyy-mm-dd)'
        example: 2026-02-01
        in: query
        name: executionDate
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Lifecycle events retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/LifecycleEvent'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get lifecycle events of an asset
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/{lifecycleEventId}/create:
    post:
      description: Initiates an asynchronous process to create (execute) the given lifecycle event on the DLT.
      operationId: create-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLifecycleEventRequest'
        description: Optional callback URL
      responses:
        '202':
          description: Lifecycle event creation process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create lifecycle event
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/{lifecycleEventId}/documents:
    get:
      description: Retrieves a paginated list of all documents attached to the specified lifecycle event.
      operationId: get-lifecycle-event-documents
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Documents retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/DocumentModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get documents for a lifecycle event
      tags:
      - Asset Lifecycle
    post:
      description: 'Initiates an asynchronous process to upload a document to the specified lifecycle event.

        Provide either fileData (base64-encoded) with a fileName, or a fileUrl — not both.'
      operationId: upload-lifecycle-event-document
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadDocumentRequest'
        description: Document upload payload
        required: true
      responses:
        '202':
          description: Document upload process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Upload document to lifecycle event
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/{lifecycleEventId}/documents/{documentId}:
    get:
      description: Retrieves a specific document attached to a lifecycle event by its ID.
      operationId: get-lifecycle-event-document
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique document identifier
        example: 9cb7f2a1-52f7-4f2e-bb9a-8d801eb7f7aa
        in: path
        name: documentId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Document retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get document by ID
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/{lifecycleEventId}/documents/{documentId}/delete:
    post:
      description: 'Initiates an asynchronous process to delete the specified document from the provided lifecycle event.

        This endpoint does not delete the document synchronously. Instead, it creates a process that can be tracked afterwards.'
      operationId: delete-lifecycle-event-document
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique document identifier
        example: 9cb7f2a1-52f7-4f2e-bb9a-8d801eb7f7aa
        in: path
        name: documentId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteDocumentRequest'
        description: Optional callback URL
      responses:
        '202':
          description: Document deletion process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Delete document
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/{lifecycleEventId}/holdings-asset-payments:
    get:
      description: Retrieves a paginated list of holdings asset payment records for a given asset and lifecycle event.
      operationId: get-holdings-asset-payment-lifecycle-events
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Holdings asset payment lifecycle events retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/HoldingsAssetPaymentLifecycleEvent'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get holdings asset payment lifecycle events
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/{lifecycleEventId}/payments:
    get:
      description: Retrieves a paginated list of payment records for the specified lifecycle event.
      operationId: get-payment-lifecycle-events
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Payment lifecycle events retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/PaymentModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get payment lifecycle events
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/{lifecycleEventId}/payments/{paymentId}:
    get:
      description: Retrieves a specific payment record for a lifecycle event by its ID.
      operationId: get-payment-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique payment identifier
        example: 9cb7f2a1-52f7-4f2e-bb9a-8d801eb7f7aa
        in: path
        name: paymentId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Payment lifecycle event retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get payment lifecycle event by ID
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/{lifecycleEventId}/positions-record/positions:
    get:
      description: Retrieves a paginated list of position records within the positions record of a lifecycle event.
      operationId: get-position-positions-record-lifecycle-events
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Position records retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/PositionModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get position records for a lifecycle event
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/{lifecycleEventId}/positions-record/positions/{positionId}:
    get:
      description: Retrieves a specific position record within the positions record of a lifecycle event.
      operationId: get-position-positions-record-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique position identifier
        example: 9cb7f2a1-52f7-4f2e-bb9a-8d801eb7f7aa
        in: path
        name: positionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Position record retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PositionModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get position record by ID
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/amortizations:
    post:
      description: Creates a new amortization lifecycle event in draft state for the given asset.
      operationId: draft-amortization-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftAmortizationRequest'
        description: Amortization lifecycle event creation payload
        required: true
      responses:
        '201':
          description: Amortization lifecycle event created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create new amortization lifecycle event as draft
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/amortizations/{amortizationId}:
    put:
      description: 'Updates the provided amortization lifecycle event associated with the given asset.

        Only draft amortization lifecycle events can be updated.'
      operationId: update-amortization-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique amortization lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: amortizationId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAmortizationRequest'
        description: Amortization lifecycle event update payload
        required: true
      responses:
        '200':
          description: Amortization lifecycle event updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Update an amortization lifecycle event in draft
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/amortizations/{lifecycleEventId}:
    get:
      description: Retrieves a specific amortization lifecycle event by its ID for the given asset.
      operationId: get-amortization-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique amortization lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Amortization lifecycle event retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AmortizationLifecycleEvent'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get amortization lifecycle event by ID
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/coupons:
    post:
      description: Creates a new coupon lifecycle event in draft state for the given asset.
      operationId: draft-coupon-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftCouponRequest'
        description: Coupon lifecycle event creation payload
        required: true
      responses:
        '201':
          description: Coupon lifecycle event created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create new coupon lifecycle event as draft
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/coupons/{couponId}:
    put:
      description: 'Updates the provided coupon lifecycle event associated with the given asset.

        Only draft coupon lifecycle events can be updated.'
      operationId: update-coupon-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique coupon lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: couponId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCouponRequest'
        description: Coupon lifecycle event update payload
        required: true
      responses:
        '200':
          description: Coupon lifecycle event updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Update a coupon lifecycle event in draft
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/lifecycle-events/coupons/{lifecycleEventId}:
    get:
      description: Retrieves a specific coupon lifecycle event by its ID for the given asset.
      operationId: get-coupon-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique coupon lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Coupon lifecycle event retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CouponLifecycleEvent'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get coupon lifecycle event by ID
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/assets/{assetId}/redemption-payments/{lifecycleEventId}:
    get:
      description: Retrieves a specific redemption payment lifecycle event by its ID for the given asset.
      operationId: get-redemption-payment-lifecycle-event
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique redemption payment lifecycle event identifier
        example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        in: path
        name: lifecycleEventId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Redemption payment lifecycle event retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RedemptionPaymentLifecycleEvent'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get redemption payment lifecycle event by ID
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/lifecycle-events:
    get:
      description: Retrieves a paginated list of lifecycle events.
      operationId: get-lifecycle-events
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: name
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - description: Filter by account ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: query
        name: accountId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Account lifecycle events retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/AccountLifecycleEvent'
                      type: array
                  type: object
              example:
                data:
                - id: c3333333-3333-3333-3333-333333333333
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  balance: '854'
                  type: COUPON
                  status: EXECUTED
                  name: Coupon payment Q1 2026
                  recordDate: '2026-03-31T00:00:00Z'
                  executionDate: '2026-04-05T00:00:00Z'
                - id: c4444444-4444-4444-4444-444444444444
                  assetId: d4e5f6a7-89ab-4cde-b123-456789abcdef
                  balance: '120'
                  type: COUPON
                  status: EXECUTED
                  name: Coupon payment Q1 2026
                  recordDate: '2026-03-31T00:00:00Z'
                  executionDate: '2026-04-05T00:00:00Z'
                page:
                  total: 2
                  pageSize: 100
                  offset: 0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get lifecycle events
      tags:
      - Asset Lifecycle
  /api/v1/assetlifecycle/process/{processId}:
    get:
      description: Retrieve a process by its ID
      parameters:
      - description: Process ID
        in: path
        name: processId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get process by id
      tags:
      - Process
  /api/v1/compliance/eligibility/external-lists:
    get:
      description: Retrieves a paginated list of compliance eligibility external lists.
      operationId: get-compliance-eligibility-external-lists
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - description: Filter by compliance policy type
        example: ALLOWLIST
        in: query
        name: type
        schema:
          type: string
          enum:
          - ALLOWLIST
          - BLOCKLIST
      responses:
        '200':
          description: External lists retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/ComplianceEligibilityExternalList'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get compliance eligibility external lists
      tags:
      - Compliance
    post:
      description: Initiates the process to create a new compliance eligibility external list.
      operationId: create-compliance-eligibility-external-list
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateComplianceEligibilityExternalListRequest'
        description: Create external list request data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create compliance eligibility external list
      tags:
      - Compliance
  /api/v1/compliance/eligibility/external-lists/{externalListId}/accounts:
    get:
      description: Retrieves a paginated list of accounts belonging to a compliance eligibility external list.
      operationId: get-compliance-eligibility-external-list-accounts
      parameters:
      - description: Unique external list identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: externalListId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Accounts retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/ComplianceEligibilityExternalListAccount'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get accounts in a compliance eligibility external list
      tags:
      - Compliance
  /api/v1/compliance/eligibility/external-lists/{externalListId}/accounts/add:
    post:
      description: Initiates the process to add an account to a compliance eligibility external list.
      operationId: add-compliance-eligibility-external-list-account
      parameters:
      - description: Unique external list identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: externalListId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddComplianceEligibilityExternalListAccountRequest'
        description: Add account request data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Add account to compliance eligibility external list
      tags:
      - Compliance
  /api/v1/compliance/eligibility/external-lists/{externalListId}/accounts/remove:
    post:
      description: Initiates the process to remove an account from a compliance eligibility external list.
      operationId: remove-compliance-eligibility-external-list-account
      parameters:
      - description: Unique external list identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: externalListId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveComplianceEligibilityExternalListAccountRequest'
        description: Remove account request data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Remove account from compliance eligibility external list
      tags:
      - Compliance
  /api/v1/compliance/process/{processId}:
    get:
      description: Retrieve a process by its ID
      parameters:
      - description: Process ID
        in: path
        name: processId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get process by id
      tags:
      - Process
  /api/v1/entity-mgmt/accounts:
    get:
      description: Retrieves a paginated list of all accounts, with optional filtering by origin.
      operationId: list-accounts
      parameters:
      - description: Filter by account origin
        in: query
        name: origin
        schema:
          type: string
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Accounts retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/Account'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List all accounts
      tags:
      - Entity Management
    post:
      description: Creates a new DLT account and registers it in the system.
      operationId: create-account
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAccountRequest'
        description: Account creation data
        required: true
      responses:
        '201':
          description: Account created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create a new account
      tags:
      - Entity Management
    put:
      description: Links an existing DLT account to an entity in the system.
      operationId: link-account
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkAccountRequest'
        description: Account link data
        required: true
      responses:
        '200':
          description: Account linked successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Link an account to an entity
      tags:
      - Entity Management
  /api/v1/entity-mgmt/accounts/{accountId}:
    get:
      description: Retrieves a specific account by its unique identifier.
      operationId: get-account
      parameters:
      - description: Account identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: accountId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Account retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
              example:
                id: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                dltAccountId: 0xdevseed0000000000000000000000000000000001
                entityIds:
                - 4613545c-830b-4662-a12e-9252f5a2a40e
                origin: INTERNAL
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get an account by ID
      tags:
      - Entity Management
  /api/v1/entity-mgmt/entities:
    get:
      description: Retrieves a paginated list of all entities in the system.
      operationId: list-entities
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Entities retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/Entity'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List all entities
      tags:
      - Entity Management
    post:
      description: Creates a new entity in the system.
      operationId: create-entity
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEntityRequest'
        description: Entity creation data
        required: true
      responses:
        '201':
          description: Entity created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create a new entity
      tags:
      - Entity Management
  /api/v1/entity-mgmt/entities/{entityId}:
    get:
      description: Retrieves a specific entity by its unique identifier.
      operationId: get-entity
      parameters:
      - description: Entity identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: entityId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Entity retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entity'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get an entity by ID
      tags:
      - Entity Management
  /api/v1/entity-mgmt/entities/{entityId}/accounts:
    get:
      description: Retrieves all accounts associated with a specific entity, with optional filtering by origin.
      operationId: list-accounts-by-entity
      parameters:
      - description: Entity identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: entityId
        required: true
        schema:
          type: string
          format: uuid
      - description: Filter by account origin
        in: query
        name: origin
        schema:
          type: string
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Accounts retrieved successfully
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Account'
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List accounts by entity
      tags:
      - Entity Management
  /api/v1/entity-mgmt/entities/{entityId}/users:
    post:
      description: Creates a new user under the specified entity.
      operationId: create-user
      parameters:
      - description: Entity identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: entityId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequest'
        description: User creation data
        required: true
      responses:
        '201':
          description: User created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create a new user
      tags:
      - Entity Management
  /api/v1/entity-mgmt/users:
    get:
      description: Retrieves a paginated list of all users in the system.
      operationId: list-users
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Users retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/User'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List all users
      tags:
      - Entity Management
  /api/v1/entity-mgmt/users/{userId}:
    get:
      description: Retrieves a specific user by its unique identifier.
      operationId: get-user
      parameters:
      - description: User identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: userId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: User retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get a user by ID
      tags:
      - Entity Management
  /api/v1/issuance/accounts/{accountId}/roles/assets:
    get:
      description: Retrieves a paginated list of all asset role associations for the given account.
      operationId: get-account-asset-roles
      parameters:
      - description: Unique account identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: accountId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Account asset roles retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageResponse'
              example:
                data: []
                page:
                  total: 0
                  pageSize: 100
                  offset: 0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get account asset roles
      tags:
      - Issuance
  /api/v1/issuance/assetclass/{assetClassId}/finalize:
    post:
      description: Initiate the process for finalize asset class
      operationId: finalize-assetclass
      parameters:
      - description: Unique asset class identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetClassId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/finalizeassetclass.Request'
        description: Request body
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/o2d-api_src_main_issuancev2_internal_app_service_process_finalizeassetclass_start.Response'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Finalize Asset Class
      tags:
      - IssuanceV2
  /api/v1/issuance/assets:
    get:
      description: Retrieves a paginated list of all assets. Supports filtering by status and origin.
      operationId: get-assets
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt, status). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - description: Filter by asset status
        in: query
        name: status
        style: form
        explode: false
        schema:
          type: array
          items:
            enum:
            - DRAFT
            - ACTIVE
            - PAUSED
            - REJECTED
            - ARCHIVED
            type: string
      - description: Filter by asset origin
        in: query
        name: origin
        schema:
          type: string
          enum:
          - INTERNAL
          - EXTERNAL
      responses:
        '200':
          description: Assets retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get assets
      tags:
      - Issuance
    post:
      description: Creates a new asset in draft state. The asset is not yet issued on the DLT.
      operationId: draft-asset
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftAssetRequest'
        description: Asset creation data
        required: true
      responses:
        '201':
          description: Asset draft created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Id'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Draft a new asset
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}:
    get:
      description: Retrieves the full details of a specific asset by its unique identifier.
      operationId: get-asset
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Asset retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Asset'
              example:
                id: f4585827-0aa5-444c-a995-de62b5f5ac34
                name: TOC Demo Bond 2026
                symbol: TOCD
                assetType: BASIC_BOND
                status: ACTIVE
                valuationData:
                  currency: EUR
                  nominalValue: '1000'
                lifecycleData:
                  currency: EUR
                  paymentMethod: CASH
                coupon:
                  couponRate: '0.05'
                  couponFrequency: QUARTERLY
                  firstCouponDate: '2026-04-01T00:00:00Z'
                currentSupply: '10000'
                maxSupply: '50000'
                decimals: 18
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get asset by ID
      tags:
      - Issuance
    put:
      description: Updates the fields of an existing asset in draft state. Only draft assets can be edited.
      operationId: edit-asset-draft
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditAssetDraftRequest'
        description: Asset edition data
        required: true
      responses:
        '200':
          description: Asset draft updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Id'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Edit an asset draft
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/compliance/eligibility/accounts:
    get:
      description: Retrieves a paginated list of compliance eligibility accounts associated with the given asset.
      operationId: get-compliance-eligibility-accounts
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Compliance eligibility accounts retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get compliance eligibility accounts
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/compliance/eligibility/accounts/add:
    post:
      description: Initiates an asynchronous process to add a compliance eligibility account to the given asset.
      operationId: start-add-compliance-eligibility-account
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddComplianceEligibilityAccountRequest'
        description: Add compliance eligibility account request data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Add compliance eligibility account
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/compliance/eligibility/accounts/remove:
    post:
      description: Initiates an asynchronous process to remove a compliance eligibility account from the given asset.
      operationId: start-remove-compliance-eligibility-account
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveComplianceEligibilityAccountRequest'
        description: Remove compliance eligibility account request data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Remove compliance eligibility account
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/compliance/eligibility/external-list:
    get:
      description: Retrieves a paginated list of compliance eligibility external lists associated with the given asset.
      operationId: get-asset-compliance-eligibility-external-lists
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Compliance eligibility external lists retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get compliance eligibility external lists
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/compliance/eligibility/external-list/add:
    post:
      description: Initiates an asynchronous process to add a compliance eligibility external list to the given asset.
      operationId: start-add-compliance-eligibility-external-list
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddComplianceEligibilityExternalListRequest'
        description: Add compliance eligibility external list request data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Add compliance eligibility external list
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/compliance/eligibility/external-list/remove:
    post:
      description: Initiates an asynchronous process to remove a compliance eligibility external list from the given asset.
      operationId: start-remove-compliance-eligibility-external-list
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveComplianceEligibilityExternalListRequest'
        description: Remove compliance eligibility external list request data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Remove compliance eligibility external list
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/create:
    post:
      description: Initiates an asynchronous process to create (deploy) an asset onto the DLT. The asset must already be in draft state.
      operationId: start-create-asset
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create an asset on the DLT
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/documents:
    get:
      description: Retrieves a paginated list of all documents associated with the given asset.
      operationId: get-documents
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Documents retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get documents
      tags:
      - Issuance
    post:
      description: Initiates an asynchronous process to upload a document to the given asset. Provide either fileData (base64) or fileUrl, not both.
      operationId: start-upload-document
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadDocumentRequest'
        description: Upload asset document process data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Upload a document
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/documents/{documentId}:
    get:
      description: Retrieves a specific document by its unique identifier and the associated asset ID.
      operationId: get-document
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique document identifier
        example: f4585827-0aa5-444c-a995-de62b5f5ac34
        in: path
        name: documentId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Document retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get document by ID
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/documents/{documentId}/delete:
    post:
      description: Initiates an asynchronous process to delete a document from the given asset.
      operationId: start-delete-document
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Unique document identifier
        example: f4585827-0aa5-444c-a995-de62b5f5ac34
        in: path
        name: documentId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Delete a document
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/issue:
    post:
      description: Transitions an asset from draft to issued state on the DLT. Only assets in a valid draft state can be issued.
      operationId: issue-asset
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Asset issued successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Id'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Issue an asset
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/pause:
    post:
      description: Initiates an asynchronous process to pause an asset on the DLT. Only active (non-paused) assets can be paused.
      operationId: start-pause-asset
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Pause an asset
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/reject:
    post:
      description: Rejects a pending asset, preventing it from being issued. Only assets in a valid draft or pending state can be rejected.
      operationId: reject-asset
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Asset rejected successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Id'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Reject an asset
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/roles:
    get:
      description: Retrieves all DLT role definitions associated with the given asset.
      operationId: get-asset-roles
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Asset roles retrieved successfully
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/DltRole'
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get asset roles
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/roles/accounts:
    get:
      description: Retrieves a paginated list of all account role associations for the given asset.
      operationId: get-asset-account-roles
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      - description: Filter by account IDs
        in: query
        name: accountIds
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Asset account roles retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get asset account roles
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/roles/update:
    post:
      description: Initiates an asynchronous process to grant or revoke DLT roles for an account on the given asset.
      operationId: start-manage-asset-roles
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManageAssetRolesRequest'
        description: Roles grant/revoke data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Manage asset roles
      tags:
      - Issuance
  /api/v1/issuance/assets/{assetId}/unpause:
    post:
      description: Initiates an asynchronous process to unpause an asset on the DLT. Only currently paused assets can be unpaused.
      operationId: start-unpause-asset
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Unpause an asset
      tags:
      - Issuance
  /api/v1/issuance/assets/dlt-account/{contractDltAccountId}:
    get:
      description: Retrieves the full details of a specific asset using its contract DLT account identifier.
      operationId: get-asset-by-contract-dlt-account-id
      parameters:
      - description: Contract DLT account identifier of the asset
        in: path
        name: contractDltAccountId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Asset retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Asset'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get asset by contract DLT account ID
      tags:
      - Issuance
  /api/v1/issuance/bonds:
    post:
      description: Creates a new basic bond in draft state. The bond is not yet issued on the DLT.
      operationId: draft-basic-bond
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftBasicBondRequest'
        description: Basic bond creation data
        required: true
      responses:
        '201':
          description: Basic bond draft created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Id'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Draft a new basic bond
      tags:
      - Issuance
  /api/v1/issuance/bonds/{bondId}:
    get:
      description: Retrieves the full details of a specific basic bond by its unique identifier.
      operationId: get-basic-bond
      parameters:
      - description: Unique bond identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: bondId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Basic bond retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasicBond'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get basic bond by ID
      tags:
      - Issuance
    put:
      description: Updates the fields of an existing basic bond in draft state. Only draft bonds can be edited.
      operationId: edit-basic-bond-draft
      parameters:
      - description: Unique bond identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: bondId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditBasicBondDraftRequest'
        description: Basic bond edition data
        required: true
      responses:
        '200':
          description: Basic bond draft updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Id'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Edit a basic bond draft
      tags:
      - Issuance
  /api/v1/issuance/holdings-assets/{holdingsAssetId}/remove:
    post:
      description: Initiates an asynchronous process to remove a holdings asset from a loans portfolio.
      operationId: start-remove-holdings-asset
      parameters:
      - description: Unique holdings asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: holdingsAssetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveHoldingsAssetRequest'
        description: Remove holdings asset process data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Remove a holdings asset
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios:
    post:
      description: Creates a new loans portfolio in draft state. The portfolio is not yet issued on the DLT.
      operationId: draft-loans-portfolio
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftLoansPortfolioRequest'
        description: Loans portfolio creation data
        required: true
      responses:
        '201':
          description: Loans portfolio draft created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Id'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Draft a new loans portfolio
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}:
    get:
      description: Retrieves the full details of a specific loans portfolio by its unique identifier.
      operationId: get-loans-portfolio
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Loans portfolio retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoansPortfolio'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get loans portfolio by ID
      tags:
      - Issuance
    put:
      description: Updates the fields of an existing loans portfolio in draft state. Only draft portfolios can be edited.
      operationId: edit-loans-portfolio-draft
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditLoansPortfolioDraftRequest'
        description: Loans portfolio edition data
        required: true
      responses:
        '200':
          description: Loans portfolio draft updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Id'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Edit a loans portfolio draft
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/average-duration:
    get:
      description: Retrieves the average duration (in days) of tokenized credits held in the given loans portfolio.
      operationId: get-holdings-asset-average-tokenized-credit-duration-by-asset-id
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Average duration retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getholdingsassetaveragetokenizedcreditdurationbyassetid.Response'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get average tokenized credit duration by asset ID
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/distributions-payable:
    get:
      description: Returns the amount of income and capital distributions payable in a loans portfolio.
      operationId: get-distributions-payable
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Distributions payable retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributionsPayable'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get distributions payable
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/geographical-exposure-percentage:
    get:
      description: Returns the percentage breakdown of loans by geographical exposure in a loans portfolio.
      operationId: get-geographical-exposure-percentage
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Geographical exposure percentages retrieved successfully
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/GeographicalExposure'
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get geographical exposure percentage
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/holdings-assets:
    get:
      description: Retrieves a paginated list of holdings assets within the given loans portfolio.
      operationId: get-holdings-assets
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Holdings assets retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get holdings assets
      tags:
      - Issuance
    post:
      description: Initiates an asynchronous process to add a holdings asset to the given loans portfolio.
      operationId: start-add-holdings-asset
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddHoldingsAssetRequest'
        description: Add holdings asset process data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Add holdings asset to loans portfolio
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/holdings-assets/count:
    get:
      description: Retrieves the count of holdings assets within the given loans portfolio, optionally filtered by asset type.
      operationId: get-holdings-asset-count-by-asset-id-and-asset-type
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      - description: Asset type filter. If empty, counts all asset types
        in: query
        name: assetType
        schema:
          type: string
          enum:
          - LOAN
          - CASH
      responses:
        '200':
          description: Holdings asset count retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getholdingsassetcountbyassetidandassettype.Response'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get holdings asset count by asset ID and asset type
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/holdings-assets/ownership:
    get:
      description: Retrieves a paginated list of ownership positions for holdings assets within the given loans portfolio.
      operationId: get-holdings-asset-ownership
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      - description: Asset type filter. If empty, returns all asset types
        in: query
        name: assetType
        schema:
          type: string
          enum:
          - LOAN
          - CASH
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Holdings asset ownership retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get holdings asset ownership
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/holdings-assets/ownership-valuation:
    get:
      description: Retrieves a paginated list of ownership valuation positions for holdings assets within the given loans portfolio.
      operationId: get-holdings-asset-ownership-valuation
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      - description: Asset type filter. If empty, returns all asset types
        in: query
        name: assetType
        schema:
          type: string
          enum:
          - LOAN
          - CASH
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Holdings asset ownership valuation retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get holdings asset ownership valuation
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/secured-tokenized-credits-percentage:
    get:
      description: Returns the percentage of secured tokenized credits within the given loans portfolio.
      operationId: get-secured-tokenized-credits-percentage
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Secured tokenized credits percentage retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getsecuredtokenizedcreditspercentage.Response'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get secured tokenized credits percentage
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/tokenized-credit-performance/count:
    get:
      description: Retrieves the count of tokenized credits within the given loans portfolio filtered by their performance status.
      operationId: get-tokenized-credit-count-by-asset-id-and-tokenized-credit-performance-status
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      - description: Performance status filter
        in: query
        name: performanceStatus
        required: true
        schema:
          type: string
          enum:
          - PERFORMING
          - NON_PERFORMING
          - DEFAULT
      responses:
        '200':
          description: Tokenized credit count retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gettokenizedcreditcountbyassetidandtokenizedcreditperformancestatus.Response'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get tokenized credit count by asset ID and performance status
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/tokenized-credit-performance/percentage:
    get:
      description: Returns the percentage of tokenized credits in a loans portfolio that match a given performance status.
      operationId: get-tokenized-credit-performance-percentage
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      - description: Performance status filter
        in: query
        name: performanceStatus
        required: true
        schema:
          type: string
          enum:
          - PERFORMING
          - NON_PERFORMING
          - DEFAULT
      responses:
        '200':
          description: Tokenized credit performance percentage retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gettokenizedcreditperformancepercentage.Response'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get tokenized credit performance percentage
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/tokenized-credits/outstanding-balance:
    get:
      description: Retrieves the total outstanding balance of all tokenized credits within the given loans portfolio.
      operationId: get-total-tokenized-credit-outstanding-balance
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Outstanding balance retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutstandingBalance'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get total tokenized credit outstanding balance
      tags:
      - Issuance
  /api/v1/issuance/loans-portfolios/{loansPortfolioId}/total-nav:
    get:
      description: Retrieves the total Net Asset Value (NAV) of the given loans portfolio.
      operationId: get-total-nav
      parameters:
      - description: Unique loans portfolio identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: loansPortfolioId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Total NAV retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TotalNav'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get loans portfolio total NAV
      tags:
      - Issuance
  /api/v1/issuance/process/{processId}:
    get:
      description: Retrieve a process by its ID
      parameters:
      - description: Process ID
        in: path
        name: processId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get process by id
      tags:
      - Process
  /api/v1/issuance/tokenized-credits:
    post:
      description: Creates a new tokenized credit in draft state. The credit is not yet issued on the DLT.
      operationId: draft-tokenized-credit
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftTokenizedCreditRequest'
        description: Tokenized credit creation data
        required: true
      responses:
        '201':
          description: Tokenized credit draft created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Id'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Draft a new tokenized credit
      tags:
      - Issuance
  /api/v1/issuance/tokenized-credits/{tokenizedCreditId}:
    get:
      description: Retrieves the full details of a specific tokenized credit by its unique identifier.
      operationId: get-tokenized-credit
      parameters:
      - description: Unique tokenized credit identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: tokenizedCreditId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Tokenized credit retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenizedCredit'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get tokenized credit by ID
      tags:
      - Issuance
    put:
      description: Updates the fields of an existing tokenized credit. May return synchronously (200) or initiate an async process (202) depending on state.
      operationId: edit-tokenized-credit
      parameters:
      - description: Unique tokenized credit identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: tokenizedCreditId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditTokenizedCreditRequest'
        description: Tokenized credit edition data
        required: true
      responses:
        '200':
          description: Tokenized credit updated synchronously
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Edit'
        '202':
          description: Tokenized credit update process started asynchronously
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Edit a tokenized credit
      tags:
      - Issuance
  /api/v1/issuancev2/asset-class:
    post:
      description: Creates a new asset class in draft state.
      operationId: draft-asset-class
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DraftAssetClassRequest'
        description: Asset class creation data
        required: true
      responses:
        '201':
          description: Asset class draft created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssuanceV2IdModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Draft a new asset class
      tags:
      - IssuanceV2
  /api/v1/issuancev2/asset-class/{id}:
    put:
      description: Updates an existing asset class in draft state.
      operationId: edit-asset-class-draft
      parameters:
      - description: Asset class UUID
        in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditAssetClassDraftRequest'
        description: Asset class update data
        required: true
      responses:
        '200':
          description: Asset class draft updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssuanceV2IdModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Edit an asset class draft
      tags:
      - IssuanceV2
  /api/v1/issuancev2/asset-classes:
    get:
      description: Retrieves a paginated list of all asset classes, with optional filtering by status and token standard.
      operationId: list-asset-classes
      parameters:
      - description: Filter by asset class status
        in: query
        name: status
        schema:
          type: string
      - description: Filter by token standard
        in: query
        name: tokenStandard
        schema:
          type: string
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: AssetClasses retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/AssetClass'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List all asset classes
      tags:
      - IssuanceV2
  /api/v1/issuancev2/asset-classes/{assetClassId}:
    delete:
      description: Deletes an asset class that is in DRAFT status (logical delete).
      operationId: delete-draft-asset-class
      parameters:
      - description: Asset Class identifier
        in: path
        name: assetClassId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Asset class draft deleted successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/DeleteDraftAssetClassResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Delete a draft asset class
      tags:
      - IssuanceV2
    get:
      description: Retrieves a specific asset class by its unique identifier.
      operationId: get-asset-class
      parameters:
      - description: Asset Class identifier
        example: b1b2c3d4-1234-5678-9abc-def012346678
        in: path
        name: assetClassId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: AssetClass retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetClass'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get an asset class by ID
      tags:
      - IssuanceV2
  /api/v1/issuancev2/assets/{assetId}/compliance/eligibility/accounts/add:
    post:
      description: Initiates an asynchronous process to add a compliance eligibility account to the given asset.
      operationId: start-add-compliance-eligibility-account-v2
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartAddComplianceEligibilityAccountRequest'
        description: Add compliance eligibility account request data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start add compliance eligibility account
      tags:
      - IssuanceV2
  /api/v1/issuancev2/assets/{assetId}/compliance/eligibility/external-list/add:
    post:
      description: Initiates an asynchronous process to add a compliance eligibility external list to the given asset.
      operationId: issuancev2-start-add-compliance-eligibility-external-list
      parameters:
      - description: Unique asset identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: assetId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssuanceV2AddComplianceEligibilityExternalListRequest'
        description: Add compliance eligibility external list request data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Add compliance eligibility external list
      tags:
      - IssuanceV2
  /api/v1/issuancev2/capabilities:
    get:
      description: Retrieves a paginated list of all capabilities.
      operationId: list-capabilities
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: size
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Capabilities retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/CapabilityItem'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List all capabilities
      tags:
      - IssuanceV2
  /api/v1/issuancev2/capabilities/{capabilityId}:
    get:
      description: Retrieves a specific capability by its unique identifier, including all versions, network support and configuration schema.
      operationId: get-capability
      parameters:
      - description: Capability identifier
        example: 10000000-0000-0000-0000-000000000001
        in: path
        name: capabilityId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Capability retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapabilityDetail'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get a capability by ID
      tags:
      - IssuanceV2
  /api/v1/license/activate:
    post:
      description: Activates the product license using the provided license key.
      operationId: activate-license
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActivateLicenseRequest'
        description: License activation data
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Activate license
      tags:
      - License
  /api/v1/license/status:
    get:
      description: Retrieves the current installed license and its activation status.
      operationId: get-license-status
      responses:
        '200':
          description: License status retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseStatusResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get license status
      tags:
      - License
  /api/v1/login:
    post:
      description: Authenticates a user with email and password and returns a JWT token.
      operationId: login
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
        description: User credentials
        required: true
      responses:
        '200':
          description: Authentication successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Login
      tags:
      - Authentication
  /api/v1/primary/allocations:
    get:
      description: Retrieve a paginated list of all allocations.
      operationId: list-allocations
      parameters:
      - description: Account ID to filter by
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: query
        name: accountId
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Allocations retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/AllocationModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List allocations
      tags:
      - Primary Market
  /api/v1/primary/allocations/{allocationId}/cancel:
    post:
      description: Initiates the cancellation process for a specific allocation.
      operationId: start-cancel-allocation
      parameters:
      - description: Allocation identifier
        example: e5f6a7b8-5678-9abc-def0-123456789012
        in: path
        name: allocationId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelAllocationProcessRequest'
        description: Cancel allocation process data
        required: true
      responses:
        '202':
          description: Cancel allocation process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start cancel allocation process
      tags:
      - Primary Market
  /api/v1/primary/allocations/{allocationId}/settlement:
    post:
      description: Initiates the settlement process for a specific allocation.
      operationId: start-settle-allocation
      parameters:
      - description: Allocation identifier
        example: e5f6a7b8-5678-9abc-def0-123456789012
        in: path
        name: allocationId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        $ref: '#/components/requestBodies/SettleAllocationProcessRequest'
      responses:
        '202':
          description: Settle allocation process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start settle allocation process
      tags:
      - Primary Market
  /api/v1/primary/instruments/{instrumentId}/offerings:
    get:
      description: Retrieve a paginated list of all offerings for a specific instrument.
      operationId: list-offerings
      parameters:
      - description: Instrument identifier
        example: b2c3d4e5-2345-6789-abcd-ef0123456789
        in: path
        name: instrumentId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Offerings retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/OfferingModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List offerings by instrument
      tags:
      - Primary Market
    post:
      description: Initiates the process to create a new offering for an instrument.
      operationId: start-create-offering
      parameters:
      - description: Instrument identifier
        example: b2c3d4e5-2345-6789-abcd-ef0123456789
        in: path
        name: instrumentId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOfferingProcessRequest'
        description: Create offering process data
        required: true
      responses:
        '202':
          description: Create offering process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start create offering process
      tags:
      - Primary Market
  /api/v1/primary/instruments/{instrumentId}/offerings/{offeringId}:
    get:
      description: Retrieve a specific offering identified by instrument ID and offering ID.
      operationId: get-offering
      parameters:
      - description: Instrument identifier
        example: b2c3d4e5-2345-6789-abcd-ef0123456789
        in: path
        name: instrumentId
        required: true
        schema:
          type: string
          format: uuid
      - description: Offering identifier
        example: c3d4e5f6-3456-789a-bcde-f01234567890
        in: path
        name: offeringId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Offering retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferingModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get offering by instrument and offering ID
      tags:
      - Primary Market
  /api/v1/primary/instruments/{instrumentId}/offerings/{offeringId}/allocations:
    post:
      description: Initiates the allocation process within an offering.
      operationId: start-allocate
      parameters:
      - description: Instrument identifier
        example: c3d4e5f6-3456-789a-bcde-f01234567890
        in: path
        name: instrumentId
        required: true
        schema:
          type: string
          format: uuid
      - description: Offering identifier
        example: c3d4e5f6-3456-789a-bcde-f01234567890
        in: path
        name: offeringId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AllocationProcessRequest'
        description: Allocation process data
        required: true
      responses:
        '202':
          description: Allocate process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start allocate process
      tags:
      - Primary Market
  /api/v1/primary/instruments/{instrumentId}/offerings/{offeringId}/subscriptions:
    get:
      description: Retrieve a paginated list of all subscriptions for a specific instrument and offering.
      operationId: list-subscriptions-by-instrument-and-offering
      parameters:
      - description: Instrument identifier
        example: b2c3d4e5-2345-6789-abcd-ef0123456789
        in: path
        name: instrumentId
        required: true
        schema:
          type: string
          format: uuid
      - description: Offering identifier
        example: c3d4e5f6-3456-789a-bcde-f01234567890
        in: path
        name: offeringId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Subscriptions retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/SubscriptionModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List subscriptions by instrument and offering
      tags:
      - Primary Market
    post:
      description: Initiates the process to add a subscription to an offering for an instrument.
      operationId: start-add-subscription
      parameters:
      - description: Instrument identifier
        example: b2c3d4e5-2345-6789-abcd-ef0123456789
        in: path
        name: instrumentId
        required: true
        schema:
          type: string
          format: uuid
      - description: Offering identifier
        example: c3d4e5f6-3456-789a-bcde-f01234567890
        in: path
        name: offeringId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddSubscriptionProcessRequest'
        description: Add subscription process data
        required: true
      responses:
        '202':
          description: Subscription process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start add subscription process
      tags:
      - Primary Market
  /api/v1/primary/instruments/{instrumentId}/offerings/{offeringId}/subscriptions/{subscriptionId}:
    get:
      description: Retrieve a specific subscription identified by instrument ID, offering ID, and subscription ID.
      operationId: get-subscription
      parameters:
      - description: Instrument identifier
        example: b2c3d4e5-2345-6789-abcd-ef0123456789
        in: path
        name: instrumentId
        required: true
        schema:
          type: string
          format: uuid
      - description: Offering identifier
        example: c3d4e5f6-3456-789a-bcde-f01234567890
        in: path
        name: offeringId
        required: true
        schema:
          type: string
          format: uuid
      - description: Subscription identifier
        example: d4e5f6a7-4567-89ab-cdef-012345678901
        in: path
        name: subscriptionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Subscription retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get subscription by instrument, offering, and subscription ID
      tags:
      - Primary Market
  /api/v1/primary/instruments/{instrumentId}/offerings/{offeringId}/subscriptions/{subscriptionId}/cancel:
    post:
      description: Initiates the cancellation process for a specific subscription within an offering.
      operationId: start-cancel-subscription
      parameters:
      - description: Instrument identifier
        example: b2c3d4e5-2345-6789-abcd-ef0123456789
        in: path
        name: instrumentId
        required: true
        schema:
          type: string
          format: uuid
      - description: Offering identifier
        example: c3d4e5f6-3456-789a-bcde-f01234567890
        in: path
        name: offeringId
        required: true
        schema:
          type: string
          format: uuid
      - description: Subscription identifier
        example: d4e5f6a7-4567-89ab-cdef-012345678901
        in: path
        name: subscriptionId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelSubscriptionProcessRequest'
        description: Cancel subscription process data
        required: true
      responses:
        '202':
          description: Cancel subscription process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start cancel subscription process
      tags:
      - Primary Market
  /api/v1/primary/markets:
    get:
      description: Retrieve a paginated list of all primary markets, with optional filtering by origin.
      operationId: list-primary-markets
      parameters:
      - description: Filter by market origin
        in: query
        name: origin
        schema:
          type: string
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Primary markets retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/PrimaryMarketModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List primary markets
      tags:
      - Primary Market
    post:
      description: Initiates the process to create a new primary market.
      operationId: start-create-primary-market
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePrimaryMarketProcessRequest'
        description: Create primary market process data
        required: true
      responses:
        '202':
          description: Create primary market process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start create primary market process
      tags:
      - Primary Market
  /api/v1/primary/markets/{primaryMarketId}:
    get:
      description: Retrieve a specific primary market by its unique identifier.
      operationId: get-primary-market
      parameters:
      - description: Primary market identifier
        example: a1b2c3d4-1234-5678-9abc-def012345678
        in: path
        name: primaryMarketId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Primary market retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrimaryMarketModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get primary market by ID
      tags:
      - Primary Market
  /api/v1/primary/markets/{primaryMarketId}/instruments:
    get:
      description: Retrieve a paginated list of all instruments belonging to a primary market.
      operationId: list-instruments
      parameters:
      - description: Primary market identifier
        example: a1b2c3d4-1234-5678-9abc-def012345678
        in: path
        name: primaryMarketId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Instruments retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/InstrumentModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List instruments by primary market
      tags:
      - Primary Market
    post:
      description: Initiates the process to list a new instrument in a primary market.
      operationId: start-list-instrument
      parameters:
      - description: Primary market identifier
        example: a1b2c3d4-1234-5678-9abc-def012345678
        in: path
        name: primaryMarketId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListInstrumentProcessRequest'
        description: List instrument process data
        required: true
      responses:
        '202':
          description: List instrument process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start list instrument process
      tags:
      - Primary Market
  /api/v1/primary/markets/{primaryMarketId}/instruments/{instrumentId}:
    get:
      description: Retrieve a specific instrument by primary market ID and instrument ID.
      operationId: get-instrument
      parameters:
      - description: Primary market identifier
        example: a1b2c3d4-1234-5678-9abc-def012345678
        in: path
        name: primaryMarketId
        required: true
        schema:
          type: string
          format: uuid
      - description: Instrument identifier
        example: b2c3d4e5-2345-6789-abcd-ef0123456789
        in: path
        name: instrumentId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Instrument retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstrumentModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get instrument by primary market and instrument ID
      tags:
      - Primary Market
  /api/v1/primary/offerings/{offeringId}/allocations:
    get:
      description: Retrieve a paginated list of all allocations for a specific offering.
      operationId: list-allocations-by-offering
      parameters:
      - description: Offering identifier
        example: c3d4e5f6-3456-789a-bcde-f01234567890
        in: path
        name: offeringId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Allocations retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/AllocationModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List allocations by offering
      tags:
      - Primary Market
  /api/v1/primary/offerings/{offeringId}/allocations/settlement:
    post:
      description: Initiates the settlement process for all allocations in created for an offering.
      operationId: start-settle-allocations
      parameters:
      - description: Offering identifier
        example: e5f6a7b8-5678-9abc-def0-123456789012
        in: path
        name: offeringId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        $ref: '#/components/requestBodies/SettleAllocationProcessRequest'
      responses:
        '202':
          description: Settle allocations process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start settle allocations process in bulk
      tags:
      - Primary Market
  /api/v1/primary/offerings/{offeringId}/close:
    post:
      description: Initiates the process to close an offering, preventing new subscriptions.
      operationId: start-close-offering
      parameters:
      - description: Offering identifier
        example: c3d4e5f6-3456-789a-bcde-f01234567890
        in: path
        name: offeringId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloseOfferingProcessRequest'
        description: Close offering process data
        required: true
      responses:
        '202':
          description: Close offering process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start close offering process
      tags:
      - Primary Market
  /api/v1/primary/offerings/{offeringId}/subscriptions/{subscriptionId}/allocations:
    get:
      description: Retrieve a specific allocation identified by offering ID and subscription ID.
      operationId: get-allocation
      parameters:
      - description: Offering identifier
        example: c3d4e5f6-3456-789a-bcde-f01234567890
        in: path
        name: offeringId
        required: true
        schema:
          type: string
          format: uuid
      - description: Subscription identifier
        example: d4e5f6a7-4567-89ab-cdef-012345678901
        in: path
        name: subscriptionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Allocation retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AllocationModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get allocation by offering and subscription
      tags:
      - Primary Market
  /api/v1/primary/subscriptions:
    get:
      description: Retrieve a paginated list of all subscriptions.
      operationId: list-subscriptions
      parameters:
      - description: Account identifier
        example: b2c3d4e5-2345-6789-abcd-ef0123456789
        in: query
        name: accountId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Any sortable field (e.g., createdAt). Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Subscriptions retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/SubscriptionModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: List subscriptions
      tags:
      - Primary Market
  /api/v1/primarymarket/process/{processId}:
    get:
      description: Retrieve a process by its ID
      parameters:
      - description: Process ID
        in: path
        name: processId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get process by id
      tags:
      - Process
  /api/v1/registry/approvals:
    post:
      description: Initiates the process to approve a spender to spend tokens on behalf of the signer.
      operationId: start-approval
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartApprovalProcessRequest'
        description: Approval process data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Start an approval process
      tags:
      - Registry
  /api/v1/registry/controller-burn:
    post:
      description: Initiates the process to burn (remove) an asset position from an account.
      operationId: burn
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BurnProcessRequest'
        description: Burn process data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Burn (remove) an asset position
      tags:
      - Registry
  /api/v1/registry/controller-hold:
    post:
      description: Initiates the process to create a controller hold on an asset position.
      operationId: controller-create-hold
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateControllerHoldRequest'
        description: Create controller hold request data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create a controller hold
      tags:
      - Registry
  /api/v1/registry/controller-mint:
    post:
      description: Initiates the process to mint (create) a new asset position for an account.
      operationId: mint
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MintProcessRequest'
        description: Mint process data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Mint (create) an asset position
      tags:
      - Registry
  /api/v1/registry/controller-transfer:
    post:
      description: Initiates an operator-controlled transfer of an asset position between two accounts.
      operationId: controller-transfer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ControllerTransferProcessRequest'
        description: Controller transfer process data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Controller transfer an asset position
      tags:
      - Registry
  /api/v1/registry/historical-position-records:
    get:
      description: Retrieves a paginated list of historical position records, optionally filtered by date range, account, or asset.
      operationId: get-historical-position-records
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - description: Filter by start date
        example: 2026-01-01 00:00:00+00:00
        in: query
        name: dateFrom
        schema:
          type: string
          format: date-time
      - description: Filter by end date
        example: 2026-12-31 23:59:59+00:00
        in: query
        name: dateTo
        schema:
          type: string
          format: date-time
      - description: Filter by account ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: query
        name: accountId
        schema:
          type: string
          format: uuid
      - description: Filter by asset ID
        example: f4585827-0aa5-444c-a995-de62b5f5ac34
        in: query
        name: assetId
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Historical position records retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/HistoricalPositionRecord'
                      type: array
                  type: object
              example:
                data:
                - id: hr111111-1111-1111-1111-111111111111
                  accountId: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  assetId: d4e5f6a7-89ab-4cde-b123-456789abcdef
                  allocationAmount: '50'
                  heldAmount: '0'
                  since: '2026-05-01T00:00:00Z'
                  until: '2026-05-15T00:00:00Z'
                page:
                  total: 1
                  pageSize: 100
                  offset: 0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get historical position records
      tags:
      - Registry
  /api/v1/registry/hold:
    post:
      description: Initiates the process to create a hold on an asset position.
      operationId: create-hold
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateHoldRequest'
        description: Create hold request data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create a hold
      tags:
      - Registry
  /api/v1/registry/holds:
    get:
      description: Retrieves a paginated list of holds.
      operationId: get-holds
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - description: Filter by asset ID
        example: f4585827-0aa5-444c-a995-de62b5f5ac34
        in: query
        name: assetId
        schema:
          type: string
          format: uuid
      - description: Filter by from account ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: query
        name: fromAccountId
        schema:
          type: string
          format: uuid
      - description: Filter by to account ID
        example: 4613545c-830b-4662-a12e-9252f5a2a40e
        in: query
        name: toAccountId
        schema:
          type: string
          format: uuid
      - description: Filter by escrow account ID
        example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        in: query
        name: escrowAccountId
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Holds retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/Hold'
                      type: array
                  type: object
              example:
                data:
                - id: h1111111-1111-1111-1111-111111111111
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  fromAccountId: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccountId: 4613545c-830b-4662-a12e-9252f5a2a40e
                  status: ACTIVE
                  currentAmount: '1.2'
                  initialAmount: '1.2'
                  createdAt: '2026-06-20T10:00:00Z'
                  expiration: '2026-07-20T00:00:00Z'
                - id: h2222222-2222-2222-2222-222222222222
                  assetId: d4e5f6a7-89ab-4cde-b123-456789abcdef
                  fromAccountId: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccountId: 4613545c-830b-4662-a12e-9252f5a2a40e
                  status: ACTIVE
                  currentAmount: '0.647'
                  initialAmount: '0.647'
                  createdAt: '2026-06-22T14:30:00Z'
                  expiration: '2026-07-22T00:00:00Z'
                - id: h3333333-3333-3333-3333-333333333333
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  fromAccountId: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccountId: 4613545c-830b-4662-a12e-9252f5a2a40e
                  status: CLOSED
                  currentAmount: '0'
                  initialAmount: '2'
                  createdAt: '2026-04-01T10:00:00Z'
                  expiration: '2026-05-01T00:00:00Z'
                page:
                  total: 3
                  pageSize: 100
                  offset: 0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get holds
      tags:
      - Registry
  /api/v1/registry/holds/{holdId}:
    get:
      description: Retrieves a specific hold and its resolution history by ID.
      operationId: get-hold
      parameters:
      - description: Unique hold identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: holdId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Hold retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Hold'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get a hold by ID
      tags:
      - Registry
  /api/v1/registry/holds/{holdId}/execute:
    post:
      description: Initiates the process to execute a hold, transferring the held amount to the target account.
      operationId: execute-hold
      parameters:
      - description: Unique hold identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: holdId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecuteHoldRequest'
        description: Execute hold request data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Execute a hold
      tags:
      - Registry
  /api/v1/registry/holds/{holdId}/reclaim:
    post:
      description: Initiates the process to reclaim an active hold, returning the held amount to the originating account.
      operationId: reclaim-hold
      parameters:
      - description: Unique hold identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: holdId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReclaimHoldRequest'
        description: Reclaim hold request data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Reclaim a hold
      tags:
      - Registry
  /api/v1/registry/holds/{holdId}/release:
    post:
      description: Initiates the process to release a hold, returning the specified amount to the originating account.
      operationId: release-hold
      parameters:
      - description: Unique hold identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: holdId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReleaseHoldRequest'
        description: Release hold request data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Release a hold
      tags:
      - Registry
  /api/v1/registry/positions:
    get:
      description: Retrieves a paginated list of current positions, optionally filtered by asset or account.
      operationId: get-positions
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - description: Filter by asset ID
        example: f4585827-0aa5-444c-a995-de62b5f5ac34
        in: query
        name: assetId
        schema:
          type: string
          format: uuid
      - description: Filter by account ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: query
        name: accountId
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Positions retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/PositionModel'
                      type: array
                  type: object
              example:
                data:
                - id: a1111111-1111-1111-1111-111111111111
                  accountId: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  amount: '854'
                  heldAmount: '0'
                - id: a2222222-2222-2222-2222-222222222222
                  accountId: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  assetId: d4e5f6a7-89ab-4cde-b123-456789abcdef
                  amount: '120'
                  heldAmount: '0'
                - id: a3333333-3333-3333-3333-333333333333
                  accountId: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  assetId: e5f6a7b8-9abc-4def-c234-56789abcdef0
                  amount: '45'
                  heldAmount: '0'
                page:
                  total: 3
                  pageSize: 100
                  offset: 0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get current positions
      tags:
      - Registry
  /api/v1/registry/process/{processId}:
    get:
      description: Retrieve a process by its ID
      parameters:
      - description: Process ID
        in: path
        name: processId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get process by id
      tags:
      - Process
  /api/v1/registry/transactions:
    get:
      description: Retrieves a paginated list of transactions, optionally filtered by account or asset.
      operationId: get-transactions
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: 'Field used for sorting. Default: createdAt'
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: 'Sort direction (asc or desc). Default: desc'
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - description: Filter by account ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: query
        name: accountId
        schema:
          type: string
          format: uuid
      - description: Filter by asset ID
        example: f4585827-0aa5-444c-a995-de62b5f5ac34
        in: query
        name: assetId
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Transactions retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/Transaction'
                      type: array
                  type: object
              example:
                data:
                - id: b2222222-2222-2222-2222-222222222222
                  amount: '854'
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  fromAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  toAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  type: MINT
                  creationDate: '2026-03-01T10:00:00Z'
                  executionTime: '2026-03-01T10:00:05Z'
                  txHash: 0xdevseed0000000000000000000000000000000001
                - id: b3000001-0000-4000-8000-000000000001
                  amount: '250'
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  fromAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  type: TRANSFER
                  creationDate: '2026-06-25T09:55:00Z'
                  executionTime: '2026-06-25T10:00:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000002
                - id: b3000001-0000-4000-8000-000000000002
                  amount: '179'
                  assetId: d4e5f6a7-89ab-4cde-b123-456789abcdef
                  fromAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  toAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  type: TRANSFER
                  creationDate: '2026-06-25T07:50:00Z'
                  executionTime: '2026-06-25T08:00:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000003
                - id: b3000001-0000-4000-8000-000000000003
                  amount: '200'
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  fromAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  type: TRANSFER
                  creationDate: '2026-06-24T10:50:00Z'
                  executionTime: '2026-06-24T11:00:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000004
                - id: b3000001-0000-4000-8000-000000000004
                  amount: '181.33'
                  assetId: e5f6a7b8-9abc-4def-c234-56789abcdef0
                  fromAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  toAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  type: TRANSFER
                  creationDate: '2026-06-24T07:50:00Z'
                  executionTime: '2026-06-24T08:00:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000005
                - id: b3000001-0000-4000-8000-000000000005
                  amount: '12'
                  assetId: d4e5f6a7-89ab-4cde-b123-456789abcdef
                  fromAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  type: TRANSFER
                  creationDate: '2026-06-20T14:00:00Z'
                  executionTime: '2026-06-20T14:05:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000006
                - id: b3000001-0000-4000-8000-000000000006
                  amount: '8'
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  fromAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  toAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  type: TRANSFER
                  creationDate: '2026-06-18T11:00:00Z'
                  executionTime: '2026-06-18T11:05:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000007
                - id: b3000001-0000-4000-8000-000000000007
                  amount: '5'
                  assetId: e5f6a7b8-9abc-4def-c234-56789abcdef0
                  fromAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  type: TRANSFER_FROM
                  creationDate: '2026-06-15T16:00:00Z'
                  executionTime: '2026-06-15T16:05:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000008
                - id: b3000001-0000-4000-8000-000000000008
                  amount: '15'
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  fromAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  toAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  type: HOLD_EXECUTE
                  creationDate: '2026-06-10T09:00:00Z'
                  executionTime: '2026-06-10T09:10:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000009
                - id: b3000001-0000-4000-8000-000000000009
                  amount: '20'
                  assetId: d4e5f6a7-89ab-4cde-b123-456789abcdef
                  fromAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  type: TRANSFER
                  creationDate: '2026-06-05T13:00:00Z'
                  executionTime: '2026-06-05T13:05:00Z'
                  txHash: 0xdevseed000000000000000000000000000000000a
                - id: b3000001-0000-4000-8000-00000000000a
                  amount: '10'
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  fromAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  toAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  type: TRANSFER
                  creationDate: '2026-05-28T10:00:00Z'
                  executionTime: '2026-05-28T10:05:00Z'
                  txHash: 0xdevseed000000000000000000000000000000000b
                - id: b3000001-0000-4000-8000-00000000000b
                  amount: '6'
                  assetId: e5f6a7b8-9abc-4def-c234-56789abcdef0
                  fromAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  type: TRANSFER
                  creationDate: '2026-05-25T15:00:00Z'
                  executionTime: '2026-05-25T15:05:00Z'
                  txHash: 0xdevseed000000000000000000000000000000000c
                - id: b3000001-0000-4000-8000-00000000000c
                  amount: '9'
                  assetId: d4e5f6a7-89ab-4cde-b123-456789abcdef
                  fromAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  toAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  type: TRANSFER
                  creationDate: '2026-05-20T12:00:00Z'
                  executionTime: '2026-05-20T12:05:00Z'
                  txHash: 0xdevseed000000000000000000000000000000000d
                - id: b3000001-0000-4000-8000-00000000000d
                  amount: '7'
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  fromAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  type: TRANSFER
                  creationDate: '2026-05-12T08:00:00Z'
                  executionTime: '2026-05-12T08:05:00Z'
                  txHash: 0xdevseed000000000000000000000000000000000e
                - id: b3000001-0000-4000-8000-00000000000e
                  amount: '11'
                  assetId: e5f6a7b8-9abc-4def-c234-56789abcdef0
                  fromAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  toAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  type: TRANSFER
                  creationDate: '2026-05-08T17:00:00Z'
                  executionTime: '2026-05-08T17:05:00Z'
                  txHash: 0xdevseed000000000000000000000000000000000f
                - id: b3000001-0000-4000-8000-00000000000f
                  amount: '4'
                  assetId: d4e5f6a7-89ab-4cde-b123-456789abcdef
                  fromAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  type: TRANSFER
                  creationDate: '2026-04-22T10:00:00Z'
                  executionTime: '2026-04-22T10:05:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000010
                - id: b3000001-0000-4000-8000-000000000010
                  amount: '14'
                  assetId: f4585827-0aa5-444c-a995-de62b5f5ac34
                  fromAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  toAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  type: TRANSFER
                  creationDate: '2026-04-10T09:00:00Z'
                  executionTime: '2026-04-10T09:05:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000011
                - id: b3000001-0000-4000-8000-000000000011
                  amount: '3'
                  assetId: e5f6a7b8-9abc-4def-c234-56789abcdef0
                  fromAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  toAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  type: HOLD_EXECUTE
                  creationDate: '2026-03-20T14:00:00Z'
                  executionTime: '2026-03-20T14:05:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000012
                - id: b3000001-0000-4000-8000-000000000012
                  amount: '18'
                  assetId: d4e5f6a7-89ab-4cde-b123-456789abcdef
                  fromAccount: 4613545c-830b-4662-a12e-9252f5a2a40e
                  toAccount: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
                  type: TRANSFER
                  creationDate: '2026-03-05T11:00:00Z'
                  executionTime: '2026-03-05T11:05:00Z'
                  txHash: 0xdevseed0000000000000000000000000000000013
                page:
                  total: 19
                  pageSize: 100
                  offset: 0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get all transactions
      tags:
      - Registry
  /api/v1/registry/transactions/{transactionId}:
    get:
      description: Retrieves a specific transaction by its ID.
      operationId: get-transaction
      parameters:
      - description: Unique transaction identifier
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: transactionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Transaction retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get a transaction by ID
      tags:
      - Registry
  /api/v1/registry/transfer:
    post:
      description: Initiates the process to transfer an asset position between two accounts.
      operationId: transfer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferProcessRequest'
        description: Transfer process data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Transfer an asset position
      tags:
      - Registry
  /api/v1/registry/withdraw:
    post:
      description: Initiates the process to withdraw an asset position from a DLT account to a destination account.
      operationId: withdraw
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WithdrawProcessRequest'
        description: Withdraw process data
        required: true
      responses:
        '202':
          description: Process initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Withdraw an asset position
      tags:
      - Registry
  /api/v1/settlement/process/{processId}:
    get:
      description: Retrieve a process by its ID
      parameters:
      - description: Process ID
        in: path
        name: processId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get process by id
      tags:
      - Process
  /api/v1/settlement/settlement-hubs:
    get:
      description: Retrieves a paginated list of all settlement hubs. Supports filtering by origin.
      operationId: get-settlement-hubs
      parameters:
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: Field used for sorting
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: Sort direction
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - description: Filter by origin
        in: query
        name: origin
        schema:
          type: string
          enum:
          - INTERNAL
          - EXTERNAL
      responses:
        '200':
          description: Settlement hubs retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/SettlementHubModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get settlement hubs
      tags:
      - Settlement Hub
    post:
      description: Initiates the async process to create a new settlement hub.
      operationId: create-settlement-hub
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSettlementHubProcessRequest'
        description: Create Settlement Hub process data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create settlement hub
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}:
    get:
      description: Retrieves a specific settlement hub by its unique identifier.
      operationId: get-settlement-hub
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Settlement hub retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementHubModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get settlement hub
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/assets:
    get:
      description: Retrieves a paginated list of assets assigned to a specific settlement hub.
      operationId: get-settlement-hub-assets
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: Field used for sorting
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: Sort direction
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Settlement hub assets retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/SettlementHubAssetModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get settlement hub assets
      tags:
      - Settlement Hub
    post:
      description: Initiates the async process to assign an asset to a settlement hub.
      operationId: assign-asset-to-settlement-hub
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignAssetToSettlementHubProcessRequest'
        description: Assign Asset to Settlement Hub process data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Assign asset to settlement hub
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/calendar/{calendarType}/status/{date}:
    get:
      description: Retrieves the open/closed status and time frames for a settlement hub calendar on a specific date.
      operationId: get-calendar-status
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Calendar type
        in: path
        name: calendarType
        required: true
        schema:
          type: string
          enum:
          - settlementWindow
          - operatingWindow
      - description: 'Date to check (format: YYYY-MM-DD)'
        example: 2026-01-15
        in: path
        name: date
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Calendar status retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementCalendarModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get calendar status
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/calendar/{calendarType}/weekly:
    get:
      description: Retrieves the weekly calendar schedule (settlement or operating window) for a specific settlement hub.
      operationId: get-weekly-calendar
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Calendar type
        in: path
        name: calendarType
        required: true
        schema:
          type: string
          enum:
          - settlementWindow
          - operatingWindow
      responses:
        '200':
          description: Weekly calendar retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementWeeklyCalendarModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get weekly calendar
      tags:
      - Settlement Hub
    post:
      description: Creates a new weekly calendar day entry for the specified settlement hub calendar.
      operationId: create-settlement-hub-weekly-day
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Calendar type
        in: path
        name: calendarType
        required: true
        schema:
          type: string
          enum:
          - settlementWindow
          - operatingWindow
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSettlementHubWeeklyDayRequest'
        description: Create Settlement Hub Weekly Day data
        required: true
      responses:
        '201':
          description: Weekly calendar day created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementWeeklyDayModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create settlement hub weekly day
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/calendar/{calendarType}/weekly/{weeklyId}:
    delete:
      description: Deletes a specific weekly calendar day entry from the specified settlement hub calendar.
      operationId: delete-settlement-hub-weekly-day
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Calendar type
        in: path
        name: calendarType
        required: true
        schema:
          type: string
          enum:
          - settlementWindow
          - operatingWindow
      - description: Weekly Day ID
        example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
        in: path
        name: weeklyId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Weekly calendar day deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteSettlementHubWeeklyDayResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Delete settlement hub weekly day
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/calendar/{calendarType}/yearly:
    get:
      description: Retrieves the yearly special operating days calendar (settlement or operating window) for a settlement hub. Optionally filters by year.
      operationId: get-yearly-calendar
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Calendar type
        in: path
        name: calendarType
        required: true
        schema:
          type: string
          enum:
          - settlementWindow
          - operatingWindow
      - description: Year to filter by (optional, returns all years if not provided)
        example: 2026
        in: query
        name: year
        schema:
          type: integer
      responses:
        '200':
          description: Yearly calendar retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementYearlyCalendarModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get yearly calendar
      tags:
      - Settlement Hub
    post:
      description: Creates a new special yearly calendar day entry for the specified settlement hub calendar.
      operationId: create-settlement-hub-yearly-day
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Calendar type
        in: path
        name: calendarType
        required: true
        schema:
          type: string
          enum:
          - settlementWindow
          - operatingWindow
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSettlementHubYearlyDayRequest'
        description: Create Settlement Hub Yearly Day data
        required: true
      responses:
        '201':
          description: Yearly calendar day created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementYearlyDayModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create settlement hub yearly day
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/calendar/{calendarType}/yearly/{yearlyId}:
    delete:
      description: Deletes a specific yearly calendar day entry from the specified settlement hub calendar.
      operationId: delete-settlement-hub-yearly-day
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Calendar type
        in: path
        name: calendarType
        required: true
        schema:
          type: string
          enum:
          - settlementWindow
          - operatingWindow
      - description: Yearly Day ID
        example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
        in: path
        name: yearlyId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Yearly calendar day deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteSettlementHubYearlyDayResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Delete settlement hub yearly day
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/cancellation-instructions:
    post:
      description: Initiates the async process to create a cancellation instruction for an existing settlement instruction.
      operationId: create-cancellation-instruction
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCancellationInstructionProcessRequest'
        description: Cancellation Instruction process data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create cancellation instruction
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/cancellation-instructions/{cancellationId}:
    get:
      description: Retrieves a specific cancellation instruction by settlement hub ID and cancellation instruction ID.
      operationId: get-cancellation-instruction
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Cancellation Instruction ID
        example: a1b2c3d4-e5f6-7a8b-9c0d-e1f2a3b4c5d6
        in: path
        name: cancellationId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Cancellation instruction retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancellationInstructionModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get cancellation instruction
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/instructions:
    get:
      description: Retrieves a paginated list of settlement instructions for a specific settlement hub.
      operationId: get-settlement-instructions-by-asset
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Asset ID
        in: query
        name: assetId
        schema:
          type: string
          format: uuid
      - description: 'Instruction statuses to filter by '
        in: query
        name: status
        style: form
        explode: false
        schema:
          type: array
          items:
            enum:
            - UNMATCHED
            - MATCHED
            - ACCEPTED
            - REJECTED
            - EXECUTED
            - SETTLED
            - CANCELLED
            - EXPIRED
            - FAILED
            type: string
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: Field used for sorting
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: Sort direction
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Settlement instructions retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/model.InstructionModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get settlement instructions by asset
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/instructions/{instructionId}/settlement-transactions:
    get:
      description: Retrieves settlement transaction details for a specific instruction by settlement hub ID and instruction ID.
      operationId: get-transaction-details
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Instruction ID
        example: a1b2c3d4-e5f6-7a8b-9c0d-e1f2a3b4c5d6
        in: path
        name: instructionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Transaction details retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.SettlementTransactionModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get transaction details
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/primary-markets:
    get:
      description: Retrieves a paginated list of primary markets registered to a settlement hub.
      operationId: get-registered-primary-markets
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: Field used for sorting
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: Sort direction
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Registered primary markets retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/SettlementPrimaryMarketModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get registered primary markets
      tags:
      - Settlement Hub
    post:
      description: Initiates the async process to register a primary market to a settlement hub.
      operationId: register-primary-market
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterPrimaryMarketProcessRequest'
        description: Register Primary Market process data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Register primary market
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/primary-markets/{settlementPrimaryMarketId}:
    get:
      description: Retrieves a specific registered primary market by settlement hub ID and primary market ID.
      operationId: get-registered-primary-market
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Settlement Primary Market ID
        example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
        in: path
        name: settlementPrimaryMarketId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Registered primary market retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementPrimaryMarketModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get registered primary market
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/primary-markets/{settlementPrimaryMarketId}/settlements:
    get:
      description: Retrieves a paginated list of settlements for a specific primary market within a settlement hub.
      operationId: get-settlements
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Settlement Primary Market ID
        example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
        in: path
        name: settlementPrimaryMarketId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: Field used for sorting
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: Sort direction
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Settlements retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/SettlementModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get settlements
      tags:
      - Settlement Hub
  "/api/v1/settlement/settlement-hubs/{settlementHubId}/primary-markets/{settlementPrimaryMarketId}/settlements/{settlementId}":
    get:
      description: Retrieves a specific settlement by settlement hub ID, primary market ID, and settlement ID.
      operationId: get-settlement
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Settlement Primary Market ID
        example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
        in: path
        name: settlementPrimaryMarketId
        required: true
        schema:
          type: string
          format: uuid
      - description: Settlement ID
        example: a1b2c3d4-e5f6-7a8b-9c0d-e1f2a3b4c5d6
        in: path
        name: settlementId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Settlement retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get settlement
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/settlement-instructions:
    post:
      description: Initiates the async process to create a settlement instruction for a settlement hub.
      operationId: create-settlement-instruction
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSettlementInstructionProcessRequest'
        description: Settlement Instruction process data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Create settlement instruction
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/settlement-instructions/{instructionId}:
    get:
      description: Retrieves a specific settlement instruction by settlement hub ID and instruction ID.
      operationId: get-settlement-instruction
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Instruction ID
        example: a1b2c3d4-e5f6-7a8b-9c0d-e1f2a3b4c5d6
        in: path
        name: instructionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Settlement instruction retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model.SettlementInstructionModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get settlement instruction
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/settlement-options:
    get:
      description: Retrieves a paginated list of settlement options registered to a settlement hub.
      operationId: get-settlement-options
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: Field used for sorting
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: Sort direction
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Settlement options retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/SettlementOptionModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get settlement options
      tags:
      - Settlement Hub
    post:
      description: Initiates the async process to register a settlement option (cash contract) to a settlement hub.
      operationId: register-settlement-option
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterSettlementOptionProcessRequest'
        description: Register Settlement Option process data
        required: true
      responses:
        '202':
          description: Process started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Register settlement option
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/settlement-options/{settlementOptionId}:
    get:
      description: Retrieves a specific settlement option by settlement hub ID and settlement option ID.
      operationId: get-settlement-option
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Settlement Option ID
        example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
        in: path
        name: settlementOptionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Settlement option retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementOptionModel'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get settlement option
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/{settlementHubId}/settlement-transactions:
    get:
      description: Retrieve a list of transactions by settlement hub
      parameters:
      - description: Settlement Hub ID
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Page size
        in: query
        name: pageSize
        schema:
          type: integer
      - description: Offset
        in: query
        name: offset
        schema:
          type: integer
      - description: Sort by
        in: query
        name: sortBy
        schema:
          type: integer
      - description: Sort direction
        in: query
        name: sortDirection
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get transactions by settlement hub
      tags:
      - Settlement Hub
  "/api/v1/settlement/settlement-hubs/{settlementHubId}/settlement-transactions/{settlementTransactionId}/settlement-executions":
    get:
      description: Retrieves a paginated list of settlement executions for a specific settlement transaction.
      operationId: get-settlement-executions
      parameters:
      - description: Settlement Hub ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: path
        name: settlementHubId
        required: true
        schema:
          type: string
          format: uuid
      - description: Settlement Transaction ID
        example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
        in: path
        name: settlementTransactionId
        required: true
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: Field used for sorting
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: Sort direction
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Settlement executions retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/model.SettlementExecutionModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get settlement executions
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/instructions:
    get:
      description: Retrieves a paginated list of instructions with optional filters.
      operationId: get-instructions
      parameters:
      - description: Account ID
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: query
        name: accountId
        schema:
          type: string
          format: uuid
      - description: Asset ID
        in: query
        name: assetId
        schema:
          type: string
          format: uuid
      - description: Instruction statuses to filter by
        in: query
        name: status
        style: form
        explode: false
        schema:
          type: array
          items:
            enum:
            - UNMATCHED
            - MATCHED
            - ACCEPTED
            - REJECTED
            - EXECUTED
            - SETTLED
            - CANCELLED
            - EXPIRED
            - FAILED
            type: string
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: Field used for sorting
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: Sort direction
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Instructions retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/model.InstructionModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get instructions
      tags:
      - Settlement Hub
  /api/v1/settlement/settlement-hubs/settlement-transactions:
    get:
      description: Retrieves a paginated list of settlement transactions filtered by account ID.
      operationId: get-transactions-by-account
      parameters:
      - description: Account ID to filter by
        example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
        in: query
        name: accountId
        schema:
          type: string
          format: uuid
      - description: Maximum number of items to return
        example: 20
        in: query
        name: pageSize
        schema:
          type: integer
          default: 20
      - description: Number of items to skip
        example: 0
        in: query
        name: offset
        schema:
          type: integer
          default: 0
      - description: Field used for sorting
        example: createdAt
        in: query
        name: sortBy
        schema:
          type: string
          default: createdAt
      - description: Sort direction
        example: desc
        in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      responses:
        '200':
          description: Transactions retrieved successfully
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageResponse'
                - properties:
                    data:
                      items:
                        $ref: '#/components/schemas/model.SettlementTransactionModel'
                      type: array
                  type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get transactions by account
      tags:
      - Settlement Hub
  /api/v1/shared/process/{processId}:
    get:
      description: Retrieve a process by its ID
      parameters:
      - description: Process ID
        in: path
        name: processId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelprocess.BaseProcessModel'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorResponse'
      summary: Get process by id
      tags:
      - Process
servers:
- url: http://localhost:8080
components:
  requestBodies:
    SettleAllocationProcessRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SettleAllocationProcessRequest'
      description: Settle allocation process data
      required: true
  securitySchemes:
    BearerAuth:
      in: header
      name: Authorization
      type: apiKey
  schemas:
    Account:
      properties:
        dltAccountId:
          description: Blockchain-level account identifier
          example: '0xabc123def456789'
          type: string
        entityIds:
          description: List of entity identifiers linked to this account
          example:
          - 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          items:
            format: uuid
            type: string
          type: array
        id:
          description: Unique account identifier
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        origin:
          description: Origin system or network of the account
          example: INTERNAL
          type: string
      type: object
    AccountLifecycleEvent:
      properties:
        assetId:
          description: Identifier of the asset to which this lifecycle event belongs
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        balance:
          description: Token balance of the account at the record date (decimal string)
          example: '500.00'
          format: decimal
          type: string
        createdAt:
          description: Timestamp when the lifecycle event was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        description:
          description: Optional description providing additional details about the lifecycle event
          example: Quarterly coupon payment for bond holders
          type: string
        executionDate:
          description: Execution date of the lifecycle event
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this lifecycle event
          example: my-ext-id-123
          type: string
        id:
          description: Unique identifier of the lifecycle event
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        name:
          description: Human-readable name of the lifecycle event
          example: Coupon payment Q1 2026
          type: string
        recordDate:
          description: Record date of the lifecycle event
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        status:
          description: 'Current status of the lifecycle event

            Possible values: DRAFT, SCHEDULED, READY, EXECUTED, FAILED, CANCELLED'
          enum:
          - DRAFT
          - SCHEDULED
          - READY
          - EXECUTED
          - FAILED
          - CANCELLED
          example: SCHEDULED
          type: string
        type:
          description: 'Type of lifecycle event

            Possible values: COUPON, AMORTIZATION, INTEREST_PAYMENT, REDEMPTION_PAYMENT'
          enum:
          - COUPON
          - AMORTIZATION
          - INTEREST_PAYMENT
          - REDEMPTION_PAYMENT
          example: COUPON
          type: string
        updatedAt:
          description: Timestamp when the lifecycle event was last updated (if applicable)
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    ActivateLicenseRequest:
      properties:
        licenseKey:
          description: JWT license token issued by the license authority
          example: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
          type: string
      required:
      - licenseKey
      type: object
    AddComplianceEligibilityAccountRequest:
      properties:
        accountId:
          description: Unique identifier of the account to add
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to receive process completion callback
          example: https://my-service.example.com/callback
          type: string
      required:
      - accountId
      type: object
    AddComplianceEligibilityExternalListAccountRequest:
      properties:
        SignerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        accountId:
          description: Identifier of the account to add
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
      required:
      - SignerDltAccountId
      - accountId
      type: object
    AddComplianceEligibilityExternalListRequest:
      properties:
        callbackUrl:
          description: Optional URL to receive process completion callback
          example: https://my-service.example.com/callback
          type: string
        contractDltAccountId:
          description: DLT account address of the external compliance list contract
          example: 9.808299006075645e+47
          type: string
      required:
      - contractDltAccountId
      type: object
    AddHoldingsAssetRequest:
      properties:
        assetType:
          description: Type of asset being added as a holding
          enum:
          - BASIC_BOND
          - TOKENIZED_CREDIT
          - LOANS_PORTFOLIO
          example: TOKENIZED_CREDIT
          type: string
        callbackUrl:
          description: Optional URL to receive process completion callback
          example: https://my-service.example.com/callback
          type: string
        contractDltAccountId:
          description: DLT account address of the asset contract to add as a holding
          example: 9.808299006075645e+47
          type: string
        externalId:
          description: External reference identifier for the holding
          example: HOLD-001
          type: string
      required:
      - assetType
      - contractDltAccountId
      - externalId
      type: object
    AddSubscriptionProcessRequest:
      properties:
        accountId:
          description: Identifier of the account subscribing to the offering
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        callbackUrl:
          description: URL to receive the process completion callback
          example: https://example.com/callback
          type: string
        shares:
          description: Number of shares to subscribe
          example: '1000.00'
          format: decimal
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - accountId
      - shares
      - signerDltAccountId
      type: object
    AllocationModel:
      properties:
        allocationTypeRelatedId:
          description: Related entity identifier (e.g., subscription that originated the allocation)
          example: d4e5f6a7-4567-89ab-cdef-012345678901
          format: uuid
          type: string
        cash:
          description: Cash amount for the allocation (optional, nil if no cash settlement)
          example: '50000.00'
          format: decimal
          type: string
        createdAt:
          description: Timestamp when the allocation was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        fromCashAccountId:
          description: Account id from which cash is transferred (optional, nil if no cash settlement)
          example: d4e5f6a7-4567-89ab-cdef-012345678901
          format: uuid
          type: string
        id:
          description: Unique allocation identifier
          example: e5f6a7b8-5678-9abc-def0-123456789012
          format: uuid
          type: string
        shares:
          description: Number of shares allocated
          example: '1000.00'
          format: decimal
          type: string
        status:
          description: 'Current status of the allocation

            Possible values: CREATED, CANCELLED, SETTLED'
          enum:
          - CREATED
          - CANCELLED
          - SETTLED
          example: CREATED
          type: string
        toCashAccountId:
          description: Account id to which cash is transferred (optional, nil if no cash settlement)
          example: d4e5f6a7-4567-89ab-cdef-012345678901
          format: uuid
          type: string
        toTokenAccountId:
          description: Account id to which tokens are transferred
          example: d4e5f6a7-4567-89ab-cdef-012345678901
          format: uuid
          type: string
        type:
          description: 'Allocation type indicating its origin

            Possible values: FROM_SUBSCRIPTION, OUT_OF_SUBSCRIPTION'
          enum:
          - FROM_SUBSCRIPTION
          - OUT_OF_SUBSCRIPTION
          example: FROM_SUBSCRIPTION
          type: string
        updatedAt:
          description: Timestamp when the allocation was last updated
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    AllocationProcessRequest:
      properties:
        accountId:
          description: Account id for out-of-subscription allocation
          example: 123e4567-e89b-12d3-a456-426655440000
          type: string
        callbackUrl:
          description: URL to receive the process completion callback
          example: https://example.com/callback
          type: string
        cash:
          description: Cash amount to allocate
          example: '10000.00'
          format: decimal
          type: string
        shares:
          description: Number of shares to allocate
          example: '1000.00'
          format: decimal
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        subscriptionId:
          description: Subscription id for from subscription allocation
          example: 123e4567-e89b-12d3-a456-426655440000
          type: string
      required:
      - shares
      - signerDltAccountId
      type: object
    AmortizationLifecycleEvent:
      properties:
        assetId:
          description: Identifier of the asset to which this lifecycle event belongs
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        createdAt:
          description: Timestamp when the lifecycle event was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        description:
          description: Optional description providing additional details about the lifecycle event
          example: Quarterly coupon payment for bond holders
          type: string
        executionDate:
          description: Execution date of the lifecycle event
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this lifecycle event
          example: my-ext-id-123
          type: string
        id:
          description: Unique identifier of the lifecycle event
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        name:
          description: Human-readable name of the lifecycle event
          example: Coupon payment Q1 2026
          type: string
        recordDate:
          description: Record date of the lifecycle event
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        status:
          description: 'Current status of the lifecycle event

            Possible values: DRAFT, SCHEDULED, READY, EXECUTED, FAILED, CANCELLED'
          enum:
          - DRAFT
          - SCHEDULED
          - READY
          - EXECUTED
          - FAILED
          - CANCELLED
          example: SCHEDULED
          type: string
        totalAmount:
          description: Total amortization amount represented as a decimal string
          example: '10000.00'
          format: decimal
          type: string
        type:
          description: 'Type of lifecycle event

            Possible values: COUPON, AMORTIZATION, INTEREST_PAYMENT, REDEMPTION_PAYMENT'
          enum:
          - COUPON
          - AMORTIZATION
          - INTEREST_PAYMENT
          - REDEMPTION_PAYMENT
          example: COUPON
          type: string
        updatedAt:
          description: Timestamp when the lifecycle event was last updated (if applicable)
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    Asset:
      properties:
        AdminDltAccountId:
          description: DLT account address of the Asset Admin
          example: '0xABCDEF1234567890'
          type: string
        assetType:
          description: Type of asset
          enum:
          - BASIC_BOND
          - TOKENIZED_CREDIT
          - LOANS_PORTFOLIO
          example: BASIC_BOND
          type: string
        complianceControllerEntityId:
          description: Entity identifier of the compliance controller
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the asset
          example: ALLOWLIST
          type: string
        contractDltAccountId:
          description: DLT account address of the deployed asset smart contract
          example: '0xABCDEF1234567890'
          type: string
        country:
          description: ISO 3166-1 alpha-2 country code of the asset
          example: ES
          type: string
        createdAt:
          description: Timestamp when the asset record was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        creationDate:
          description: Date the asset was deployed on the DLT (null if not yet deployed)
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        currentSupply:
          description: Current token supply in circulation
          example: '1000000.00'
          format: decimal
          type: string
        decimals:
          description: Number of decimal places for token amounts
          example: 18
          type: integer
        description:
          description: Optional description of the asset
          example: My bond offering for 2026
          type: string
        externalId:
          description: External reference identifier for this asset
          example: EXT-001
          type: string
        id:
          description: Unique identifier of the asset
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        issuerDltAccountId:
          description: DLT account identifier of the asset issuer
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/Lifecycle'
          description: Lifecycle payment settings for the asset
        maxSupply:
          description: Maximum allowable token supply (null if unlimited)
          example: '5000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the asset
          example: My Bond 2026
          type: string
        origin:
          description: Origin of the asset record
          enum:
          - INTERNAL
          - EXTERNAL
          example: INTERNAL
          type: string
        paused:
          description: Whether the asset transfers are currently paused on the DLT
          example: false
          type: boolean
        status:
          description: Current lifecycle status of the asset
          enum:
          - DRAFT
          - ACTIVE
          - PAUSED
          - REJECTED
          - ARCHIVED
          example: DRAFT
          type: string
        symbol:
          description: Ticker symbol of the asset
          example: MBD
          type: string
        updatedAt:
          description: Timestamp when the asset record was last updated
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/Valuation'
          description: Valuation data for the asset
      type: object
    AssetClass:
      properties:
        baseAssetClassId:
          description: Identifier of the base asset class if this is a specialized version
          example: g4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        capabilities:
          description: List of capabilities enabled for this asset class
          items:
            $ref: '#/components/schemas/Capability'
          type: array
        createdAt:
          description: Date and time when the asset class was created
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
        customDataSchema:
          description: List of custom data fields defined for this asset class
          items:
            $ref: '#/components/schemas/CustomDataField'
          type: array
        id:
          description: Unique identifier of the asset class
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        isTemplate:
          description: Indicates if this asset class serves as a template for others
          example: false
          type: boolean
        metadataSchema:
          description: List of metadata keys required
          example:
          - '["taxId"'
          - ' "countryOfRegistration"'
          - ' "notaryId"]'
          items:
            type: string
          type: array
        name:
          description: Human-readable name of the asset class
          example: Bond
          type: string
        networks:
          description: Networks where this asset class is registered
          items:
            $ref: '#/components/schemas/Network'
          type: array
        roleDefinitions:
          description: Definitions of roles allowed for this asset class
          items:
            $ref: '#/components/schemas/RoleDefinition'
          type: array
        status:
          description: Current status of the asset class
          example: DRAFT
          type: string
        updatedAt:
          description: Date and time of the last update
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    AssetLegRequest:
      properties:
        assetId:
          description: ID of the asset involved in this leg
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        legRole:
          description: 'Role of this leg in the instruction

            Possible values: DELIVER, RECEIVE, MINT, BURN'
          enum:
          - DELIVER
          - RECEIVE
          - MINT
          - BURN
          example: DELIVER
          type: string
        tokenAmount:
          description: Token quantity for this leg
          example: '100.00'
          format: decimal
          type: string
      required:
      - assetId
      - legRole
      - tokenAmount
      type: object
    AssetParty:
      properties:
        contact:
          description: Contact information for the party
          example: contact@acmecorp.com
          type: string
        legalName:
          description: Legal name of the party
          example: ACME Corp S.L.
          type: string
        taxId:
          description: Tax identification number
          example: B12345678
          type: string
        type:
          description: Type of party
          example: CORPORATE
          type: string
      type: object
    AssignAssetToSettlementHubProcessRequest:
      properties:
        assetId:
          description: ID of the asset to assign
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        callbackUrl:
          description: Callback URL for async process notifications (optional)
          example: https://example.com/callback
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - assetId
      - signerDltAccountId
      type: object
    BasicBond:
      properties:
        assetType:
          description: Type of asset
          example: BASIC_BOND
          type: string
        complianceControllerEntityId:
          description: Entity identifier of the compliance controller
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the bond
          example: ALLOWLIST
          type: string
        contractDltAccountId:
          description: DLT account address of the deployed bond smart contract
          example: '0xABCDEF1234567890'
          type: string
        country:
          description: ISO 3166-1 alpha-2 country code of the bond
          example: ES
          type: string
        coupon:
          allOf:
          - $ref: '#/components/schemas/CouponDefinition'
          description: Optional coupon definition for the bond
        createdAt:
          description: Timestamp when the bond record was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        creationDate:
          description: Date the bond was deployed on the DLT (null if not yet deployed)
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        currentSupply:
          description: Current token supply in circulation
          example: '1000000.00'
          format: decimal
          type: string
        decimals:
          description: Number of decimal places for token amounts
          example: 18
          type: integer
        description:
          description: Optional description of the bond
          example: My bond offering for 2026
          type: string
        externalId:
          description: External reference identifier for this bond
          example: EXT-BOND-001
          type: string
        id:
          description: Unique identifier of the bond
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        isin:
          description: International Securities Identification Number
          example: ES0000000001
          type: string
        issuerDltAccountId:
          description: DLT account identifier of the bond issuer
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/Lifecycle'
          description: Lifecycle payment settings for the bond
        maturityDate:
          description: Maturity date of the bond
          example: 2031-01-01 00:00:00+00:00
          format: date-time
          type: string
        maxSupply:
          description: Maximum allowable token supply
          example: '5000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the bond
          example: My Bond 2026
          type: string
        origin:
          description: Origin of the bond record
          enum:
          - INTERNAL
          - EXTERNAL
          example: INTERNAL
          type: string
        paused:
          description: Whether the bond transfers are currently paused on the DLT
          example: false
          type: boolean
        startDate:
          description: Start date of the bond
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        status:
          description: Current lifecycle status of the bond
          enum:
          - DRAFT
          - ACTIVE
          - PAUSED
          - REJECTED
          - ARCHIVED
          example: DRAFT
          type: string
        symbol:
          description: Ticker symbol of the bond
          example: MBD
          type: string
        updatedAt:
          description: Timestamp when the bond record was last updated
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/Valuation'
          description: Valuation data for the bond
      type: object
    BurnProcessRequest:
      properties:
        accountId:
          description: Identifier of the account from which to burn the position
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        amount:
          description: Amount to burn
          example: '500.00'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset to burn
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        externalId:
          description: Optional external identifier for this burn process
          example: my-ext-id-123
          type: string
        metadata:
          additionalProperties: true
          description: Optional metadata to associate with the burn transaction
          type: object
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - accountId
      - amount
      - assetId
      - signerDltAccountId
      type: object
    CancelAllocationProcessRequest:
      properties:
        callbackUrl:
          description: URL to receive the process completion callback
          example: https://example.com/callback
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - signerDltAccountId
      type: object
    CancelSubscriptionProcessRequest:
      properties:
        callbackUrl:
          description: URL to receive the process completion callback
          example: https://example.com/callback
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - signerDltAccountId
      type: object
    CancellationInstructionModel:
      properties:
        cancellationReason:
          description: Reason provided for the cancellation
          example: Example cancel reason
          type: string
        createdAt:
          description: Creation timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        externalId:
          example: my-ext-id-123
          type: string
        id:
          description: Unique identifier of the cancellation instruction
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        instructionType:
          description: Type of instruction (always CANCELLATION)
          example: CANCELLATION
          type: string
        nonce:
          description: Settlement nonce on the DLT
          example: '2.00'
          format: decimal
          type: string
        relatedInstructionId:
          description: ID of the settlement instruction being cancelled (optional)
          example: c3d4e5f6-a7b8-9c0d-1e2f-3a4b5c6d7e8f
          format: uuid
          type: string
        settlementHubAssetId:
          description: ID of the settlement hub asset
          example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
          format: uuid
          type: string
        settlementHubId:
          description: ID of the settlement hub
          example: a1b2c3d4-e5f6-7a8b-9c0d-e1f2a3b4c5d6
          format: uuid
          type: string
        status:
          description: 'Current status of the cancellation instruction

            Possible values: UNMATCHED, MATCHED, ACCEPTED, REJECTED, EXECUTED, SETTLED, CANCELLED, EXPIRED, FAILED'
          enum:
          - UNMATCHED
          - MATCHED
          - ACCEPTED
          - REJECTED
          - EXECUTED
          - SETTLED
          - CANCELLED
          - EXPIRED
          - FAILED
          example: ACCEPTED
          type: string
        updatedAt:
          description: Last update timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    Capability:
      properties:
        capabilityId:
          description: Unique identifier of the capability
          example: 33333333-4444-5555-6666-777777777777
          format: uuid
          type: string
        version:
          description: Version of the capability logic applied
          example: v1.2.0
          type: string
      type: object
    CapabilityConfigParamDetail:
      properties:
        allowedValues:
          description: Allowed values for this parameter, if constrained
          items:
            type: string
          type: array
        initFunction:
          description: On-chain initialization function name
          example: initializeControlList
          type: string
        maxValue:
          description: Maximum numeric value, if applicable
          example: 100
          type: integer
        minValue:
          description: Minimum numeric value, if applicable
          example: 0
          type: integer
        name:
          description: Parameter name
          example: isWhiteList
          type: string
        required:
          description: Whether the parameter must be provided at deployment
          example: true
          type: boolean
        type:
          description: Parameter type
          example: bool
          type: string
      type: object
    CapabilityDetail:
      properties:
        createdAt:
          description: Date and time when the capability was created
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
        description:
          description: Detailed description of what the capability does
          example: Controls who can hold and receive tokens.
          type: string
        id:
          description: Unique identifier of the capability
          example: 10000000-0000-0000-0000-000000000001
          format: uuid
          type: string
        module:
          description: Functional module the capability belongs to
          example: COMPLIANCE
          type: string
        name:
          description: Human-readable name of the capability
          example: Eligibility
          type: string
        updatedAt:
          description: Date and time of the last update
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
        versions:
          description: All available versions of this capability
          items:
            $ref: '#/components/schemas/CapabilityVersionDetail'
          type: array
      type: object
    CapabilityItem:
      properties:
        createdAt:
          description: Date and time when the capability was created
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
        description:
          description: Detailed description of what the capability does
          example: Controls who can hold and receive tokens.
          type: string
        id:
          description: Unique identifier of the capability
          example: 10000000-0000-0000-0000-000000000001
          format: uuid
          type: string
        module:
          description: Functional module the capability belongs to
          example: COMPLIANCE
          type: string
        name:
          description: Human-readable name of the capability
          example: Eligibility
          type: string
        updatedAt:
          description: Date and time of the last update
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    CapabilityNetworkSupportDetail:
      properties:
        implementingFacets:
          description: On-chain facet IDs that implement this capability on the network
          example:
          - '["0xfbb1491b..."]'
          items:
            type: string
          type: array
        networkId:
          description: Identifier of the blockchain network
          example: default
          type: string
        standardsMapping:
          description: Token standards this capability provides compliance for
          example:
          - '["ERC-1643"]'
          items:
            type: string
          type: array
      type: object
    CapabilityVersionDetail:
      properties:
        configurationSchema:
          description: On-chain initialization parameters for this capability version
          items:
            $ref: '#/components/schemas/CapabilityConfigParamDetail'
          type: array
        deprecated:
          description: Whether this version is deprecated
          example: false
          type: boolean
        deprecatedAt:
          description: Date when this version was deprecated, if applicable
          example: 2026-06-01 00:00:00+00:00
          format: date-time
          type: string
        hardDependencies:
          description: Capability IDs that must be present for this capability to function
          items:
            type: string
          type: array
        incompatibilities:
          description: Capability IDs that cannot coexist with this capability
          items:
            type: string
          type: array
        networkSupport:
          description: Per-network facet and standard mappings
          items:
            $ref: '#/components/schemas/CapabilityNetworkSupportDetail'
          type: array
        recommendedCompanions:
          description: Capability IDs that work well alongside this capability
          items:
            type: string
          type: array
        version:
          description: Semantic version identifier
          example: v7.0.0
          type: string
      type: object
    CashLegRequest:
      properties:
        cashAmount:
          description: Cash amount for this leg
          example: '1000.00'
          format: decimal
          type: string
        legRole:
          description: 'Role of this leg in the instruction

            Possible values: DELIVER, RECEIVE'
          enum:
          - DELIVER
          - RECEIVE
          example: RECEIVE
          type: string
        settlementOptionId:
          description: ID of the settlement option to use for cash settlement
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
      required:
      - cashAmount
      - legRole
      - settlementOptionId
      type: object
    CashTransactionModel:
      properties:
        createdAt:
          description: Timestamp when the cash transaction was created
          example: 2026-01-05 10:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: External transaction identifier assigned by the payment provider
          example: PAY-20260101-001
          type: string
        id:
          description: Unique identifier of the cash transaction record
          example: b2c3d4e5-f6a7-8901-bcde-f12345678901
          format: uuid
          type: string
      type: object
    CloseOfferingProcessRequest:
      properties:
        callbackUrl:
          description: URL to receive the process completion callback
          example: https://example.com/callback
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - signerDltAccountId
      type: object
    ComplianceEligibilityExternalList:
      properties:
        complianceControllerEntityId:
          description: Identifier of the entity controlling compliance for this list
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        compliancePolicy:
          allOf:
          - $ref: '#/components/schemas/externallist.CompliancePolicy'
          description: 'Compliance policy type applied to this list

            Possible values: ALLOWLIST, BLOCKLIST'
          enum:
          - ALLOWLIST
          - BLOCKLIST
          example: ALLOWLIST
        contractDltAccountId:
          description: DLT account address of the compliance contract
          example: 1.0392900530792776e+47
          type: string
        createdAt:
          description: Timestamp when the list was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this list
          example: my-ext-id-123
          type: string
        id:
          description: Unique identifier of the external list
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        name:
          description: Human-readable name of the external list
          example: My Allowlist
          type: string
        updatedAt:
          description: Timestamp when the list was last updated
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    ComplianceEligibilityExternalListAccount:
      properties:
        accountId:
          description: Identifier of the associated account
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        createdAt:
          description: Timestamp when the entry was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        id:
          description: Unique identifier of the external list account entry
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        updatedAt:
          description: Timestamp when the entry was last updated
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    ControllerTransferProcessRequest:
      properties:
        amount:
          description: Amount to transfer
          example: '500.00'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset to transfer
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        externalId:
          description: Optional external identifier for this transfer process
          example: my-ext-id-123
          type: string
        fromAccountId:
          description: Identifier of the source account
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        metadata:
          additionalProperties: true
          description: Optional metadata to associate with the transfer transaction
          type: object
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        toAccountId:
          description: Identifier of the destination account
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
      required:
      - amount
      - assetId
      - fromAccountId
      - signerDltAccountId
      - toAccountId
      type: object
    CouponDefinition:
      properties:
        couponFrequency:
          description: Coupon payment frequency
          enum:
          - MONTHLY
          - QUARTERLY
          - SEMI_ANNUAL
          - ANNUAL
          example: QUARTERLY
          type: string
        couponRate:
          description: Annual coupon rate as a decimal
          example: '0.05'
          format: decimal
          type: string
        firstCouponDate:
          description: Date of the first coupon payment
          example: 2026-04-01 00:00:00+00:00
          format: date-time
          type: string
      type: object
    CouponLifecycleEvent:
      properties:
        accrualPeriodEndDate:
          description: End date of the accrual period
          example: 2026-04-01 00:00:00+00:00
          format: date-time
          type: string
        accrualPeriodStartDate:
          description: Start date of the accrual period
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        amount:
          description: Total coupon amount (decimal string)
          example: '5250.00'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset to which this lifecycle event belongs
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        createdAt:
          description: Timestamp when the lifecycle event was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        dayCount:
          description: Day count convention used for coupon accrual calculation
          example: ACT/360
          type: string
        description:
          description: Optional description providing additional details about the lifecycle event
          example: Quarterly coupon payment for bond holders
          type: string
        effectiveRate:
          description: Effective interest rate applied to the coupon (decimal string)
          example: '0.0525'
          format: decimal
          type: string
        executionDate:
          description: Execution date of the lifecycle event
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this lifecycle event
          example: my-ext-id-123
          type: string
        id:
          description: Unique identifier of the lifecycle event
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        name:
          description: Human-readable name of the lifecycle event
          example: Coupon payment Q1 2026
          type: string
        recordDate:
          description: Record date of the lifecycle event
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        status:
          description: 'Current status of the lifecycle event

            Possible values: DRAFT, SCHEDULED, READY, EXECUTED, FAILED, CANCELLED'
          enum:
          - DRAFT
          - SCHEDULED
          - READY
          - EXECUTED
          - FAILED
          - CANCELLED
          example: SCHEDULED
          type: string
        type:
          description: 'Type of lifecycle event

            Possible values: COUPON, AMORTIZATION, INTEREST_PAYMENT, REDEMPTION_PAYMENT'
          enum:
          - COUPON
          - AMORTIZATION
          - INTEREST_PAYMENT
          - REDEMPTION_PAYMENT
          example: COUPON
          type: string
        updatedAt:
          description: Timestamp when the lifecycle event was last updated (if applicable)
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    CreateAccountRequest:
      properties:
        dltAccountId:
          description: Blockchain-level account identifier
          example: '0xabc123def456789'
          type: string
        entityId:
          description: Entity identifier that will own the new account
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
      type: object
    CreateCancellationInstructionProcessRequest:
      properties:
        callbackUrl:
          description: Callback URL for async process notifications (optional)
          example: https://example.com/callback
          type: string
        cancellationReason:
          description: Reason for cancellation
          example: Example cancel reason
          type: string
        externalId:
          description: External reference identifier for this instruction
          example: my-ext-id-123
          type: string
        relatedInstructionId:
          description: ID of the settlement instruction to cancel
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - cancellationReason
      - relatedInstructionId
      - signerDltAccountId
      type: object
    CreateComplianceEligibilityExternalListRequest:
      properties:
        SignerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        complianceControllerEntityId:
          description: Identifier of the entity who will control this compliance list
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        compliancePolicy:
          description: 'Compliance policy type for this list

            Possible values: ALLOWLIST, BLOCKLIST'
          enum:
          - ALLOWLIST
          - BLOCKLIST
          example: ALLOWLIST
          type: string
        externalId:
          description: Optional external identifier for this list
          example: my-ext-id-123
          type: string
        name:
          description: Human-readable name of the external list
          example: My Allowlist
          type: string
      required:
      - SignerDltAccountId
      - complianceControllerEntityId
      - name
      type: object
    CreateControllerHoldRequest:
      properties:
        amount:
          description: Amount to place under hold
          example: '1000.00'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset to place under hold
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        escrowAccountId:
          description: Identifier of the escrow account to hold the locked tokens
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
          format: uuid
          type: string
        expiration:
          description: Expiration date of the hold
          example: 2026-06-01 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external reference identifier provided by the caller
          example: EXT-HOLD-001
          type: string
        fromAccountId:
          description: Identifier of the account from which the hold is placed
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        toAccountId:
          description: Identifier of the destination account (optional)
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
      required:
      - amount
      - assetId
      - escrowAccountId
      - expiration
      - fromAccountId
      - signerDltAccountId
      type: object
    CreateEntityRequest:
      properties:
        name:
          description: Full legal name of the entity
          example: Acme Corporation
          type: string
        taxId:
          description: Tax identification number
          example: B12345678
          type: string
        type:
          description: 'Entity type

            Possible values: natural, juridical'
          enum:
          - natural
          - juridical
          example: natural
          type: string
      required:
      - name
      - taxId
      - type
      type: object
    CreateHoldRequest:
      properties:
        amount:
          description: Amount to place under hold
          example: '1000.00'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset to place under hold
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        escrowAccountId:
          description: Identifier of the escrow account to hold the locked tokens
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
          format: uuid
          type: string
        expiration:
          description: Expiration date of the hold
          example: 2026-06-01 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external reference identifier provided by the caller
          example: EXT-HOLD-001
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        toAccountId:
          description: Identifier of the destination account (optional)
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
      required:
      - amount
      - assetId
      - escrowAccountId
      - expiration
      - signerDltAccountId
      type: object
    CreateLifecycleEventRequest:
      properties:
        SignerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        callbackUrl:
          description: Optional URL to receive a callback notification when the process completes
          example: https://example.com/callbacks/lifecycle-event
          type: string
      required:
      - SignerDltAccountId
      type: object
    CreateOfferingProcessRequest:
      properties:
        autoCloseOnEnd:
          description: Whether the offering closes automatically at end date
          example: true
          type: boolean
        autoCloseOnFull:
          description: Whether the offering closes automatically when fully subscribed
          example: true
          type: boolean
        callbackUrl:
          description: URL to receive the process completion callback
          example: https://example.com/callback
          type: string
        endDate:
          description: Date and time when the offering closes
          example: 2026-03-01 00:00:00+00:00
          format: date-time
          type: string
        method:
          description: 'Offering method for price discovery

            Possible values: FIXED_PRICE'
          enum:
          - FIXED_PRICE
          example: FIXED_PRICE
          type: string
        overSubscriptionRule:
          description: 'Rule applied when subscriptions exceed target

            Possible values: NOT_ALLOWED'
          enum:
          - NOT_ALLOWED
          example: NOT_ALLOWED
          type: string
        price:
          description: Price per share
          example: '10.00'
          format: decimal
          type: string
        shares:
          description: Total number of shares to offer
          example: '100000.00'
          format: decimal
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        startDate:
          description: Date and time when the offering opens
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        timeType:
          description: 'Time type defining the offering window

            Possible values: TIME_WINDOW'
          enum:
          - TIME_WINDOW
          example: TIME_WINDOW
          type: string
        underSubscriptionRule:
          description: 'Rule applied when subscriptions fall below target

            Possible values: NOT_ALLOWED'
          enum:
          - NOT_ALLOWED
          example: NOT_ALLOWED
          type: string
      required:
      - endDate
      - method
      - overSubscriptionRule
      - shares
      - signerDltAccountId
      - startDate
      - timeType
      - underSubscriptionRule
      type: object
    CreatePrimaryMarketProcessRequest:
      properties:
        callbackUrl:
          description: URL to receive the process completion callback
          example: https://example.com/callback
          type: string
        externalId:
          description: Optional external identifier
          example: my-ext-id-123
          type: string
        name:
          description: Human-readable name for the primary market
          example: Sample Primary Market
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - name
      - signerDltAccountId
      type: object
    CreateSettlementHubProcessRequest:
      properties:
        acceptancePolicy:
          description: 'Policy for accepting settlement instructions when the hub is closed

            Possible values: QUEUE, REJECT'
          enum:
          - QUEUE
          - REJECT
          example: QUEUE
          type: string
        callbackUrl:
          description: Callback URL for async process notifications (optional)
          example: https://example.com/callback
          type: string
        daysUntilExpiration:
          description: Number of days until settlement instructions expire (optional)
          example: 3
          type: integer
        expirationType:
          description: 'Type of expiration for settlement instructions (optional)

            Possible values: NATURAL, OFFICE'
          enum:
          - NATURAL
          - OFFICE
          example: NATURAL
          type: string
        externalId:
          description: Optional external identifier for this settlement hub
          example: my-ext-id-123
          type: string
        name:
          description: Name of the settlement hub
          example: My Settlement Hub
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - acceptancePolicy
      - name
      - signerDltAccountId
      type: object
    CreateSettlementHubWeeklyDayRequest:
      properties:
        dayOfWeek:
          description: 'Day of the week

            Possible values: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY'
          enum:
          - MONDAY
          - TUESDAY
          - WEDNESDAY
          - THURSDAY
          - FRIDAY
          - SATURDAY
          - SUNDAY
          example: MONDAY
          type: string
        timeFrames:
          description: Time frames during which the calendar is open on this day
          items:
            $ref: '#/components/schemas/CreateSettlementHubWeeklyDayTimeFrameRequest'
          type: array
      required:
      - dayOfWeek
      - timeFrames
      type: object
    CreateSettlementHubWeeklyDayTimeFrameRequest:
      properties:
        endTime:
          description: 'End time of the window (format: HH:MM)'
          example: 1020
          type: string
        startTime:
          description: 'Start time of the window (format: HH:MM)'
          example: 09:00
          type: string
      required:
      - endTime
      - startTime
      type: object
    CreateSettlementHubYearlyDayRequest:
      properties:
        date:
          description: 'Date of the special day (format: YYYY-MM-DD)'
          example: 2026-12-25
          type: string
        name:
          description: Name of the special day (optional)
          example: Christmas Day
          type: string
        timeFrames:
          description: Time frames applicable for this special day
          items:
            $ref: '#/components/schemas/SettlementTimeFrameModel'
          type: array
      required:
      - date
      - timeFrames
      type: object
    CreateSettlementInstructionProcessRequest:
      properties:
        accountId:
          description: Account ID of the party initiating the instruction
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        agentAccountId:
          description: Account ID of the settlement party agent
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        assetLegs:
          description: Asset legs for this instruction (required for asset-based settlement types)
          items:
            $ref: '#/components/schemas/AssetLegRequest'
          type: array
        callbackUrl:
          description: Callback URL for async process notifications (optional)
          example: https://example.com/callback
          type: string
        cashLegs:
          description: Cash legs for this instruction (required for cash-based settlement types)
          items:
            $ref: '#/components/schemas/CashLegRequest'
          type: array
        counterpartyAccountId:
          description: Account ID of the counterparty (optional)
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        counterpartyAgentAccountId:
          description: Account ID of the counterparty settlement agent (optional for MACH instructions with MINT/BURN legs)
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        externalId:
          description: Optional external identifier for this instruction
          example: my-ext-id-123
          type: string
        matchingStatus:
          description: 'Matching status for this instruction. NMAT (default) goes through matching engine; MACH bypasses it and sets status to MATCHED directly.

            Possible values: NMAT, MACH'
          enum:
          - NMAT
          - MACH
          example: NMAT
          type: string
        metadata:
          allOf:
          - $ref: '#/components/schemas/MetadataInstructionRequest'
          description: Optional metadata for this instruction
        settlementDate:
          description: Intended settlement date
          example: 2024-01-17 00:00:00+00:00
          format: date-time
          type: string
        settlementType:
          description: 'Settlement type defining the leg composition

            Possible values: DVP, RVP, DFP, RFP, DPFOD, RPFOD, DVD, PVP'
          enum:
          - DVP
          - RVP
          - DFP
          - RFP
          - DPFOD
          - RPFOD
          - DVD
          - PVP
          example: DVP
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        tradeDate:
          description: Trade date of the instruction
          example: 2024-01-15 00:00:00+00:00
          format: date-time
          type: string
      required:
      - accountId
      - agentAccountId
      - settlementDate
      - settlementType
      - signerDltAccountId
      - tradeDate
      type: object
    CreateUserRequest:
      properties:
        email:
          description: Email address of the user
          example: jane.doe@example.com
          type: string
        name:
          description: Full name of the user
          example: Jane Doe
          type: string
        password:
          description: Initial password for the user account
          example: S3cur3P@ssw0rd!
          type: string
        roles:
          description: 'Roles assigned to the user

            Possible values: admin, read_only'
          example:
          - admin
          items:
            enum:
            - admin
            - read_only
            type: string
          type: array
      required:
      - email
      - name
      - password
      - roles
      type: object
    CustomDataField:
      properties:
        immutable:
          description: Whether the field can be changed after creation
          example: false
          type: boolean
        mandatory:
          description: Whether the field must be filled
          example: true
          type: boolean
        name:
          description: Name of the property
          example: margin
          type: string
        typeHint:
          description: Type hint for validation
          example: uint8
          type: string
      type: object
    DeleteDocumentRequest:
      properties:
        SignerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        callbackUrl:
          description: Optional URL to receive a callback notification when the process completes
          example: https://example.com/callbacks/delete-document
          type: string
      required:
      - SignerDltAccountId
      type: object
    DeleteDraftAssetClassResponse:
      properties:
        id:
          type: string
        status:
          type: string
      type: object
    DeleteSettlementHubWeeklyDayResponse:
      properties:
        id:
          description: ID of the deleted weekly day entry
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        status:
          description: Status after deletion
          example: DELETED
          type: string
      type: object
    DeleteSettlementHubYearlyDayResponse:
      properties:
        id:
          description: ID of the deleted yearly day entry
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        status:
          description: Status after deletion
          example: DELETED
          type: string
      type: object
    DistributionsPayable:
      properties:
        capitalDistributionsPayable:
          description: Total capital distributions payable
          example: '10000.00'
          format: decimal
          type: string
        incomeDistributionsPayable:
          description: Total income distributions payable
          example: '5000.50'
          format: decimal
          type: string
      type: object
    DltRole:
      properties:
        hash:
          description: On-chain hash of the role identifier
          example: 7.770935076418585e+76
          type: string
        id:
          description: Unique identifier of the DLT role
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        name:
          description: Human-readable name of the DLT role
          example: ISSUER
          type: string
      type: object
    Document:
      properties:
        assetId:
          description: Unique identifier of the asset this document belongs to
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        createdAt:
          description: Timestamp when the document was uploaded
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        fileName:
          description: Name of the uploaded file
          example: prospectus.pdf
          type: string
        fileSize:
          description: Size of the document in bytes
          example: 204800
          type: integer
        hash:
          description: Content hash of the document for integrity verification
          example: sha256:abc123def456
          type: string
        id:
          description: Unique identifier of the document
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        uri:
          description: URI where the document can be accessed
          example: https://storage.example.com/docs/prospectus.pdf
          type: string
      type: object
    DocumentModel:
      properties:
        createdAt:
          description: Timestamp when the document was uploaded
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        fileName:
          description: Original file name of the document
          example: amortization-schedule-q1-2026.pdf
          type: string
        fileSize:
          description: File size in bytes
          example: 204800
          type: integer
        hash:
          description: SHA-256 hash of the document content for integrity verification
          example: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
          type: string
        id:
          description: Unique identifier of the document
          example: b8c9d0e1-f2a3-4567-1234-678901234567
          format: uuid
          type: string
        lifecycleEventId:
          description: Identifier of the lifecycle event this document belongs to
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        uri:
          description: Storage URI where the document can be accessed
          example: https://storage.example.com/documents/amortization-schedule-q1-2026.pdf
          type: string
      type: object
    DraftAmortizationRequest:
      properties:
        description:
          description: Optional description with additional information about the amortization lifecycle event
          example: First amortization event for bond series 2026
          type: string
        executionDate:
          description: Execution date of the amortization lifecycle event
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this amortization lifecycle event
          example: my-ext-id-123
          type: string
        name:
          description: Human-readable name of the amortization lifecycle event
          example: Amortization Q1 2026
          type: string
        recordDate:
          description: Record date of the amortization lifecycle event
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        totalAmount:
          description: Total amortization amount represented as decimal string
          example: '10000.00'
          format: decimal
          type: string
      required:
      - executionDate
      - name
      - recordDate
      - totalAmount
      type: object
    DraftAssetClassCapabilityRequest:
      properties:
        capabilityId:
          description: UUID of the capability
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        capabilityVersion:
          description: Semantic version of the capability to use
          example: 1.0.0
          type: string
      required:
      - capabilityId
      - capabilityVersion
      type: object
    DraftAssetClassCustomDataFieldRequest:
      properties:
        immutable:
          description: Whether this field cannot be changed after creation
          example: false
          type: boolean
        mandatory:
          description: Whether this field must be provided when creating an asset
          example: true
          type: boolean
        name:
          description: Internal name of the custom data field
          example: maturityDate
          type: string
        typeHint:
          description: Data type hint for the field (e.g. string, uint8, boolean)
          enum:
          - string
          - uint8
          - boolean
          example: string
          type: string
      required:
      - immutable
      - mandatory
      - name
      - typeHint
      type: object
    DraftAssetClassRequest:
      properties:
        capabilities:
          description: Capabilities to associate with the asset class
          items:
            $ref: '#/components/schemas/DraftAssetClassCapabilityRequest'
          type: array
        customDataSchema:
          description: Optional custom data schema fields for the asset class
          items:
            $ref: '#/components/schemas/DraftAssetClassCustomDataFieldRequest'
          type: array
        metadataSchema:
          description: Optional metadata keys the asset class supports
          example:
          - ISIN
          - LEI
          items:
            type: string
          type: array
        name:
          description: Human-readable name of the asset class
          example: Bond Asset Class
          type: string
        networkIds:
          description: Network identifiers the asset class will be registered on; defaults to ["default"] if omitted
          example:
          - default
          items:
            type: string
          type: array
        roleDefinitions:
          description: Role definitions for the asset class
          items:
            $ref: '#/components/schemas/DraftAssetClassRoleDefinitionRequest'
          type: array
      required:
      - capabilities
      - name
      - roleDefinitions
      type: object
    DraftAssetClassRoleDefinitionRequest:
      properties:
        description:
          description: Description of the role's purpose
          example: Main investor role
          type: string
        label:
          description: Human-readable label for the role
          example: Investor
          type: string
        name:
          description: Internal name of the role
          example: Investor
          type: string
      required:
      - description
      - label
      - name
      type: object
    DraftAssetRequest:
      properties:
        complianceControllerEntityId:
          description: DLT account ID of the compliance controller entity
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the asset
          enum:
          - ALLOWLIST
          - BLOCKLIST
          example: ALLOWLIST
          type: string
        country:
          description: ISO country code of the asset jurisdiction
          example: ES
          type: string
        decimals:
          description: Number of decimal places for the token (0–255)
          example: 2
          maximum: 255
          minimum: 0
          type: integer
        description:
          description: Detailed description of the asset
          example: Token representing a real-world asset
          type: string
        externalId:
          description: External reference identifier for the asset
          example: EXT-001
          type: string
        issuerDltAccountId:
          description: DLT account ID of the asset issuer
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/IssuanceLifecycleData'
          description: Lifecycle payment configuration
        maxSupply:
          description: Maximum supply of asset tokens
          example: '1000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the asset
          example: My Asset
          type: string
        symbol:
          description: Token ticker symbol
          example: MYA
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/IssuanceValuationData'
          description: Valuation data for the asset
      required:
      - complianceControllerEntityId
      - country
      - description
      - externalId
      - issuerDltAccountId
      - lifecycleData
      - name
      - symbol
      - valuationData
      type: object
    DraftBasicBondRequest:
      properties:
        complianceControllerEntityId:
          description: DLT account ID of the compliance controller entity
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the bond
          enum:
          - ALLOWLIST
          - BLOCKLIST
          example: ALLOWLIST
          type: string
        country:
          description: ISO country code of the bond jurisdiction
          example: ES
          type: string
        coupon:
          allOf:
          - $ref: '#/components/schemas/IssuanceCouponRequest'
          description: Optional coupon configuration for coupon-paying bonds
        decimals:
          description: Number of decimal places for the token (0–255)
          example: 2
          maximum: 255
          minimum: 0
          type: integer
        description:
          description: Detailed description of the bond
          example: A tokenized fixed-income bond instrument
          type: string
        externalId:
          description: External reference identifier for the bond
          example: BOND-001
          type: string
        isin:
          description: ISIN code of the bond
          example: ES0000000001
          type: string
        issuerDltAccountId:
          description: DLT account ID of the bond issuer
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/IssuanceLifecycleData'
          description: Lifecycle payment configuration
        maturityDate:
          description: Bond maturity date
          example: 2031-01-01 00:00:00+00:00
          format: date-time
          type: string
        maxSupply:
          description: Maximum supply of bond tokens
          example: '5000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the bond
          example: My Basic Bond
          type: string
        startDate:
          description: Bond start date
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        symbol:
          description: Token ticker symbol
          example: BBD
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/IssuanceValuationData'
          description: Valuation data for the bond
      required:
      - complianceControllerEntityId
      - country
      - description
      - externalId
      - isin
      - issuerDltAccountId
      - lifecycleData
      - maturityDate
      - name
      - startDate
      - symbol
      - valuationData
      type: object
    DraftCouponRequest:
      properties:
        accrualPeriodEndDate:
          description: End date of the accrual period
          example: 2026-04-01 00:00:00+00:00
          format: date-time
          type: string
        accrualPeriodStartDate:
          description: Start date of the accrual period
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        dayCount:
          description: Day count convention used for coupon accrual calculation
          example: ACT/360
          type: string
        description:
          description: Optional description with additional information about the coupon lifecycle event
          example: Quarterly coupon payment for bond holders
          type: string
        effectiveRate:
          description: Effective interest rate applied to the coupon (decimal string)
          example: '0.0525'
          format: decimal
          type: string
        executionDate:
          description: Execution date of the coupon lifecycle event
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this coupon lifecycle event
          example: my-ext-id-123
          type: string
        name:
          description: Human-readable name of the coupon lifecycle event
          example: Coupon payment Q1 2026
          type: string
        recordDate:
          description: Record date of the coupon lifecycle event
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
      required:
      - dayCount
      - executionDate
      - name
      - recordDate
      type: object
    DraftLoansPortfolioRequest:
      properties:
        complianceControllerEntityId:
          description: DLT account ID of the compliance controller entity
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the portfolio
          enum:
          - ALLOWLIST
          - BLOCKLIST
          example: ALLOWLIST
          type: string
        country:
          description: ISO country code of the portfolio jurisdiction
          example: ES
          type: string
        decimals:
          description: Number of decimal places for the token (0–255)
          example: 6
          maximum: 255
          minimum: 0
          type: integer
        description:
          description: Detailed description of the portfolio
          example: A diversified loans portfolio token
          type: string
        externalId:
          description: External reference identifier for the portfolio
          example: LP-001
          type: string
        issuerDltAccountId:
          description: DLT account ID of the portfolio issuer
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/IssuanceLifecycleData'
          description: Lifecycle payment configuration
        loansPortfolioData:
          allOf:
          - $ref: '#/components/schemas/IssuanceLoansPortfolioData'
          description: Loans portfolio type and distribution configuration
        maxSupply:
          description: Maximum supply of portfolio tokens
          example: '10000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the loans portfolio
          example: My Loans Portfolio
          type: string
        symbol:
          description: Token ticker symbol
          example: LPT
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/IssuanceValuationData'
          description: Valuation data for the portfolio
      required:
      - complianceControllerEntityId
      - country
      - description
      - externalId
      - issuerDltAccountId
      - lifecycleData
      - loansPortfolioData
      - name
      - symbol
      - valuationData
      type: object
    DraftTokenizedCreditRequest:
      properties:
        collateral:
          allOf:
          - $ref: '#/components/schemas/IssuanceTCCollateralData'
          description: Optional collateral information
        complianceControllerEntityId:
          description: DLT account ID of the compliance controller entity
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the credit
          enum:
          - ALLOWLIST
          - BLOCKLIST
          example: ALLOWLIST
          type: string
        country:
          description: ISO country code of the credit jurisdiction
          example: ES
          type: string
        debtorEntityParty:
          allOf:
          - $ref: '#/components/schemas/IssuanceAssetPartyRequest'
          description: Debtor party information
        decimals:
          description: Number of decimal places for the token (0–255)
          example: 6
          maximum: 255
          minimum: 0
          type: integer
        deed:
          allOf:
          - $ref: '#/components/schemas/IssuanceTCDeedRequest'
          description: Optional loan deed details
        description:
          description: Detailed description of the tokenized credit
          example: A tokenized corporate credit facility
          type: string
        externalId:
          description: External reference identifier for the credit
          example: TC-001
          type: string
        guarantorEntityParty:
          allOf:
          - $ref: '#/components/schemas/IssuanceAssetPartyRequest'
          description: Optional guarantor party information
        interest:
          allOf:
          - $ref: '#/components/schemas/IssuanceTCInterestRequest'
          description: Interest terms for the credit
        interestType:
          description: Interest rate type of the credit
          enum:
          - FIXED
          example: FIXED
          type: string
        issuerDltAccountId:
          description: DLT account ID of the credit issuer
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/IssuanceLifecycleData'
          description: Lifecycle payment configuration
        maturityDate:
          description: Maturity date of the credit
          example: 2031-01-15 00:00:00+00:00
          format: date-time
          type: string
        maxSupply:
          description: Maximum supply of credit tokens
          example: '5000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the tokenized credit
          example: My Tokenized Credit
          type: string
        originatorAccountId:
          description: DLT account ID of the originator
          example: c3d4e5f6-7890-1234-abcd-ef0123456789
          format: uuid
          type: string
        performanceStatus:
          allOf:
          - $ref: '#/components/schemas/IssuanceTCPerformanceStatusInput'
          description: Optional performance status at drafting time
        repaymentType:
          description: Repayment type of the credit
          enum:
          - BULLET
          - AMORTIZING
          example: BULLET
          type: string
        risk:
          allOf:
          - $ref: '#/components/schemas/IssuanceTCRiskRequest'
          description: Optional credit risk metrics
        servicerAccountId:
          description: DLT account ID of the servicer
          example: a1b2c3d4-5678-9012-efab-cdef01234567
          format: uuid
          type: string
        signingDate:
          description: Date the credit agreement was signed
          example: 2026-01-15 00:00:00+00:00
          format: date-time
          type: string
        structureType:
          description: Structure type of the credit facility
          enum:
          - RCF
          - TERM_LOAN
          example: TERM_LOAN
          type: string
        symbol:
          description: Token ticker symbol
          example: TCA
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/IssuanceValuationData'
          description: Valuation data for the credit
      required:
      - complianceControllerEntityId
      - country
      - debtorEntityParty
      - description
      - externalId
      - interest
      - interestType
      - issuerDltAccountId
      - lifecycleData
      - maturityDate
      - name
      - originatorAccountId
      - repaymentType
      - servicerAccountId
      - signingDate
      - structureType
      - symbol
      - valuationData
      type: object
    Edit:
      properties:
        tokenizedCreditId:
          description: Unique identifier of the updated tokenized credit
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
      type: object
    EditAssetClassDraftCapabilityRequest:
      properties:
        capabilityId:
          description: UUID of the capability
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        capabilityVersion:
          description: Semantic version of the capability to use
          example: 1.0.0
          type: string
      required:
      - capabilityId
      - capabilityVersion
      type: object
    EditAssetClassDraftCustomDataFieldRequest:
      properties:
        immutable:
          description: Whether this field cannot be changed after creation
          example: false
          type: boolean
        mandatory:
          description: Whether this field must be provided when creating an asset
          example: true
          type: boolean
        name:
          description: Internal name of the custom data field
          example: maturityDate
          type: string
        typeHint:
          description: Data type hint for the field (e.g. string, uint8, boolean)
          enum:
          - string
          - uint8
          - boolean
          example: string
          type: string
      required:
      - immutable
      - mandatory
      - name
      - typeHint
      type: object
    EditAssetClassDraftRequest:
      properties:
        capabilities:
          description: Capabilities to associate with the asset class
          items:
            $ref: '#/components/schemas/EditAssetClassDraftCapabilityRequest'
          type: array
        customDataSchema:
          description: Optional custom data schema fields for the asset class
          items:
            $ref: '#/components/schemas/EditAssetClassDraftCustomDataFieldRequest'
          type: array
        metadataSchema:
          description: Optional metadata keys the asset class supports
          example:
          - ISIN
          - LEI
          items:
            type: string
          type: array
        name:
          description: Human-readable name of the asset class
          example: Bond Asset Class
          type: string
        networkIds:
          description: Network identifiers the asset class will be registered on; defaults to ["default"] if omitted
          example:
          - default
          items:
            type: string
          type: array
        roleDefinitions:
          description: Role definitions for the asset class
          items:
            $ref: '#/components/schemas/EditAssetClassDraftRoleDefinitionRequest'
          type: array
      required:
      - capabilities
      - name
      - roleDefinitions
      type: object
    EditAssetClassDraftRoleDefinitionRequest:
      properties:
        description:
          description: Description of the role's purpose
          example: Main investor role
          type: string
        label:
          description: Human-readable label for the role
          example: Investor
          type: string
        name:
          description: Internal name of the role
          example: Investor
          type: string
      required:
      - description
      - label
      - name
      type: object
    EditAssetDraftRequest:
      properties:
        complianceControllerEntityId:
          description: DLT account ID of the compliance controller entity
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the asset
          enum:
          - ALLOWLIST
          - BLOCKLIST
          example: ALLOWLIST
          type: string
        country:
          description: ISO country code of the asset jurisdiction
          example: ES
          type: string
        decimals:
          description: Number of decimal places for the token (0–255)
          example: 2
          maximum: 255
          minimum: 0
          type: integer
        description:
          description: Detailed description of the asset
          example: Token representing a real-world asset
          type: string
        externalId:
          description: External reference identifier for the asset
          example: EXT-001
          type: string
        issuerDltAccountId:
          description: DLT account ID of the asset issuer
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/IssuanceLifecycleData'
          description: Lifecycle payment configuration
        maxSupply:
          description: Maximum supply of asset tokens
          example: '1000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the asset
          example: My Asset
          type: string
        symbol:
          description: Token ticker symbol
          example: MYA
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/IssuanceValuationData'
          description: Valuation data for the asset
      required:
      - complianceControllerEntityId
      - country
      - description
      - externalId
      - issuerDltAccountId
      - lifecycleData
      - name
      - symbol
      - valuationData
      type: object
    EditBasicBondDraftRequest:
      properties:
        complianceControllerEntityId:
          description: DLT account ID of the compliance controller entity
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the bond
          enum:
          - ALLOWLIST
          - BLOCKLIST
          example: ALLOWLIST
          type: string
        country:
          description: ISO country code of the bond jurisdiction
          example: ES
          type: string
        coupon:
          allOf:
          - $ref: '#/components/schemas/IssuanceCouponRequest'
          description: Optional coupon configuration for coupon-paying bonds
        decimals:
          description: Number of decimal places for the token (0–255)
          example: 2
          maximum: 255
          minimum: 0
          type: integer
        description:
          description: Detailed description of the bond
          example: A tokenized fixed-income bond instrument
          type: string
        externalId:
          description: External reference identifier for the bond
          example: BOND-001
          type: string
        isin:
          description: ISIN code of the bond
          example: ES0000000001
          type: string
        issuerDltAccountId:
          description: DLT account ID of the bond issuer
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/IssuanceLifecycleData'
          description: Lifecycle payment configuration
        maturityDate:
          description: Bond maturity date
          example: 2031-01-01 00:00:00+00:00
          format: date-time
          type: string
        maxSupply:
          description: Maximum supply of bond tokens
          example: '5000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the bond
          example: My Basic Bond
          type: string
        startDate:
          description: Bond start date
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        symbol:
          description: Token ticker symbol
          example: BBD
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/IssuanceValuationData'
          description: Valuation data for the bond
      required:
      - complianceControllerEntityId
      - country
      - description
      - externalId
      - isin
      - issuerDltAccountId
      - lifecycleData
      - maturityDate
      - name
      - startDate
      - symbol
      - valuationData
      type: object
    EditLoansPortfolioDraftRequest:
      properties:
        complianceControllerEntityId:
          description: DLT account ID of the compliance controller entity
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the portfolio
          enum:
          - ALLOWLIST
          - BLOCKLIST
          example: ALLOWLIST
          type: string
        country:
          description: ISO country code of the portfolio jurisdiction
          example: ES
          type: string
        decimals:
          description: Number of decimal places for the token (0–255)
          example: 6
          maximum: 255
          minimum: 0
          type: integer
        description:
          description: Detailed description of the portfolio
          example: A diversified loans portfolio token
          type: string
        externalId:
          description: External reference identifier for the portfolio
          example: LP-001
          type: string
        issuerDltAccountId:
          description: DLT account ID of the portfolio issuer
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/IssuanceLifecycleData'
          description: Lifecycle payment configuration
        loansPortfolioData:
          allOf:
          - $ref: '#/components/schemas/IssuanceLoansPortfolioData'
          description: Loans portfolio type and distribution configuration
        maxSupply:
          description: Maximum supply of portfolio tokens
          example: '10000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the loans portfolio
          example: My Loans Portfolio
          type: string
        symbol:
          description: Token ticker symbol
          example: LPT
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/IssuanceValuationData'
          description: Valuation data for the portfolio
      required:
      - complianceControllerEntityId
      - country
      - description
      - externalId
      - issuerDltAccountId
      - lifecycleData
      - loansPortfolioData
      - name
      - symbol
      - valuationData
      type: object
    EditTokenizedCreditRequest:
      properties:
        collateral:
          allOf:
          - $ref: '#/components/schemas/IssuanceTCCollateralData'
          description: Optional collateral information
        complianceControllerEntityId:
          description: DLT account ID of the compliance controller entity
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the credit
          enum:
          - ALLOWLIST
          - BLOCKLIST
          example: ALLOWLIST
          type: string
        country:
          description: ISO country code of the credit jurisdiction
          example: ES
          type: string
        debtorEntityParty:
          allOf:
          - $ref: '#/components/schemas/IssuanceAssetPartyRequest'
          description: Debtor party information
        deed:
          allOf:
          - $ref: '#/components/schemas/IssuanceTCDeedRequest'
          description: Optional loan deed details
        description:
          description: Detailed description of the tokenized credit
          example: A tokenized corporate credit facility
          type: string
        externalId:
          description: External reference identifier for the credit
          example: TC-001
          type: string
        guarantorEntityParty:
          allOf:
          - $ref: '#/components/schemas/IssuanceAssetPartyRequest'
          description: Optional guarantor party information
        interest:
          allOf:
          - $ref: '#/components/schemas/IssuanceTCInterestRequest'
          description: Interest terms for the credit
        interestType:
          description: Interest rate type of the credit
          enum:
          - FIXED
          example: FIXED
          type: string
        issuerDltAccountId:
          description: DLT account ID of the credit issuer
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/IssuanceLifecycleData'
          description: Lifecycle payment configuration
        maturityDate:
          description: Maturity date of the credit
          example: 2031-01-15 00:00:00+00:00
          format: date-time
          type: string
        maxSupply:
          description: Maximum supply of credit tokens
          example: '5000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the tokenized credit
          example: My Tokenized Credit
          type: string
        originatorAccountId:
          description: DLT account ID of the originator
          example: c3d4e5f6-7890-1234-abcd-ef0123456789
          format: uuid
          type: string
        performanceStatus:
          allOf:
          - $ref: '#/components/schemas/IssuanceTCPerformanceStatusInput'
          description: Optional performance status update
        repaymentType:
          description: Repayment type of the credit
          enum:
          - BULLET
          - AMORTIZING
          example: BULLET
          type: string
        risk:
          allOf:
          - $ref: '#/components/schemas/IssuanceTCRiskRequest'
          description: Optional credit risk metrics
        servicerAccountId:
          description: DLT account ID of the servicer
          example: a1b2c3d4-5678-9012-efab-cdef01234567
          format: uuid
          type: string
        signingDate:
          description: Date the credit agreement was signed
          example: 2026-01-15 00:00:00+00:00
          format: date-time
          type: string
        structureType:
          description: Structure type of the credit facility
          enum:
          - RCF
          - TERM_LOAN
          example: TERM_LOAN
          type: string
        symbol:
          description: Token ticker symbol
          example: TCA
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/IssuanceValuationData'
          description: Valuation data for the credit
      required:
      - complianceControllerEntityId
      - country
      - debtorEntityParty
      - description
      - externalId
      - interest
      - interestType
      - issuerDltAccountId
      - lifecycleData
      - maturityDate
      - name
      - originatorAccountId
      - repaymentType
      - servicerAccountId
      - signingDate
      - structureType
      - symbol
      - valuationData
      type: object
    Entity:
      properties:
        accountIds:
          description: List of account identifiers associated with this entity
          example:
          - 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          items:
            format: uuid
            type: string
          type: array
        id:
          description: Unique entity identifier
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        name:
          description: Full legal name of the entity
          example: Acme Corporation
          type: string
        taxId:
          description: Tax identification number
          example: B12345678
          type: string
        type:
          description: 'Entity type

            Possible values: natural, juridical'
          enum:
          - natural
          - juridical
          example: natural
          type: string
      type: object
    ExecuteHoldRequest:
      properties:
        amount:
          description: Amount to execute from the hold
          example: '500.00'
          format: decimal
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        toAccountId:
          description: Identifier of the account to receive the executed amount (optional)
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
      required:
      - amount
      - signerDltAccountId
      type: object
    GeographicalExposure:
      properties:
        country:
          description: ISO 3166-1 alpha-2 country code
          example: ES
          type: string
        percentage:
          description: Percentage of the portfolio exposed to this country (0.0 to 1.0)
          example: 0.35
          type: number
      type: object
    HistoricalPositionRecord:
      properties:
        accountId:
          description: Identifier of the account holding the position
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        allocationAmount:
          description: Amount allocated in this position record
          example: '1000.50'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        heldAmount:
          description: Amount held in this position record
          format: decimal
          type: string
        id:
          description: Unique identifier of the historical position record
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        since:
          description: Start of the time period for this position record
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        until:
          description: End of the time period for this position record (null if still active)
          example: 2026-12-31 23:59:59+00:00
          format: date-time
          type: string
      type: object
    Hold:
      properties:
        assetId:
          description: Identifier of the asset being held
          example: b2c3d4e5-f6a7-8901-bcde-f12345678901
          format: uuid
          type: string
        createdAt:
          description: Timestamp when the hold was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        currentAmount:
          description: Remaining amount still under hold
          example: '500.00'
          format: decimal
          type: string
        escrowAccountId:
          description: Identifier of the escrow account holding the locked tokens
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
          format: uuid
          type: string
        expiration:
          description: Expiration date of the hold
          example: 2026-06-01 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external reference identifier provided by the caller
          example: EXT-HOLD-001
          type: string
        fromAccountId:
          description: Identifier of the account from which the hold was placed
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        id:
          description: Unique identifier of the hold
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        initialAmount:
          description: Original amount placed under hold
          example: '1000.00'
          format: decimal
          type: string
        resolutionHistory:
          description: History of resolution actions applied to this hold
          items:
            $ref: '#/components/schemas/ResolutionHistoryResponse'
          type: array
        status:
          description: 'Current status of the hold

            Possible values: ACTIVE, EXPIRED, CLOSED'
          enum:
          - ACTIVE
          - EXPIRED
          - CLOSED
          example: ACTIVE
          type: string
        toAccountId:
          description: Identifier of the destination account (optional, set on execution)
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        updatedAt:
          description: Timestamp when the hold was last updated
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    HoldingsAssetPaymentLifecycleEvent:
      properties:
        entitlementAmount:
          description: Calculated entitlement amount for this holdings asset payment (decimal string)
          example: '262.50'
          format: decimal
          type: string
        holdingsAssetLifecycleEventId:
          description: Identifier of the holdings asset lifecycle event
          example: a7b8c9d0-e1f2-3456-0123-567890123456
          format: uuid
          type: string
        id:
          description: Unique identifier of the holdings asset payment record
          example: e5f6a7b8-c9d0-1234-ef01-345678901234
          format: uuid
          type: string
        positionPositionsRecordId:
          description: Identifier of the associated position positions record
          example: f6a7b8c9-d0e1-2345-f012-456789012345
          format: uuid
          type: string
        tokenAmount:
          description: Token amount allocated for this holdings asset payment (decimal string)
          example: '50.00'
          format: decimal
          type: string
      type: object
    Id:
      properties:
        id:
          description: Unique identifier of the created or modified resource
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
      type: object
    IdModel:
      properties:
        id:
          description: Unique identifier of the created or updated entity
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
      type: object
    IdResponse:
      properties:
        id:
          description: Unique identifier of the created resource
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
      type: object
    InstrumentModel:
      properties:
        assetContractDltAccountId:
          description: DLT account address of the asset contract
          example: 9.808299006075645e+47
          type: string
        assetId:
          description: Identifier of the underlying asset
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        cashContractDltAccountId:
          description: DLT account address of the cash contract (optional, nil if no cash settlement)
          example: 9.808299006075645e+47
          type: string
        createdAt:
          description: Timestamp when the instrument was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: External system identifier for the instrument
          example: EXT-INSTR-001
          type: string
        id:
          description: Unique instrument identifier
          example: b2c3d4e5-2345-6789-abcd-ef0123456789
          format: uuid
          type: string
        lotSize:
          description: Minimum lot size for trading
          example: '1.00'
          format: decimal
          type: string
        maxQuantity:
          description: Maximum tradeable quantity
          example: '10000.00'
          format: decimal
          type: string
        minQuantity:
          description: Minimum tradeable quantity
          example: '1.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the instrument
          example: Sample Bond Instrument
          type: string
        settlementHubContractDltAccountId:
          description: DLT account address of the settlement hub contract
          example: 9.808299006075645e+47
          type: string
        status:
          description: 'Current status of the instrument

            Possible values: LISTED, DELISTED, PAUSED'
          enum:
          - LISTED
          - DELISTED
          - PAUSED
          example: LISTED
          type: string
        ticker:
          description: Short ticker symbol for the instrument
          example: SBI
          type: string
        updatedAt:
          description: Timestamp when the instrument was last updated
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    InterestPaymentLifecycleEvent:
      properties:
        assetId:
          description: Identifier of the asset to which this lifecycle event belongs
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        createdAt:
          description: Timestamp when the lifecycle event was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        description:
          description: Optional description providing additional details about the lifecycle event
          example: Quarterly coupon payment for bond holders
          type: string
        executionDate:
          description: Execution date of the lifecycle event
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this lifecycle event
          example: my-ext-id-123
          type: string
        id:
          description: Unique identifier of the lifecycle event
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        name:
          description: Human-readable name of the lifecycle event
          example: Coupon payment Q1 2026
          type: string
        recordDate:
          description: Record date of the lifecycle event
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        status:
          description: 'Current status of the lifecycle event

            Possible values: DRAFT, SCHEDULED, READY, EXECUTED, FAILED, CANCELLED'
          enum:
          - DRAFT
          - SCHEDULED
          - READY
          - EXECUTED
          - FAILED
          - CANCELLED
          example: SCHEDULED
          type: string
        totalAmount:
          description: Total interest payment amount (decimal string)
          example: '5250.00'
          format: decimal
          type: string
        type:
          description: 'Type of lifecycle event

            Possible values: COUPON, AMORTIZATION, INTEREST_PAYMENT, REDEMPTION_PAYMENT'
          enum:
          - COUPON
          - AMORTIZATION
          - INTEREST_PAYMENT
          - REDEMPTION_PAYMENT
          example: COUPON
          type: string
        updatedAt:
          description: Timestamp when the lifecycle event was last updated (if applicable)
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    IssuanceAssetPartyRequest:
      properties:
        contact:
          description: Contact email or phone for the party
          example: contact@acme.com
          type: string
        legalName:
          description: Legal name of the party
          example: Acme Corp S.L.
          type: string
        taxId:
          description: Tax identification number of the party
          example: B12345678
          type: string
        type:
          description: Legal entity type
          example: CORPORATE
          type: string
      required:
      - contact
      - legalName
      - taxId
      - type
      type: object
    IssuanceCouponRequest:
      properties:
        couponFrequency:
          description: Frequency of coupon payments
          enum:
          - MONTHLY
          - QUARTERLY
          - YEARLY
          example: QUARTERLY
          type: string
        couponRate:
          description: Coupon interest rate as a decimal percentage
          example: '0.05'
          format: decimal
          type: string
        firstCouponDate:
          description: Date of the first coupon payment
          example: 2026-04-01 00:00:00+00:00
          format: date-time
          type: string
      required:
      - couponFrequency
      - couponRate
      - firstCouponDate
      type: object
    IssuanceLifecycleData:
      properties:
        currency:
          description: Currency used for payments
          example: EUR
          type: string
        paymentMethod:
          description: Payment method (e.g., CASH, TOKEN)
          example: CASH
          type: string
        paymentSmartContract:
          description: Optional smart contract address for payment processing
          example: 9.808299006075645e+47
          type: string
      required:
      - currency
      - paymentMethod
      type: object
    IssuanceLoansPortfolioData:
      properties:
        distributionPolicy:
          description: Distribution policy for portfolio cash flows
          enum:
          - DIRECT_PASSTHROUGH
          - ACCRUAL
          example: DIRECT_PASSTHROUGH
          type: string
        type:
          description: Portfolio structure type
          enum:
          - STATIC
          - REVOLVING
          - MANAGED
          - OPEN
          - CLOSED
          example: STATIC
          type: string
      required:
      - distributionPolicy
      - type
      type: object
    IssuanceTCCollateralData:
      properties:
        totalCollateralValue:
          description: Total value of collateral backing the credit
          example: '2000000.00'
          format: decimal
          type: string
      type: object
    IssuanceTCDeedRequest:
      properties:
        notary:
          description: Name of the signing notary
          example: Notaría Pérez
          type: string
        number:
          description: Deed document number
          example: DEED-2026-001
          type: string
        time:
          description: Date and time of the deed signing
          example: 2026-01-15 10:00:00+00:00
          format: date-time
          type: string
      required:
      - notary
      - number
      - time
      type: object
    IssuanceTCInterestRequest:
      properties:
        baseRateType:
          description: Base rate type used for interest calculation
          enum:
          - NONE
          - EURIBOR
          - 3M
          example: EURIBOR
          type: string
        capRate:
          description: Maximum interest rate cap
          example: '0.10'
          format: decimal
          type: string
        commitmentFee:
          description: Optional commitment fee rate
          example: '0.005'
          format: decimal
          type: string
        dayCount:
          description: Day count convention for interest calculation
          enum:
          - ACTUAL_360
          example: ACTUAL_360
          type: string
        firstAccrualDate:
          description: Date of the first interest accrual
          example: 2026-04-01 00:00:00+00:00
          format: date-time
          type: string
        floorRate:
          description: Minimum interest rate floor
          example: '0.00'
          format: decimal
          type: string
        paymentFrequency:
          description: Frequency of interest payments
          enum:
          - MONTHLY
          - QUARTERLY
          - YEARLY
          example: QUARTERLY
          type: string
        prepaymentPenalty:
          description: Optional prepayment penalty rate
          example: '0.01'
          format: decimal
          type: string
        rateMargin:
          description: Margin added to the base rate
          example: '0.025'
          format: decimal
          type: string
        servicingFee:
          description: Optional servicing fee rate
          example: '0.001'
          format: decimal
          type: string
        utilizationFee:
          description: Optional utilization fee rate
          example: '0.002'
          format: decimal
          type: string
        utilizationFeeType:
          description: Type of utilization fee
          enum:
          - EMBEDDED
          - SEPARATE
          example: EMBEDDED
          type: string
      required:
      - baseRateType
      - dayCount
      - firstAccrualDate
      - paymentFrequency
      - rateMargin
      type: object
    IssuanceTCPerformanceStatusInput:
      properties:
        daysPastDue:
          description: Number of days past the due date
          example: 0
          type: integer
        performanceStatus:
          description: Current performance status of the credit
          enum:
          - PERFORMING
          - NON_PERFORMING
          - DEFAULT
          example: PERFORMING
          type: string
      required:
      - performanceStatus
      type: object
    IssuanceTCRiskRequest:
      properties:
        defaultProbability:
          description: Probability of default as a decimal percentage
          example: '0.02'
          format: decimal
          type: string
        internalRiskGrade:
          description: Internal risk grade classification
          example: BBB
          type: string
        lossGivenDefault:
          description: Loss given default as a decimal percentage
          example: '0.40'
          format: decimal
          type: string
      required:
      - internalRiskGrade
      type: object
    IssuanceV2AddComplianceEligibilityExternalListRequest:
      properties:
        callbackUrl:
          description: Optional URL to receive process completion callback
          example: https://my-service.example.com/callback
          type: string
        contractDltAccountId:
          description: DLT account address of the external compliance list contract
          example: 9.808299006075645e+47
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: 7.986610672740008e+47
          type: string
      required:
      - contractDltAccountId
      - signerDltAccountId
      type: object
    IssuanceV2IdModel:
      properties:
        id:
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          type: string
      type: object
    IssuanceValuationData:
      properties:
        currency:
          description: ISO 4217 currency code
          example: EUR
          type: string
        nominalValue:
          description: Nominal value of the asset
          example: '1000.00'
          format: decimal
          type: string
      required:
      - currency
      - nominalValue
      type: object
    JWK:
      properties:
        crv:
          description: Curve. Used for EC and OKP keys. E.g. P-256, P-384, P-521, Ed25519
          example: Ed25519
          type: string
        e:
          description: RSA public exponent. Used for RSA public keys
          example: AQAB
          type: string
        kid:
          description: Key ID. Unique identifier for the key
          example: 7f320d3a-7e48-4efc-9892-b6245e94698e
          type: string
        kty:
          description: Key type. Identifies the cryptographic algorithm family. E.g. RSA, EC, OKP
          example: OKP
          type: string
        n:
          description: RSA modulus. Used for RSA public keys
          example: 0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw
          type: string
        x:
          description: X coordinate. Used for EC and OKP public keys
          example: wmK6SSAu2E9V7uynkCKEaj5nZJyTvNG4x0KohsRzLpg
          type: string
        y:
          description: Y coordinate. Used for EC public keys
          example: MkFHnQwDDpHsGmPHMFMkGmEhAHKkgTlBgHnTwZqGmJs
          type: string
      type: object
    JWKS:
      properties:
        keys:
          description: Public key list
          items:
            $ref: '#/components/schemas/JWK'
          type: array
      type: object
    LicenseStatusResponse:
      properties:
        license:
          allOf:
          - $ref: '#/components/schemas/license.License'
          description: Installed license details (null if no license is installed)
        status:
          description: 'Current activation status of the license

            Possible values: UNLICENSED, ACTIVE, EXPIRED, GRACE_PERIOD'
          enum:
          - UNLICENSED
          - ACTIVE
          - EXPIRED
          - GRACE_PERIOD
          example: ACTIVE
          type: string
      type: object
    Lifecycle:
      properties:
        currency:
          description: ISO 4217 currency code used for lifecycle payments
          example: EUR
          type: string
        paymentMethod:
          description: Payment method used for distributions
          example: CASH
          type: string
        paymentSmartContract:
          description: Optional DLT address of the payment smart contract
          example: '0xABCDEF1234567890'
          type: string
      type: object
    LifecycleEvent:
      properties:
        assetId:
          description: Identifier of the asset to which this lifecycle event belongs
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        createdAt:
          description: Timestamp when the lifecycle event was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        description:
          description: Optional description providing additional details about the lifecycle event
          example: Quarterly coupon payment for bond holders
          type: string
        executionDate:
          description: Execution date of the lifecycle event
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this lifecycle event
          example: my-ext-id-123
          type: string
        id:
          description: Unique identifier of the lifecycle event
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        name:
          description: Human-readable name of the lifecycle event
          example: Coupon payment Q1 2026
          type: string
        recordDate:
          description: Record date of the lifecycle event
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        status:
          description: 'Current status of the lifecycle event

            Possible values: DRAFT, SCHEDULED, READY, EXECUTED, FAILED, CANCELLED'
          enum:
          - DRAFT
          - SCHEDULED
          - READY
          - EXECUTED
          - FAILED
          - CANCELLED
          example: SCHEDULED
          type: string
        type:
          description: 'Type of lifecycle event

            Possible values: COUPON, AMORTIZATION, INTEREST_PAYMENT, REDEMPTION_PAYMENT'
          enum:
          - COUPON
          - AMORTIZATION
          - INTEREST_PAYMENT
          - REDEMPTION_PAYMENT
          example: COUPON
          type: string
        updatedAt:
          description: Timestamp when the lifecycle event was last updated (if applicable)
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    LinkAccountRequest:
      properties:
        accountId:
          description: Identifier of the account to link
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        entityId:
          description: Identifier of the entity to link the account to
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
      type: object
    ListInstrumentProcessRequest:
      properties:
        assetContractDltAccountId:
          description: DLT account address of the asset contract
          example: 9.808299006075645e+47
          type: string
        callbackUrl:
          description: URL to receive the process completion callback
          example: https://example.com/callback
          type: string
        cashContractDltAccountId:
          description: DLT account address of the cash contract
          example: 9.808299006075645e+47
          type: string
        externalId:
          description: External system identifier for the instrument
          example: EXT-INSTR-001
          type: string
        lotSize:
          description: Minimum lot size for trading
          example: '1.00'
          format: decimal
          type: string
        maxQuantity:
          description: Maximum tradeable quantity
          example: '10000.00'
          format: decimal
          type: string
        minQuantity:
          description: Minimum tradeable quantity
          example: '1.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the instrument
          example: Sample Bond Instrument
          type: string
        settlementHubContractDltAccountId:
          description: DLT account address of the settlement hub contract
          example: 9.808299006075645e+47
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        ticker:
          description: Short ticker symbol for the instrument
          example: SBI
          type: string
      required:
      - assetContractDltAccountId
      - lotSize
      - maxQuantity
      - minQuantity
      - name
      - settlementHubContractDltAccountId
      - signerDltAccountId
      - ticker
      type: object
    LoansPortfolio:
      properties:
        assetAccountId:
          description: DLT account identifier used to hold portfolio assets
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        assetType:
          description: Type of asset
          example: LOANS_PORTFOLIO
          type: string
        complianceControllerEntityId:
          description: Entity identifier of the compliance controller
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the portfolio
          example: ALLOWLIST
          type: string
        contractDltAccountId:
          description: DLT account address of the deployed portfolio smart contract
          example: '0xABCDEF1234567890'
          type: string
        country:
          description: ISO 3166-1 alpha-2 country code of the portfolio
          example: ES
          type: string
        createdAt:
          description: Timestamp when the portfolio record was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        creationDate:
          description: Date the portfolio was deployed on the DLT (null if not yet deployed)
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        currentSupply:
          description: Current token supply in circulation
          example: '1000000.00'
          format: decimal
          type: string
        decimals:
          description: Number of decimal places for token amounts
          example: 18
          type: integer
        description:
          description: Optional description of the portfolio
          example: Diversified loan pool for 2026
          type: string
        distributionPolicy:
          description: Distribution policy of the portfolio
          example: PRO_RATA
          type: string
        externalId:
          description: External reference identifier for this portfolio
          example: EXT-LP-001
          type: string
        id:
          description: Unique identifier of the loans portfolio
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        issuerDltAccountId:
          description: DLT account identifier of the portfolio issuer
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/Lifecycle'
          description: Lifecycle payment settings for the portfolio
        maxSupply:
          description: Maximum allowable token supply
          example: '5000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the loans portfolio
          example: My Loan Pool 2026
          type: string
        origin:
          description: Origin of the portfolio record
          enum:
          - INTERNAL
          - EXTERNAL
          example: INTERNAL
          type: string
        paused:
          description: Whether the portfolio transfers are currently paused on the DLT
          example: false
          type: boolean
        portfolioType:
          description: Type of loans portfolio
          example: CLO
          type: string
        status:
          description: Current lifecycle status of the portfolio
          enum:
          - DRAFT
          - ACTIVE
          - PAUSED
          - REJECTED
          - ARCHIVED
          example: DRAFT
          type: string
        symbol:
          description: Ticker symbol of the portfolio
          example: MLP
          type: string
        updatedAt:
          description: Timestamp when the portfolio record was last updated
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/Valuation'
          description: Valuation data for the portfolio
      type: object
    LoginRequest:
      properties:
        email:
          description: User's email address
          example: user@example.com
          type: string
        password:
          description: User's password
          example: s3cr3tP@ssw0rd
          type: string
      required:
      - email
      - password
      type: object
    LoginResponse:
      properties:
        token:
          description: JWT bearer token to use in subsequent authenticated requests
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U
          type: string
      required:
      - token
      type: object
    ManageAssetRolesRequest:
      properties:
        accountId:
          description: Account identifier to apply the role changes to
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        evmAddress:
          description: EVM address of the account on the DLT
          example: 9.808299006075645e+47
          type: string
        roles:
          description: Map of role names to grant/revoke flags
          items:
            additionalProperties:
              type: boolean
            type: object
          type: array
      type: object
    MetadataInstructionRequest:
      properties:
        reason:
          description: Human-readable reason for the instruction
          example: ADMINISTRATIVE_ACTION_MINT
          type: string
        triggerAction:
          description: 'Origin of the instruction. Examples: MANUAL, DIVIDEND, DISTRIBUTION'
          example: MANUAL
          type: string
        triggerEventId:
          description: UUID of the event that originated this instruction (required when triggerAction != MANUAL)
          example: ''
          type: string
      type: object
    MetadataModel:
      properties:
        reason:
          type: string
        triggerAction:
          type: string
        triggerEventId:
          type: string
      type: object
    MintProcessRequest:
      properties:
        accountId:
          description: Identifier of the account to receive the minted position
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        amount:
          description: Amount to mint
          example: '1000.00'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset to mint
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        externalId:
          description: Optional external identifier for this mint process
          example: my-ext-id-123
          type: string
        metadata:
          additionalProperties: true
          description: Optional metadata to associate with the mint transaction
          type: object
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - accountId
      - amount
      - assetId
      - signerDltAccountId
      type: object
    Network:
      properties:
        networkId:
          description: Identifier of the blockchain network
          example: kepler
          type: string
        registeredAt:
          description: Date when it was registered in this network
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
        status:
          description: Status of the registration in this network
          example: REGISTERED
          type: string
        tokenCompliances:
          description: List of token standards supported by this network and their compliance status
          items:
            $ref: '#/components/schemas/TokenStandardCompliance'
          type: array
        version:
          description: Diamond configuration version set on-chain. Null until the asset class is finalized on this network.
          example: 1
          type: integer
      type: object
    OfferingModel:
      properties:
        autoCloseOnEnd:
          description: Whether the offering closes automatically at end date
          example: true
          type: boolean
        autoCloseOnFull:
          description: Whether the offering closes automatically when fully subscribed
          example: true
          type: boolean
        createdAt:
          description: Timestamp when the offering was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        endDate:
          description: Date and time when the offering closes
          example: 2026-03-01 00:00:00+00:00
          format: date-time
          type: string
        id:
          description: Unique offering identifier
          example: c3d4e5f6-3456-789a-bcde-f01234567890
          format: uuid
          type: string
        instrumentId:
          description: Identifier of the instrument being offered
          example: b2c3d4e5-2345-6789-abcd-ef0123456789
          format: uuid
          type: string
        method:
          description: 'Offering method used for price discovery

            Possible values: FIXED_PRICE'
          enum:
          - FIXED_PRICE
          example: FIXED_PRICE
          type: string
        overSubscriptionRule:
          description: 'Rule applied when subscriptions exceed the target

            Possible values: NOT_ALLOWED'
          enum:
          - NOT_ALLOWED
          example: NOT_ALLOWED
          type: string
        price:
          description: Price per share in the offering
          example: '10.00'
          format: decimal
          type: string
        shares:
          description: Total number of shares available in the offering
          example: '100000.00'
          format: decimal
          type: string
        startDate:
          description: Date and time when the offering opens
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        status:
          description: 'Current status of the offering

            Possible values: OPEN, CLOSED'
          enum:
          - OPEN
          - CLOSED
          example: OPEN
          type: string
        subscribedShares:
          description: Number of shares already subscribed
          example: '25000.00'
          format: decimal
          type: string
        timeType:
          description: 'Time type defining the offering window

            Possible values: TIME_WINDOW'
          enum:
          - TIME_WINDOW
          example: TIME_WINDOW
          type: string
        underSubscriptionRule:
          description: 'Rule applied when subscriptions fall below the target

            Possible values: NOT_ALLOWED'
          enum:
          - NOT_ALLOWED
          example: NOT_ALLOWED
          type: string
        updatedAt:
          description: Timestamp when the offering was last updated
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    OutstandingBalance:
      properties:
        outstandingBalance:
          description: Total outstanding balance of tokenized credits
          example: '2500000.00'
          format: decimal
          type: string
      type: object
    Page:
      properties:
        page:
          description: Current page index (starting from 0)
          example: 0
          type: integer
        size:
          description: Number of items returned in the current page
          example: 20
          type: integer
        totalElements:
          description: Total number of elements matching the query
          example: 93
          type: integer
        totalPages:
          description: Total number of available pages
          example: 5
          type: integer
      type: object
    PageResponse:
      properties:
        data:
          description: List of items returned in the current page
        page:
          allOf:
          - $ref: '#/components/schemas/Page'
          description: Pagination metadata
      type: object
    PaymentModel:
      properties:
        cashTransactionRecord:
          allOf:
          - $ref: '#/components/schemas/CashTransactionModel'
          description: Associated cash transaction record for this payment
        id:
          description: Unique identifier of the payment record
          example: d4e5f6a7-b8c9-0123-def0-234567890123
          format: uuid
          type: string
        positionPositionsRecord:
          allOf:
          - $ref: '#/components/schemas/PositionModel'
          description: Associated position record for this payment
        securitiesTransactionRecord:
          allOf:
          - $ref: '#/components/schemas/SecuritiesTransactionModel'
          description: Associated securities transaction record for this payment
        status:
          description: 'Current status of the payment

            Possible values: PENDING, COMPLETED, FAILED'
          enum:
          - PENDING
          - COMPLETED
          - FAILED
          example: COMPLETED
          type: string
      type: object
    PositionModel:
      properties:
        accountId:
          description: Identifier of the account holding the position
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        amount:
          description: Current token amount in this position
          example: '1000.50'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        heldAmount:
          description: Current token amount held in this position
          format: decimal
          type: string
        id:
          description: Unique identifier of the position
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
      type: object
    PrimaryMarketModel:
      properties:
        contractDltAccountId:
          description: DLT account address of the market smart contract
          example: 9.808299006075645e+47
          type: string
        createdAt:
          description: Timestamp when the primary market was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier
          example: my-ext-id-123
          type: string
        id:
          description: Unique primary market identifier
          example: a1b2c3d4-1234-5678-9abc-def012345678
          format: uuid
          type: string
        marketOperatorAccountId:
          description: Identifier of the account operating the market
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        name:
          description: Human-readable name of the primary market
          example: Sample Primary Market
          type: string
        origin:
          description: 'Origin of the primary market

            Possible values: INTERNAL, EXTERNAL'
          enum:
          - INTERNAL
          - EXTERNAL
          example: INTERNAL
          type: string
        updatedAt:
          description: Timestamp when the primary market was last updated
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    ReclaimHoldRequest:
      properties:
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - signerDltAccountId
      type: object
    RedemptionPaymentLifecycleEvent:
      properties:
        assetId:
          description: Identifier of the asset to which this lifecycle event belongs
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        createdAt:
          description: Timestamp when the lifecycle event was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        description:
          description: Optional description providing additional details about the lifecycle event
          example: Quarterly coupon payment for bond holders
          type: string
        executionDate:
          description: Execution date of the lifecycle event
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this lifecycle event
          example: my-ext-id-123
          type: string
        id:
          description: Unique identifier of the lifecycle event
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        name:
          description: Human-readable name of the lifecycle event
          example: Coupon payment Q1 2026
          type: string
        recordDate:
          description: Record date of the lifecycle event
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        status:
          description: 'Current status of the lifecycle event

            Possible values: DRAFT, SCHEDULED, READY, EXECUTED, FAILED, CANCELLED'
          enum:
          - DRAFT
          - SCHEDULED
          - READY
          - EXECUTED
          - FAILED
          - CANCELLED
          example: SCHEDULED
          type: string
        totalEntitlementAmount:
          description: Total entitlement amount for all token holders (decimal string)
          example: '100000.00'
          format: decimal
          type: string
        totalTokenAmount:
          description: Total token amount redeemed (decimal string)
          example: '1000.00'
          format: decimal
          type: string
        type:
          description: 'Type of lifecycle event

            Possible values: COUPON, AMORTIZATION, INTEREST_PAYMENT, REDEMPTION_PAYMENT'
          enum:
          - COUPON
          - AMORTIZATION
          - INTEREST_PAYMENT
          - REDEMPTION_PAYMENT
          example: COUPON
          type: string
        updatedAt:
          description: Timestamp when the lifecycle event was last updated (if applicable)
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    RegisterPrimaryMarketProcessRequest:
      properties:
        callbackUrl:
          description: Callback URL for async process notifications (optional)
          example: https://example.com/callback
          type: string
        name:
          description: Name of the primary market
          example: Primary Market A
          type: string
        primaryMarketContractDltAccountId:
          description: DLT account ID of the primary market contract
          example: 1.0392900530792776e+47
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - name
      - primaryMarketContractDltAccountId
      - signerDltAccountId
      type: object
    RegisterSettlementOptionProcessRequest:
      properties:
        callbackUrl:
          description: Callback URL for async process notifications (optional)
          example: https://example.com/callback
          type: string
        cashContractDltAccountId:
          description: DLT account ID of the cash contract
          example: 1.0392900530792776e+47
          type: string
        externalId:
          description: Optional external identifier for this settlement option
          example: my-ext-id-123
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        tokenPolicy:
          description: 'Token policy for this settlement option

            Possible values: APPROVAL, HOLD'
          enum:
          - APPROVAL
          - HOLD
          example: APPROVAL
          type: string
      required:
      - cashContractDltAccountId
      - signerDltAccountId
      - tokenPolicy
      type: object
    ReleaseHoldRequest:
      properties:
        amount:
          description: Amount to release from the hold
          example: '500.00'
          format: decimal
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - amount
      - signerDltAccountId
      type: object
    RemoveComplianceEligibilityAccountRequest:
      properties:
        accountId:
          description: Unique identifier of the account to remove
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to receive process completion callback
          example: https://my-service.example.com/callback
          type: string
      required:
      - accountId
      type: object
    RemoveComplianceEligibilityExternalListAccountRequest:
      properties:
        SignerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        accountId:
          description: Identifier of the account to remove
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
      required:
      - SignerDltAccountId
      - accountId
      type: object
    RemoveComplianceEligibilityExternalListRequest:
      properties:
        callbackUrl:
          description: Optional URL to receive process completion callback
          example: https://my-service.example.com/callback
          type: string
        contractDltAccountId:
          description: DLT account address of the external compliance list contract to remove
          example: 9.808299006075645e+47
          type: string
      required:
      - contractDltAccountId
      type: object
    RemoveHoldingsAssetRequest:
      properties:
        callbackUrl:
          description: Optional URL to receive process completion callback
          example: https://my-service.example.com/callback
          type: string
      type: object
    ResolutionHistoryResponse:
      properties:
        actionType:
          description: 'Type of action applied to the hold

            Possible values: EXECUTION, RELEASE'
          enum:
          - EXECUTION
          - RELEASE
          example: EXECUTION
          type: string
        amount:
          description: Amount involved in this resolution action
          example: '500.00'
          format: decimal
          type: string
        createdAt:
          description: Timestamp when this resolution was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        id:
          description: Unique identifier of the resolution history entry
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        updatedAt:
          description: Timestamp when this resolution was last updated
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
      type: object
    RetriedTransaction:
      properties:
        newTxHash:
          description: 'Hash of the newly submitted transaction to the DLT.

            This value changes if any parameter (e.g., gas price, nonce) is modified.'
          example: 0xa1b2c3d4e5f607...
          type: string
      type: object
    RetryTransactionRequest:
      type: object
    RoleDefinition:
      properties:
        description:
          description: Detailed description of what the role can do
          example: Allows burning and minting tokens
          type: string
        label:
          description: Friendly label for display
          example: Token Minter
          type: string
        name:
          description: Technical name of the role
          example: MINTER
          type: string
      type: object
    SecuritiesTransactionModel:
      properties:
        id:
          description: Unique identifier of the securities transaction record
          example: c3d4e5f6-a7b8-9012-cdef-123456789012
          format: uuid
          type: string
        txHash:
          description: Blockchain transaction hash
          example: 1.988780701777993e+79
          type: string
      type: object
    SettleAllocationProcessRequest:
      properties:
        callbackUrl:
          description: URL to receive the process completion callback
          example: https://example.com/callback
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - signerDltAccountId
      type: object
    SettlementCalendarModel:
      properties:
        isOpen:
          description: Whether the calendar is open on the queried date
          example: true
          type: boolean
        name:
          description: Name of the calendar entry (e.g., for special days)
          example: Christmas Day
          type: string
        timeframes:
          description: Active time frames during which the calendar is open
          items:
            $ref: '#/components/schemas/SettlementTimeFrameModel'
          type: array
      type: object
    SettlementHubAssetModel:
      properties:
        assetId:
          description: ID of the assigned asset
          example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
          format: uuid
          type: string
        createdAt:
          description: Creation timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        id:
          description: Unique identifier of the settlement hub asset assignment
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        settlementHubId:
          description: ID of the settlement hub
          example: a1b2c3d4-e5f6-7a8b-9c0d-e1f2a3b4c5d6
          format: uuid
          type: string
        updatedAt:
          description: Last update timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    SettlementHubModel:
      properties:
        acceptancePolicy:
          description: 'Policy for accepting settlement instructions

            Possible values: QUEUE, REJECT'
          enum:
          - QUEUE
          - REJECT
          example: QUEUE
          type: string
        contractDltAccountId:
          description: DLT account ID of the settlement hub smart contract
          example: '0xabc123def456'
          type: string
        createdAt:
          description: Creation timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        daysUntilExpiration:
          description: Number of days until instructions expire
          example: 3
          type: integer
        expirationType:
          description: 'Type of expiration for settlement instructions

            Possible values: NATURAL, OFFICE'
          enum:
          - NATURAL
          - OFFICE
          example: NATURAL
          type: string
        externalId:
          description: Optional external identifier for this settlement hub
          example: my-ext-id-123
          type: string
        id:
          description: Unique identifier
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        name:
          description: Human-readable name of the settlement hub
          example: Main Settlement Hub
          type: string
        origin:
          description: 'Origin of the settlement hub

            Possible values: INTERNAL, EXTERNAL'
          enum:
          - INTERNAL
          - EXTERNAL
          example: INTERNAL
          type: string
        settlementOperatorAccountId:
          description: Account ID of the settlement operator
          example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
          format: uuid
          type: string
        updatedAt:
          description: Last update timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    SettlementLegModel:
      properties:
        amount:
          description: Amount transferred in this leg
          example: '1000.50'
          format: decimal
          type: string
        assetType:
          description: 'Type of asset transferred in this leg

            Possible values: TOKEN, CASH'
          enum:
          - TOKEN
          - CASH
          example: TOKEN
          type: string
        createdAt:
          description: Creation timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        fromAccountId:
          description: Account ID of the sender
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        id:
          description: Unique identifier of the settlement leg
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        toAccountId:
          description: Account ID of the recipient
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        tokenContractDltAccountId:
          description: DLT account ID of the token smart contract
          example: '0xabc123def456'
          type: string
        updatedAt:
          description: Last update timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    SettlementModel:
      properties:
        createdAt:
          description: Creation timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        id:
          description: Unique identifier of the settlement
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        legs:
          description: Settlement legs (token and cash transfers on the DLT)
          items:
            $ref: '#/components/schemas/SettlementLegModel'
          type: array
        referenceId:
          description: Reference ID (e.g., instruction or process ID)
          example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
          format: uuid
          type: string
        settlementPrimaryMarketId:
          description: ID of the settlement primary market
          example: a1b2c3d4-e5f6-7a8b-9c0d-e1f2a3b4c5d6
          format: uuid
          type: string
        type:
          description: Type of settlement process
          example: CREATE
          type: string
        updatedAt:
          description: Last update timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    SettlementOptionModel:
      properties:
        cashContractDltAccountId:
          description: DLT account ID of the cash token smart contract
          example: '0xdef789abc012'
          type: string
        createdAt:
          description: Creation timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this settlement option
          example: my-ext-id-123
          type: string
        id:
          description: Unique identifier of the settlement option
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        settlementHubId:
          description: ID of the settlement hub this option belongs to
          example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
          format: uuid
          type: string
        tokenPolicy:
          description: 'Token policy type governing settlement execution

            Possible values: APPROVAL, HOLD'
          enum:
          - APPROVAL
          - HOLD
          example: HOLD
          type: string
        updatedAt:
          description: Last update timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    SettlementPrimaryMarketModel:
      properties:
        createdAt:
          description: Creation timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        id:
          description: Unique identifier of the settlement primary market
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        name:
          description: Name of the primary market
          example: Primary Market Alpha
          type: string
        primaryMarketContractDltAccountId:
          description: DLT account ID of the primary market smart contract
          example: '0xabc123def456789'
          type: string
        settlementHubId:
          description: ID of the settlement hub this primary market is registered to
          example: 3f1b2c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
          format: uuid
          type: string
        updatedAt:
          description: Last update timestamp
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    SettlementTimeFrameModel:
      properties:
        endTime:
          description: 'End time of the window (format: HH:MM)'
          example: 1020
          type: string
        startTime:
          description: 'Start time of the window (format: HH:MM)'
          example: 09:00
          type: string
      type: object
    SettlementWeeklyCalendarModel:
      properties:
        weeklySchedule:
          description: Weekly schedule entries, one per configured day of week
          items:
            $ref: '#/components/schemas/SettlementWeeklyDayModel'
          type: array
      type: object
    SettlementWeeklyDayModel:
      properties:
        dayOfWeek:
          description: 'Day of the week

            Possible values: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY'
          enum:
          - MONDAY
          - TUESDAY
          - WEDNESDAY
          - THURSDAY
          - FRIDAY
          - SATURDAY
          - SUNDAY
          example: MONDAY
          type: string
        id:
          description: Unique identifier of the weekly day entry
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        timeFrames:
          description: Time frames during which the calendar is open on this day
          items:
            $ref: '#/components/schemas/SettlementTimeFrameModel'
          type: array
      type: object
    SettlementYearlyCalendarModel:
      properties:
        specialOperatingDays:
          description: List of special operating days
          items:
            $ref: '#/components/schemas/SettlementYearlyDayModel'
          type: array
        year:
          description: Year the calendar applies to (optional, nil means all years)
          example: 2026
          type: integer
      type: object
    SettlementYearlyDayModel:
      properties:
        date:
          description: 'Date of the special operating day (format: YYYY-MM-DD)'
          example: 2026-12-25
          type: string
        id:
          description: Unique identifier of the yearly day entry
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        name:
          description: Name of the special day (optional)
          example: Christmas Day
          type: string
        timeframes:
          description: Time frames applicable for this special day
          items:
            $ref: '#/components/schemas/SettlementTimeFrameModel'
          type: array
      type: object
    StartAddComplianceEligibilityAccountRequest:
      properties:
        accountId:
          description: Unique identifier of the account to add
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to receive process completion callback
          example: https://my-service.example.com/callback
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: 7.986610672740008e+47
          type: string
      required:
      - accountId
      - signerDltAccountId
      type: object
    StartApprovalProcessRequest:
      properties:
        allowanceAmount:
          description: Amount to approve
          example: '1000.00'
          format: decimal
          type: string
        contractDltAccountId:
          description: ERC20 token contract address
          example: 1.0392900530792776e+47
          type: string
        signerDltAccountId:
          description: DLT address of the account granting the approval (token owner)
          example: 7.986610672740008e+47
          type: string
        spenderDltAccountId:
          description: DLT address of the account being approved to spend
          example: 9.808299006075645e+47
          type: string
      required:
      - allowanceAmount
      - contractDltAccountId
      - signerDltAccountId
      - spenderDltAccountId
      type: object
    SubscriptionModel:
      properties:
        cash:
          description: Cash amount committed to the subscription (optional, nil if no cash settlement)
          example: '10000.00'
          format: decimal
          type: string
        createdAt:
          description: Timestamp when the subscription was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        fromCashAccountId:
          description: Identifier of the account from which cash is debited (optional, nil if no cash settlement)
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        holdId:
          description: Hold identifier in the settlement system
          example: '1'
          format: decimal
          type: string
        id:
          description: Unique subscription identifier
          example: d4e5f6a7-4567-89ab-cdef-012345678901
          format: uuid
          type: string
        offeringId:
          description: Identifier of the offering this subscription belongs to
          example: c3d4e5f6-3456-789a-bcde-f01234567890
          format: uuid
          type: string
        shares:
          description: Number of shares subscribed
          example: '1000.00'
          format: decimal
          type: string
        status:
          description: 'Current status of the subscription

            Possible values: CREATED, ALLOCATED, SETTLED, CANCELLED'
          enum:
          - CREATED
          - ALLOCATED
          - SETTLED
          - CANCELLED
          example: CREATED
          type: string
        toCashAccountId:
          description: Identifier of the account to which cash is transferred (optional, nil if no cash settlement)
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        toTokenAccountId:
          description: Identifier of the account to which tokens will be transferred
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        updatedAt:
          description: Timestamp when the subscription was last updated
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
      type: object
    TokenStandardCompliance:
      properties:
        missingCapabilities:
          description: List of capability IDs missing to reach full compliance
          example:
          - '["f4585827-0aa5-444c-a995-de62b5f5ac34"]'
          items:
            type: string
          type: array
        standard:
          description: Technical name of the standard
          example: ERC-20
          type: string
        status:
          description: Current compliance status
          example: COMPLIANT
          type: string
      type: object
    TokenizedCredit:
      properties:
        assetType:
          description: Type of asset
          example: TOKENIZED_CREDIT
          type: string
        collateral:
          allOf:
          - $ref: '#/components/schemas/TokenizedCreditCollateral'
          description: Optional collateral information
        complianceControllerEntityId:
          description: Entity identifier of the compliance controller
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        compliancePolicy:
          description: Compliance policy applied to the tokenized credit
          example: ALLOWLIST
          type: string
        contractDltAccountId:
          description: DLT account address of the deployed tokenized credit smart contract
          example: '0xABCDEF1234567890'
          type: string
        country:
          description: ISO 3166-1 alpha-2 country code of the tokenized credit
          example: ES
          type: string
        createdAt:
          description: Timestamp when the tokenized credit record was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        creationDate:
          description: Date the tokenized credit was deployed on the DLT (null if not yet deployed)
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        currentSupply:
          description: Current token supply in circulation
          example: '1000000.00'
          format: decimal
          type: string
        debtorEntityParty:
          allOf:
          - $ref: '#/components/schemas/AssetParty'
          description: Debtor party information
        decimals:
          description: Number of decimal places for token amounts
          example: 18
          type: integer
        deed:
          allOf:
          - $ref: '#/components/schemas/TokenizedCreditLoanDeed'
          description: Optional notarial deed information
        description:
          description: Optional description of the tokenized credit
          example: Term loan for infrastructure project
          type: string
        externalId:
          description: External reference identifier for this tokenized credit
          example: EXT-TC-001
          type: string
        guarantorEntityParty:
          allOf:
          - $ref: '#/components/schemas/AssetParty'
          description: Optional guarantor party information
        id:
          description: Unique identifier of the tokenized credit
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        interest:
          allOf:
          - $ref: '#/components/schemas/TokenizedCreditInterest'
          description: Interest rate and fee configuration
        interestType:
          description: Interest type of the loan
          example: FIXED
          type: string
        issuerDltAccountId:
          description: DLT account identifier of the tokenized credit issuer
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        lifecycleData:
          allOf:
          - $ref: '#/components/schemas/Lifecycle'
          description: Lifecycle payment settings for the tokenized credit
        maturityDate:
          description: Maturity date of the loan
          example: 2031-01-01 00:00:00+00:00
          format: date-time
          type: string
        maxSupply:
          description: Maximum allowable token supply
          example: '5000000.00'
          format: decimal
          type: string
        name:
          description: Human-readable name of the tokenized credit
          example: Loan 2026 Series A
          type: string
        origin:
          description: Origin of the tokenized credit record
          enum:
          - INTERNAL
          - EXTERNAL
          example: INTERNAL
          type: string
        originatorAccountId:
          description: Account identifier of the loan originator
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        paused:
          description: Whether the tokenized credit transfers are currently paused on the DLT
          example: false
          type: boolean
        performanceStatus:
          allOf:
          - $ref: '#/components/schemas/TokenizedCreditPerformanceStatus'
          description: Optional performance status classification
        repaymentType:
          description: Repayment type of the loan
          example: BULLET
          type: string
        risk:
          allOf:
          - $ref: '#/components/schemas/TokenizedCreditLoanRisk'
          description: Risk classification data for the loan
        servicerAccountId:
          description: Account identifier of the loan servicer
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        signingDate:
          description: Date the loan agreement was signed
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        status:
          description: Current lifecycle status of the tokenized credit
          enum:
          - DRAFT
          - ACTIVE
          - PAUSED
          - REJECTED
          - ARCHIVED
          example: DRAFT
          type: string
        structureType:
          description: Structure type of the loan
          example: TERM_LOAN
          type: string
        symbol:
          description: Ticker symbol of the tokenized credit
          example: LN26A
          type: string
        updatedAt:
          description: Timestamp when the tokenized credit record was last updated
          example: 2026-01-02 12:00:00+00:00
          format: date-time
          type: string
        valuationData:
          allOf:
          - $ref: '#/components/schemas/Valuation'
          description: Valuation data for the tokenized credit
      type: object
    TokenizedCreditCollateral:
      properties:
        loanToValue:
          description: Loan-to-value ratio
          example: '0.80'
          format: decimal
          type: string
        totalCollateralValue:
          description: Total value of the collateral securing the loan
          example: '1200000.00'
          format: decimal
          type: string
      type: object
    TokenizedCreditInterest:
      properties:
        baseRateType:
          description: Type of base interest rate
          example: EURIBOR_3M
          type: string
        capRate:
          description: Maximum interest rate cap
          example: '0.10'
          format: decimal
          type: string
        commitmentFee:
          description: Optional commitment fee on undrawn amounts
          example: '0.005'
          format: decimal
          type: string
        dayCount:
          description: Day count convention used for interest accrual
          example: ACT_360
          type: string
        firstAccrualDate:
          description: Start date of the first interest accrual period
          example: 2026-04-01 00:00:00+00:00
          format: date-time
          type: string
        floorRate:
          description: Minimum interest rate floor
          example: '0.01'
          format: decimal
          type: string
        paymentFrequency:
          description: Frequency of interest payments
          example: QUARTERLY
          type: string
        prepaymentPenalty:
          description: Optional prepayment penalty rate
          example: '0.02'
          format: decimal
          type: string
        rateMargin:
          description: Margin added to the base rate
          example: '0.025'
          format: decimal
          type: string
        servicingFee:
          description: Optional servicing fee
          example: '0.001'
          format: decimal
          type: string
        utilizationFee:
          description: Optional fee based on utilization
          example: '0.003'
          format: decimal
          type: string
        utilizationFeeType:
          description: Type of utilization fee calculation
          example: ON_DRAWN
          type: string
      type: object
    TokenizedCreditLoanDeed:
      properties:
        notary:
          description: Name or identifier of the notary
          example: Notario Juan Garcia
          type: string
        number:
          description: Deed registration number
          example: DEED-2026-001
          type: string
        time:
          description: Timestamp when the deed was signed
          example: 2026-01-10 09:00:00+00:00
          format: date-time
          type: string
      type: object
    TokenizedCreditLoanRisk:
      properties:
        defaultProbability:
          description: Probability of default as a decimal
          example: '0.02'
          format: decimal
          type: string
        internalRiskGrade:
          description: Internal risk grade assigned by the institution
          example: B+
          type: string
        lossGivenDefault:
          description: Loss given default as a decimal
          example: '0.45'
          format: decimal
          type: string
      type: object
    TokenizedCreditPerformanceStatus:
      properties:
        daysPastDue:
          description: Number of days past due
          example: 0
          type: integer
        performanceStatus:
          description: Performance status of the loan
          enum:
          - PERFORMING
          - NON_PERFORMING
          - DEFAULT
          example: PERFORMING
          type: string
      type: object
    TotalNav:
      properties:
        totalNav:
          description: Total Net Asset Value of the loans portfolio
          example: '4850000.00'
          format: decimal
          type: string
      type: object
    Transaction:
      properties:
        amount:
          description: Amount transferred in this transaction
          example: '500.00'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset involved in the transaction
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
        creationDate:
          description: Timestamp when the transaction was created
          example: 2026-01-01 10:00:00+00:00
          format: date-time
          type: string
        executionTime:
          description: Timestamp when the transaction was executed on the DLT
          example: 2026-01-01 10:00:05+00:00
          format: date-time
          type: string
        fromAccount:
          description: Identifier of the source account
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        id:
          description: Unique identifier of the transaction
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        metadata:
          additionalProperties: true
          description: Optional metadata associated with the transaction
          type: object
        toAccount:
          description: Identifier of the destination account
          example: b2c3d4e5-f6a7-8901-bcde-f12345678901
          format: uuid
          type: string
        txHash:
          description: DLT transaction hash
          example: 7.768674616320293e+76
          type: string
        type:
          description: 'Type of transaction

            Possible values: TRANSFER, TRANSFER_FROM, CONTROLLER_TRANSFER, MINT, BURN, CONTROLLER_HOLD_CREATE, HOLD_EXECUTE, HOLD_RELEASE'
          enum:
          - TRANSFER
          - TRANSFER_FROM
          - CONTROLLER_TRANSFER
          - MINT
          - BURN
          - CONTROLLER_HOLD_CREATE
          - HOLD_EXECUTE
          - HOLD_RELEASE
          example: TRANSFER
          type: string
      type: object
    TransferProcessRequest:
      properties:
        amount:
          description: Amount to transfer
          example: '500.00'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset to transfer
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        externalId:
          description: Optional external identifier for this transfer process
          example: my-ext-id-123
          type: string
        metadata:
          additionalProperties: true
          description: Optional metadata to associate with the transfer transaction
          type: object
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
        toAccountId:
          description: Identifier of the destination account
          example: 4613545c-830b-4662-a12e-9252f5a2a40e
          format: uuid
          type: string
      required:
      - amount
      - assetId
      - signerDltAccountId
      - toAccountId
      type: object
    UpdateAmortizationRequest:
      properties:
        description:
          description: Optional description with additional information about the amortization lifecycle event
          example: First amortization event for bond series 2026
          type: string
        executionDate:
          description: Execution date of the amortization lifecycle event
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this amortization lifecycle event
          example: my-ext-id-123
          type: string
        name:
          description: Human-readable name of the amortization lifecycle event
          example: Amortization Q1 2026
          type: string
        recordDate:
          description: Record date of the amortization lifecycle event
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        totalAmount:
          description: Total amortization amount represented as decimal string
          example: '1000.50'
          format: decimal
          type: string
      required:
      - executionDate
      - name
      - recordDate
      - totalAmount
      type: object
    UpdateCouponRequest:
      properties:
        accrualPeriodEndDate:
          description: End date of the accrual period
          example: 2026-04-01 00:00:00+00:00
          format: date-time
          type: string
        accrualPeriodStartDate:
          description: Start date of the accrual period
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
        dayCount:
          description: Day count convention used for coupon accrual calculation
          example: ACT/360
          type: string
        description:
          description: Optional description with additional information about the coupon lifecycle event
          example: Quarterly coupon payment for bond holders
          type: string
        effectiveRate:
          description: Effective interest rate applied to the coupon (decimal string)
          example: '0.0525'
          format: decimal
          type: string
        executionDate:
          description: Execution date of the coupon lifecycle event
          example: 2026-01-05 00:00:00+00:00
          format: date-time
          type: string
        externalId:
          description: Optional external identifier for this coupon lifecycle event
          example: my-ext-id-123
          type: string
        name:
          description: Human-readable name of the coupon lifecycle event
          example: Coupon payment Q1 2026
          type: string
        recordDate:
          description: Record date of the coupon lifecycle event
          example: 2026-01-01 00:00:00+00:00
          format: date-time
          type: string
      required:
      - dayCount
      - executionDate
      - name
      - recordDate
      type: object
    UploadDocumentRequest:
      properties:
        callbackUrl:
          description: Optional URL to receive process completion callback
          example: https://my-service.example.com/callback
          type: string
        fileData:
          description: Base64-encoded file content
          example: JVBERi0xLjQK...
          type: string
        fileName:
          description: Name of the file to upload
          example: prospectus.pdf
          type: string
        fileUrl:
          description: URL of the file to upload from a remote source
          example: https://storage.example.com/documents/prospectus.pdf
          type: string
      type: object
    User:
      properties:
        email:
          description: Email address of the user
          example: jane.doe@example.com
          type: string
        entityId:
          description: Entity identifier this user belongs to
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        id:
          description: Unique user identifier
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        name:
          description: Full name of the user
          example: Jane Doe
          type: string
        roles:
          description: 'Assigned roles

            Possible values: admin, read_only'
          example:
          - admin
          items:
            enum:
            - admin
            - read_only
            type: string
          type: array
      type: object
    Valuation:
      properties:
        currency:
          description: ISO 4217 currency code for the nominal value
          example: EUR
          type: string
        nominalValue:
          description: Nominal value per token unit
          example: '1000.00'
          format: decimal
          type: string
      type: object
    WithdrawProcessRequest:
      properties:
        amount:
          description: Amount to withdraw
          example: '500.00'
          format: decimal
          type: string
        assetId:
          description: Identifier of the asset to withdraw
          example: f4585827-0aa5-444c-a995-de62b5f5ac34
          format: uuid
          type: string
        callbackUrl:
          description: Optional URL to notify when the process completes
          example: https://example.com/callback
          type: string
        destinationAccountId:
          description: Identifier of the destination account to receive the withdrawn amount
          example: 8af7a2e4-8a64-4b9d-9947-6727f9fdc301
          format: uuid
          type: string
        externalId:
          description: Optional external identifier for this withdraw process
          example: my-ext-id-123
          type: string
        originAssetDltAccountId:
          description: DLT account address of the origin asset contract
          example: 1.0392900530792776e+47
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: '0x8be5336c0176ae5c68de296b5a3ff2b99739f4f9'
          type: string
      required:
      - amount
      - assetId
      - destinationAccountId
      - originAssetDltAccountId
      - signerDltAccountId
      type: object
    amount.Amount:
      type: object
    api.ErrorResponse:
      properties:
        code:
          type: string
        error:
          type: string
      type: object
    externallist.CompliancePolicy:
      enum:
      - ALLOWLIST
      - BLOCKLIST
      type: string
      x-enum-varnames:
      - AllowList
      - BlockList
    finalizeassetclass.Request:
      properties:
        callbackUrl:
          description: URL to receive the process completion callback
          example: https://example.com/callback
          type: string
        signerDltAccountId:
          description: DLT account address of the signer
          example: 7.986610672740008e+47
          type: string
      required:
      - signerDltAccountId
      type: object
    getholdingsassetaveragetokenizedcreditdurationbyassetid.Response:
      properties:
        average:
          type: number
      type: object
    getholdingsassetcountbyassetidandassettype.Response:
      properties:
        count:
          type: integer
      type: object
    getsecuredtokenizedcreditspercentage.Response:
      properties:
        secured_tokenized_credits_percentage:
          type: number
      type: object
    gettokenizedcreditcountbyassetidandtokenizedcreditperformancestatus.Response:
      properties:
        count:
          type: integer
      type: object
    gettokenizedcreditperformancepercentage.Response:
      properties:
        tokenized_credit_performance_percentage:
          type: number
      type: object
    license.License:
      properties:
        licensePayloadRaw:
          type: string
        meta:
          $ref: '#/components/schemas/license.Meta'
        modules:
          additionalProperties:
            $ref: '#/components/schemas/license.Module'
          type: object
        signature:
          items:
            format: int32
            type: integer
          type: array
        version:
          type: string
      type: object
    license.Meta:
      properties:
        expiry:
          type: string
        gracePeriod:
          type: integer
        id:
          type: string
        issued:
          type: string
      type: object
    license.Module:
      properties:
        features:
          items:
            type: string
          type: array
      type: object
    model.AssetLegModel:
      properties:
        assetId:
          type: string
        legRole:
          type: string
        tokenAmount:
          format: decimal
          type: string
      type: object
    model.AssetLegModelExecution:
      properties:
        assetId:
          type: string
        id:
          type: string
        legRole:
          type: string
        tokenAmount:
          format: decimal
          type: string
      type: object
    model.CashLegModel:
      properties:
        cashAmount:
          format: decimal
          type: string
        legRole:
          type: string
        settlementOptionId:
          type: string
      type: object
    model.CashLegModelExecution:
      properties:
        cashAmount:
          format: decimal
          type: string
        id:
          type: string
        legRole:
          type: string
        settlementOptionId:
          type: string
      type: object
    model.InstructionModel:
      properties:
        assetLegs:
          items:
            $ref: '#/components/schemas/model.AssetLegModel'
          type: array
        cashLegs:
          items:
            $ref: '#/components/schemas/model.CashLegModel'
          type: array
        createdAt:
          type: string
        externalId:
          example: my-ext-id-123
          type: string
        id:
          type: string
        instructionType:
          type: string
        nonce:
          type: string
        relatedInstructionId:
          type: string
        settlementHubId:
          type: string
        status:
          type: string
        updatedAt:
          type: string
      type: object
    model.SettlementExecutionModel:
      properties:
        assetLegs:
          items:
            $ref: '#/components/schemas/model.AssetLegModelExecution'
          type: array
        cashLegs:
          items:
            $ref: '#/components/schemas/model.CashLegModelExecution'
          type: array
        createdAt:
          type: string
        id:
          type: string
        settlementTransactionId:
          type: string
        updatedAt:
          type: string
      type: object
    model.SettlementInstructionModel:
      properties:
        accountId:
          type: string
        agentAccountId:
          type: string
        assetLegs:
          items:
            $ref: '#/components/schemas/model.AssetLegModel'
          type: array
        cashLegs:
          items:
            $ref: '#/components/schemas/model.CashLegModel'
          type: array
        counterpartyAccountId:
          type: string
        counterpartyAgentAccountId:
          type: string
        createdAt:
          type: string
        id:
          type: string
        instructionType:
          type: string
        matchingStatus:
          type: string
        metadata:
          $ref: '#/components/schemas/MetadataModel'
        nonce:
          format: decimal
          type: string
        settlementDate:
          type: string
        settlementHubId:
          type: string
        settlementType:
          type: string
        status:
          type: string
        tradeDate:
          type: string
        updatedAt:
          type: string
      type: object
    model.SettlementTransactionAssetLegModel:
      properties:
        assetId:
          type: string
        finalQuantity:
          format: decimal
          type: string
        id:
          type: string
        legRole:
          type: string
        remainingQuantity:
          format: decimal
          type: string
        settlementTransactionId:
          type: string
      type: object
    model.SettlementTransactionCashLegModel:
      properties:
        finalAmount:
          format: decimal
          type: string
        id:
          type: string
        legRole:
          type: string
        remainingAmount:
          format: decimal
          type: string
        settlementOptionId:
          type: string
        settlementTransactionId:
          type: string
      type: object
    model.SettlementTransactionModel:
      properties:
        assetLegs:
          items:
            $ref: '#/components/schemas/model.SettlementTransactionAssetLegModel'
          type: array
        baseInstructionId:
          type: string
        cashLegs:
          items:
            $ref: '#/components/schemas/model.SettlementTransactionCashLegModel'
          type: array
        createdAt:
          type: string
        executionStatus:
          type: string
        id:
          type: string
        pairedInstructionId:
          type: string
        retries:
          type: integer
        settlementStatus:
          type: string
        updatedAt:
          type: string
      type: object
    modelprocess.BaseProcessModel:
      properties:
        entityId:
          type: string
        id:
          type: string
          format: uuid
          example: 2d6f3c4a-7e89-4a0f-91ef-1b1d0b7b1e11
        signerDltAccountId:
          type: string
        signingType:
          type: string
        status:
          type: string
        transactionHash:
          type: string
        type:
          type: string
        unsignedTransactionProcess:
          $ref: '#/components/schemas/modelprocess.UnsignedTransactionProcessModel'
      type: object
    modelprocess.UnsignedTransactionProcessModel:
      properties:
        dltAccountId:
          type: string
        id:
          type: string
        payload:
          type: string
        processId:
          type: string
      type: object
    o2d-api_src_main_issuancev2_internal_app_service_process_finalizeassetclass_start.Response:
      properties:
        processId:
          type: string
        status:
          type: string
        type:
          type: string
      type: object
