BanQu Asset Transactions API

Asset exchange/buy/sell transactions that consist of multiple asset transfers

OpenAPI Specification

banqu-asset-transactions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: BanQu Asset Transactions API
  version: 3.3.4
  description: The BanQu API is organized around [REST](http://en.wikipedia.org/wiki/Representational_State_Transfer). Our API is designed to have predictable, resource-oriented URLs and to use HTTP response codes to indicate API errors. We use built-in HTTP features, like HTTP verbs, which can be understood by off-the-shelf HTTP clients, and [JSON](http://www.json.org) for input and output.
servers:
- url: https://banqu.app:443/api/v1
security:
- Bearer: []
tags:
- name: Asset Transactions
  description: Asset exchange/buy/sell transactions that consist of multiple asset transfers
paths:
  /transactions:
    get:
      description: List own transactions
      tags:
      - Asset Transactions
      parameters:
      - $ref: '#/components/parameters/AssetCodes'
      - $ref: '#/components/parameters/TransactionKind'
      - name: owner
        in: query
        schema:
          type: string
          enum:
          - own
          - sub
          - any
        description: Filter transactions by owner. One of [me, sub] for own and sub account transactions. If omitted, not filtered by owner
      - name: accountIds
        in: query
        schema:
          type: string
        description: Filter transactions by other party accountId. Comma-separated list
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/SortBy'
      responses:
        '200':
          description: List of transactions
          content:
            application/json:
              schema:
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Transaction'
                  codes:
                    type: array
                    items:
                      type: string
                  totalCount:
                    type: number
          headers:
            X-Total-Count:
              schema:
                type: number
              description: Total number of records available for paging purposes
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
    post:
      description: Initiate transaction
      tags:
      - Asset Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTransactionRequest'
      responses:
        '201':
          $ref: '#/components/responses/201'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  /transactions/{transactionId}/finalize:
    post:
      description: Process draft payments
      tags:
      - Asset Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FinalizeDraftTransactionRequest'
      parameters:
      - in: path
        name: transactionId
        schema:
          type: string
        required: true
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  /transactions/{transactionId}:
    get:
      description: Get transaction details
      tags:
      - Asset Transactions
      parameters:
      - in: path
        name: transactionId
        schema:
          type: string
        required: true
      responses:
        '200':
          description: Transaction details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeTransaction'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
    delete:
      description: Revert transaction
      tags:
      - Asset Transactions
      parameters:
      - in: path
        name: transactionId
        schema:
          type: string
        required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevertTransaction'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
  /transactions/{transactionId}/operations:
    get:
      description: List transaction operations.
      tags:
      - Asset Transactions
      parameters:
      - in: path
        name: transactionId
        schema:
          type: string
        required: true
      responses:
        '200':
          description: 'List of asset operations: transfers, deposits, transformations and transformation results'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnyAssetOperation'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
  /transactions/{transactionId}/operations/{operationId}/history:
    get:
      description: Get visible chain of custody for the requested transaction
      tags:
      - Asset Transactions
      parameters:
      - in: path
        name: transactionId
        schema:
          type: string
        required: true
      - in: path
        name: operationId
        schema:
          type: string
        required: true
      - in: query
        name: timeout
        schema:
          type: number
          minimum: 1
          maximum: 3600000
      - in: query
        name: format
        schema:
          type: string
          enum:
          - xlsx
      - in: query
        name: theme
        schema:
          $ref: '#/components/schemas/ExcelTableTheme'
      responses:
        '200':
          description: 'List of asset operations: transfers, deposits, transformations and transformation results'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ChainedOperation'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
  /transactions/{transactionId}/operations/{operationId}/history/schema:
    get:
      description: Get JSON schema for operations from chain of custody for the requested transaction
      tags:
      - Asset Transactions
      parameters:
      - in: path
        name: transactionId
        schema:
          type: string
        required: true
      - in: path
        name: operationId
        schema:
          type: string
        required: true
      - in: query
        name: format
        schema:
          type: string
          enum:
          - xlsx
      responses:
        '200':
          description: JSON schema
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonSchema'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
  /transactions/{transactionId}/history:
    get:
      description: Get visible chain of custody for the requested transaction
      tags:
      - Asset Transactions
      parameters:
      - in: path
        name: transactionId
        schema:
          type: string
        required: true
      - in: query
        name: timeout
        schema:
          type: number
          minimum: 1
          maximum: 3600000
      - in: query
        name: format
        schema:
          type: string
          enum:
          - xlsx
      responses:
        '200':
          description: 'List of asset operations: transfers, deposits, transformations and transformation results'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ChainedOperation'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
  /transactions/{transactionId}/history/schema:
    get:
      description: Get JSON schema for operations of chain of custody for the requested transaction
      tags:
      - Asset Transactions
      parameters:
      - in: path
        name: transactionId
        schema:
          type: string
        required: true
      - in: query
        name: format
        schema:
          type: string
          enum:
          - xlsx
      responses:
        '200':
          description: JSON schema
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonSchema'
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
  /transactions/batch:
    post:
      description: Initiate batch transaction
      tags:
      - Asset Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBatchTransactionRequest'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
components:
  schemas:
    DraftPaymentOperation:
      title: Payment Draft
      type: object
      additionalProperties: false
      properties:
        isDraft:
          type: boolean
          enum:
          - true
          writeOnly: true
        assetId:
          $ref: '#/components/schemas/Id'
        quantity:
          title: Payment Amount
          type: number
          minimum: 0
        senderId:
          $ref: '#/components/schemas/Id'
        receiverId:
          $ref: '#/components/schemas/Id'
        destinationProvider:
          $ref: '#/components/schemas/PaymentDestinationProvider'
        effectiveDate:
          $ref: '#/components/schemas/EffectiveDate'
        destinationId:
          $ref: '#/components/schemas/PaymentDestinationId'
        destinationType:
          $ref: '#/components/schemas/PaymentDestinationType'
      required:
      - isDraft
      - senderId
      - receiverId
      - assetId
      - quantity
    AssetMobileDestination:
      type: object
      title: Mobile Payment Destination
      description: Mobile wallet where the monetary transfer was sent to
      properties:
        provider:
          $ref: '#/components/schemas/PaymentDestinationProvider'
        id:
          $ref: '#/components/schemas/PaymentDestinationId'
        type:
          $ref: '#/components/schemas/PaymentDestinationType'
      required:
      - id
      - provider
      readOnly: true
    Attachment:
      type: object
      additionalProperties: false
      properties:
        downloadUrl:
          type: string
          format: url
        fileName:
          type: string
          minLength: 1
        fileSize:
          type: number
          minimum: 0
        mimeType:
          type: string
          minLength: 1
          example: image/jpeg
        md5:
          type: string
          minLength: 32
          maxLength: 32
          pattern: ^[a-f0-9]{32}$
      required:
      - downloadUrl
    GeoCoordinates:
      type: object
      properties:
        lat:
          type: number
          format: double
          minimum: -90
          maximum: 90
        lon:
          type: number
          format: double
          minimum: -180
          maximum: 180
      additionalProperties: false
      required:
      - lat
      - lon
      example:
        lat: 37.7749
        lon: -122.4194
    AssetDescription:
      type: string
      minLength: 0
      maxLength: 200
    PaymentDestinationId:
      title: Destination Identifier
      description: Destination phone number for mobile providers; BanQu agency ID for banqu-agency provider
      type: string
    AssetDeposit:
      type: object
      properties:
        id:
          type: string
          minLength: 32
          maxLength: 32
        assetId:
          type: string
          minLength: 32
          maxLength: 32
        code:
          $ref: '#/components/schemas/AssetCode'
        uom:
          $ref: '#/components/schemas/AssetUom'
        description:
          $ref: '#/components/schemas/AssetDescription'
        qty:
          type: string
        sent:
          type: number
        creator:
          type: object
          properties:
            id:
              $ref: '#/components/schemas/ImmutableId'
            name:
              type: string
        creatorUser:
          type: object
          properties:
            id:
              $ref: '#/components/schemas/ImmutableId'
            name:
              type: string
        holder:
          type: object
          properties:
            id:
              $ref: '#/components/schemas/ImmutableId'
            name:
              type: string
      required:
      - id
      - assetId
      - code
      - uom
      - qty
      - sent
      - creator
      - holder
    JsonSchema:
      title: JSON Schema
      description: https://json-schema.org/draft-07/schema#
      type: object
      properties:
        title:
          type: string
        description:
          type: string
        type:
          type: string
          enum:
          - array
          - boolean
          - integer
          - 'null'
          - number
          - object
          - string
          example: object
        required:
          type: array
          items:
            type: string
          uniqueItems: true
        additionalProperties:
          oneOf:
          - type: boolean
          - type: object
        properties:
          type: object
      example:
        type: object
        properties:
          field1:
            type: string
        required:
        - field1
        additionalProperties: false
    FinalizeDraftTransactionRequest:
      type: array
      minItems: 1
      items:
        anyOf:
        - $ref: '#/components/schemas/PaymentAdjustmentOperation'
        - title: Persisted payment adjustment operation
          description: Persisted payment adjustment operation with changed quantity
          type: object
          properties:
            id:
              $ref: '#/components/schemas/Id'
            quantity:
              type: number
          additionalProperties: false
          required:
          - id
          - quantity
        - title: Persisted asset operation
          type: object
          properties:
            id:
              $ref: '#/components/schemas/Id'
            quantity:
              type: number
              minimum: 0
            price:
              type: number
              minimum: 0
            priceCurrency:
              type: string
              minLength: 3
              maxLength: 3
              example: USD
            properties:
              type: object
              additionalProperties: true
          additionalProperties: false
          required:
          - id
          - quantity
        - $ref: '#/components/schemas/PaymentOperation'
        - title: Persisted payment operation
          description: Persisted payment operation with changed quantity or/and destination provider
          type: object
          properties:
            id:
              $ref: '#/components/schemas/Id'
            quantity:
              type: number
              minimum: 0
            destinationProvider:
              $ref: '#/components/schemas/PaymentDestinationProvider'
            destinationId:
              $ref: '#/components/schemas/PaymentDestinationId'
            destinationType:
              $ref: '#/components/schemas/PaymentDestinationType'
          additionalProperties: false
          required:
          - quantity
          - id
        - $ref: '#/components/schemas/AssetTransferOperation'
    CreateBatchTransactionRequest:
      title: Batch Transaction
      type: object
      properties:
        receiverId:
          $ref: '#/components/schemas/Id'
        senderId:
          $ref: '#/components/schemas/Id'
        transfers:
          type: array
          items:
            title: Batch Transaction Transfer
            type: object
            properties:
              assetId:
                $ref: '#/components/schemas/Id'
              quantity:
                title: Amount to be Exchanged
                type: number
                exclusiveMinimum: 0
              sourceOperations:
                $ref: '#/components/schemas/SourceOperations'
              effectiveDate:
                $ref: '#/components/schemas/EffectiveDate'
              effectiveLocation:
                $ref: '#/components/schemas/EffectiveLocation'
            additionalProperties: false
            required:
            - assetId
            - quantity
          minItems: 1
        properties:
          type: object
          additionalProperties: true
      required:
      - receiverId
      - senderId
      - transfers
      additionalProperties: false
    AnyAssetOperation:
      oneOf:
      - $ref: '#/components/schemas/AssetTransferOperation'
      - $ref: '#/components/schemas/AssetTransformationOperation'
      - $ref: '#/components/schemas/AssetDeposit'
    ImmutableId:
      type: string
      readOnly: true
      minLength: 32
      maxLength: 32
      example: '00000000000000000000000000000000'
    ChainedOperation:
      type: object
      properties:
        qty:
          title: Quantity
          description: The transaction amount or the amount of an existing transaction selected as a source
          type: number
        asset:
          type: object
          properties:
            uom:
              title: Unit of Measure
              type: string
            name:
              title: Asset Name
              type: string
            code:
              title: Asset Code
              type: string
            id:
              title: Asset ID
              type: string
        sent:
          title: Date
          type: number
          format: date-time
        type:
          title: Type
          description: 'transfer - an asset moving from one connection to another

            transformation - the inputs of a transformation (one or more assets turned into another asset)

            transformation-result - the output of a transformation'
          type: string
          enum:
          - transfer
          - deposit
          - transformation
          - transformation-result
        properties:
          type: object
          properties: {}
          additionalProperties: true
        from:
          type: object
          properties:
            id:
              title: From ID
              type: string
              minLength: 32
              maxLength: 32
              example: '00000000000000000000000000000000'
            displayName:
              title: From
              type: string
            isOrg:
              type: boolean
            photoUrl:
              type: string
              format: url
            photoEtag:
              type: string
        to:
          type: object
          properties:
            id:
              title: To ID
              type: string
              minLength: 32
              maxLength: 32
              example: '00000000000000000000000000000000'
            displayName:
              title: To
              type: string
            isOrg:
              type: boolean
            photoUrl:
              type: string
              format: url
            photoEtag:
              type: string
        usageInUnits:
          title: Mass sourced to the top
          type: number
          description: how much of this operation made it to the top of chain, in asset's units of measure
        transferredQty:
          title: Quantity in Original Operation
          description: The full amount of the original transaction the source is selected from
          type: number
        immediateUsage:
          title: Mass % sourced from this operation
          type: number
          format: percent
          description: how much of this operation made to the one level higher in chain, in percents
        usage:
          title: Quantity % sourced to the top
          type: number
          format: percent
          description: how much of this operation made it to the top of chain, in percents
        path:
          type: array
          title: Historical Order
          items:
            type: string
          description: operation's parents' and own name to rebuild tree from the list
        depth:
          type: string
        id:
          title: Operation ID
          type: string
    EffectiveLocation:
      allOf:
      - $ref: '#/components/schemas/GeoCoordinates'
      - title: Effective Transfer Geo Location
        description: The effective location coordinates of a transfer instead of an automatically determined
    PaymentDestination:
      oneOf:
      - $ref: '#/components/schemas/AssetMobileDestination'
      - $ref: '#/components/schemas/AssetAgencyDestination'
    Transaction:
      oneOf:
      - $ref: '#/components/schemas/RevertTransaction'
      - $ref: '#/components/schemas/AssetDepositTransaction'
      - $ref: '#/components/schemas/ExchangeTransaction'
      - $ref: '#/components/schemas/AssetTransformationTransaction'
    AssetTransformationTransaction:
      type: object
      description: Asset Transformation
      additionalProperties: false
      properties:
        sources:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/TransformingAsset'
        destinations:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/TransformingAsset'
        creator:
          type: object
          properties:
            id:
              $ref: '#/components/schemas/ImmutableId'
            name:
              type: string
        id:
          type: string
        transactionId:
          type: string
        sent:
          type: number
        allCodes:
          type: array
          items:
            type: string
        assetIds:
          type: array
          items:
            type: string
      required:
      - destinations
      - sources
      - creator
      - id
      - transactionId
      - sent
    RevertTransaction:
      type: object
      properties:
        reason:
          type: string
          minLength: 1
        effectiveDate:
          $ref: '#/components/schemas/EffectiveDate'
        effectiveLocation:
          $ref: '#/components/schemas/EffectiveLocation'
      required:
      - reason
      additionalProperties: false
    ImmutableTimestamp:
      type: number
      readOnly: true
      description: Number of milliseconds elapsed since January 1, 1970 00:00:00 UTC
      example: 1568894551000
    PaymentAdjustmentOperation:
      title: Payment Adjustment
      description: Change transaction amount using global or asset related adjustments
      type: object
      additionalProperties: false
      properties:
        paymentAdjustmentId:
          type: string
          minLength: 1
        appliedToAssetId:
          $ref: '#/components/schemas/Id'
        quantity:
          type: number
          minimum: 0
      required:
      - paymentAdjustmentId
      - quantity
    TransformingAsset:
      type: object
      additionalProperties: false
      properties:
        id:
          $ref: '#/components/schemas/Id'
        code:
          $ref: '#/components/schemas/AssetCode'
        description:
          $ref: '#/components/schemas/AssetDescription'
        uom:
          $ref: '#/components/schemas/AssetUom'
      required:
      - id
      - code
      - uom
    PaymentDestinationType:
      title: Destination Type
      description: mobile for payments by phone number; payCode for 6DOT50 partner transfer
      enum:
      - mobile
      - new-mobile
      - payCode
    SourcesCount:
      type: number
      description: Indicates number of operations that serve as explicit or implicit sources for this asset operation. Appears in the object when request contains sourcesGroupingMethod in query
    Attachments:
      type: array
      items:
        $ref: '#/components/schemas/Attachment'
    AssetUom:
      title: Asset Unit of Measurement
      type: string
      enum:
      - BR
      - BO
      - BX
      - BU
      - CN
      - CA
      - CH
      - DO
      - EA
      - FO
      - FT
      - GA
      - GR
      - HR
      - JA
      - KG
      - KK
      - LT
      - Q3
      - MR
      - MG
      - M4
      - OZ
      - PK
      - PR
      - PC
      - LB
      - SJ
      - VS
      - YD
      example: KG
    Id:
      title: Id
      type: string
      minLength: 32
      maxLength: 32
      example: '00000000000000000000000000000000'
    ExchangeTransaction:
      type: object
      additionalProperties: false
      properties:
        id:
          $ref: '#/components/schemas/ImmutableId'
        allCodes:
          type: array
          items:
            type: string
        assetIds:
          type: array
          items:
            type: string
        receiverId:
          $ref: '#/components/schemas/Id'
        type:
          type: string
          enum:
          - batch
          - trade
          - exchange
          - transfer
        unconfirmedAssetIds:
          type: array
          items:
            $ref: '#/components/schemas/Id'
        destinationProvider:
          $ref: '#/components/schemas/PaymentDestinationProvider'
        destinationId:
          $ref: '#/components/schemas/PaymentDestinationId'
        destinationType:
          $ref: '#/components/schemas/PaymentDestinationType'
        initiatedBy:
          $ref: '#/components/schemas/TransactionParty'
        initiatedByUser:
          allOf:
          - $ref: '#/components/schemas/TransactionParty'
          - readOnly: true
        sender:
          $ref: '#/components/schemas/TransactionParty'
        receiver:
          $ref: '#/components/schemas/TransactionParty'
        agency:
          $ref: '#/components/schemas/TransactionParty'
        agent:
          $ref: '#/components/schemas/TransactionParty'
        qty:
          type: number
          exclusiveMinimum: 0
        price:
          type: number
          minimum: 0
        priceCurrency:
          type: string
          minLength: 3
          maxLength: 3
          example: USD
        sent:
          type: number
          readOnly: true
        claimed:
          type: number
          readOnly: true
        received:
          type: number
          readOnly: true
        properties:
          type: object
        message:
          type: string
        transactionId:
          type: string
        direction:
          type: string
        code:
          type: string
        uom:
          $ref: '#/components/schemas/AssetUom'
        description:
          type: string
        initiatedByUserId:
          type: string
        assetAttachments:
          $ref: '#/components/schemas/Attachments'
        participants:
          type: array
          items:
            type: string
      required:
      - receiverId
      - qty
    ExcelTableTheme:
      type: string
      enum:
      - TableStyleLight1
      - TableStyleLight2
      - TableStyleLight3
      - TableStyleLight4
      - TableStyleLight5
      - TableStyleLight6
      - TableStyleLight7
      - TableStyleLight8
      - TableStyleLight9
      - TableStyleLight10
      - TableStyleLight11
      - TableStyleLight12
      - TableStyleLight13
      - TableStyleLight14
      - TableStyleLight15
      - TableStyleLight16
      - TableStyleLight17
      - TableStyleLight18
      - TableStyleLight19
      - TableStyleLight20
      - TableStyleLight21
      - TableStyleMedium1
      - TableStyleMedium2
      - TableStyleMedium3
      - TableStyleMedium4
      - TableStyleMedium5
      - TableStyleMedium6
      - TableStyleMedium7
      - TableStyleMedium8
      - TableStyleMedium9
      - TableStyleMedium10
      - TableStyleMedium11
      - TableStyleMedium12
      - TableStyleMedium13
      - TableStyleMedium14
      - TableStyleMedium15
      - TableStyleMedium16
      - TableStyleMedium17
      - TableStyleMedium18
      - TableStyleMedium19
      - TableStyleMedium20
      - TableStyleMedium21
      - TableStyleMedium22
      - TableStyleMedium23
      - TableStyleMedium24
      - TableStyleMedium25
      - TableStyleMedium26
      - TableStyleMedium27
      - TableStyleMedium28
      - TableStyleDark1
      - TableStyleDark2
      - TableStyleDark3
      - TableStyleDark4
      - TableStyleDark5
      - TableStyleDark6
      - TableStyleDark7
      - TableStyleDark8
      - TableStyleDark9
      - TableStyleDark10
      - TableStyleDark11
    TransactionParty:
      type: object
      readOnly: true
      properties:
        id:
          $ref: '#/components/schemas/ImmutableId'
        name:
          type: string
          readOnly: true
        photoUrl:
          type: string
          format: url
          readOnly: true
        photoEtag:
          type: string
          readOnly: true
        isOrg:
          type: boolean
    PaymentOperation:
      title: Payment
      type: object
      additionalProperties: false
      properties:
        isDraft:
          type: boolean
          enum:
          - false
          writeOnly: true
        assetId:
          $ref: '#/components/schemas/Id'
        quantity:
          title: Payment Amount
          type: number
          minimum: 0
        senderId:
          $ref: '#/components/schemas/Id'
        receiverId:
          $ref: '#/components/schemas/Id'
        destinationProvider:
          $ref: '#/components/schemas/PaymentDestinationProvider'
        destinationId:
          $ref: '#/components/schemas/PaymentDestinationId'
        destinationType:
          $ref: '#/components/schemas/PaymentDestinationType'
      required:
      - senderId
      - receiverId
      - assetId
      - quantity
      - destinationProvider
    EffectiveDate:
      allOf:
      - $ref: '#/components/schemas/DateTime'
      - title: Effective Transfer Date
        description: The effective date and time of the transfer in ISO format with timezone defined.
    DateTime:
      type: string
      format: date-time
    AssetTransformationOperation:
      type: object
      description: Operation that indicates asset(s) transformation into an arbitrary amount of some different asset(s)
      properties:
        id:
          $ref: '#/components/schemas/Id'
        transactionId:
          $ref: '#/components/schemas/Id'
        assetId:
          $ref: '#/components/schemas/Id'
        code:
          $ref: '#/components/schemas/AssetCode'
        description:
          $ref: '#/components/schemas/AssetDescription'
        uom:
          $ref: '#/components/schemas/AssetUom'
        sources:
          type: array
          description: Transformed assets. For each transformed asset there is a separate operation within the transaction. This list always includes asset transformed by this operation
          items:
            $ref: '#/components/schemas/TransformingAsset'
        destinations:
          type: array
          description: Resulting assets. This list always includes resulting asset from this operation
          items:
            $ref: '#/components/schemas/TransformingAsset'
        direction:
          type: string
        qty:
          type: number
          minimum: 0
        sent:
          type: number
        sourceOperations:
          $ref: '#/components/schemas/SourceOperations'
        sourcesCount:
          $ref: '#/components/schemas/SourcesCount'
        creator:
          type: object
          properties:
            id:
              $ref: '#/components/schemas/ImmutableId'
            name:
              type: string
        creatorUser:
          type: object
          properties:
            id:
              $ref: '#/components/schemas/Imm

# --- truncated at 32 KB (46 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/banqu/refs/heads/main/openapi/banqu-asset-transactions-api-openapi.yml