Nestcoin exchange-external-api API

The exchange-external-api API from Nestcoin — 13 operation(s) for exchange-external-api.

OpenAPI Specification

nestcoin-exchange-external-api-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  version: 3.0.2
  title: Onboard External API Gateway auth-oauth exchange-external-api API
  description: "**Introduction**\nAPI Gateway for Onboard\n\nThis specification describes API endpoints that are available to the public internet via the API gateway. The different endpoints require different authentication schemes, see documentation for what applies to the operation you want to access.\n\n**Errors**\nUses conventional HTTP response codes to indicate success or failure. In\ngeneral:\n \n- `2xx` status codes indicate success. Codes in the\n- `4xx` range\nindicate a client error (e.g. required parameters, failed request etc.).\n- `5xx` status codes indicate a server error occurred."
  contact:
    name: Nestcoin TechOps
    email: techops@nestcoin.com
  license:
    name: UNLICENSED
servers:
- url: https://external.dev.onboardpay.co
  description: Gateway for external API on staging environment.
tags:
- name: exchange-external-api
paths:
  /exchange/api/info:
    x-original-path: /api/info
    get:
      tags:
      - exchange-external-api
      summary: Get CEX Profile
      operationId: queryMyBusinessInfo
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CexProfileDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security:
      - authToken: []
      x-visibility: external
  /exchange/orders/trade:
    x-original-path: /orders/trade
    get:
      tags:
      - exchange-external-api
      summary: Start a trade
      operationId: createOrder
      parameters:
      - name: apiKey
        in: query
        description: CEX api key
        required: true
        schema:
          type: string
      - name: product
        in: query
        description: Integration product in use e.g web3 or custodial
        required: true
        schema:
          $ref: '#/components/schemas/CreateOrderProductEnum'
      - name: orderId
        in: query
        description: Order ID generated for offramp trades
        schema:
          type: string
      - name: tradeType
        in: query
        description: Type of trade
        required: true
        schema:
          $ref: '#/components/schemas/CreateOrderTradeTypeEnum'
      - name: fiat
        in: query
        description: Symbol of fiat currency
        required: true
        schema:
          type: string
      - name: fiatAmount
        in: query
        description: Fiat amount
        schema:
          type: number
      - name: token
        in: query
        description: Symbol of token asset
        required: true
        schema:
          type: string
      - name: tokenAmount
        in: query
        description: Token amount
        schema:
          type: number
      - name: networkId
        in: query
        description: Onboard blockchain network identifier or chain Id e.g Base will be `base` or `8453` or `0x2105`
        schema:
          type: string
      - name: address
        in: query
        description: Wallet address to be debited/credited in order
        schema:
          type: string
      - name: paymentChannel
        in: query
        description: Payment channel
        schema:
          type: string
      - name: email
        in: query
        description: Customer's email address
        schema:
          type: string
      - name: autoselect
        in: query
        description: Offer auto select flag
        schema:
          type: boolean
          default: true
      responses:
        '301':
          description: Redirect
          content: {}
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security: []
      x-visibility: external
  /exchange/api/orders/trade-options:
    x-original-path: /api/orders/trade-options
    get:
      tags:
      - exchange-external-api
      summary: Trade options / configurations for onboard
      operationId: getTradeOptions
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradeOptions'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      x-visibility: external
      security: []
  /exchange/api/orders/price:
    x-original-path: /api/orders/price
    get:
      tags:
      - exchange-external-api
      summary: Get best price for order
      operationId: getPrice
      parameters:
      - $ref: '#/components/parameters/ExchangeSvctradeTypeQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcfiatQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcfiatAmountQueryParam'
      - $ref: '#/components/parameters/ExchangeSvctokenQueryParam'
      - $ref: '#/components/parameters/ExchangeSvctokenAmountQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcnetworkQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcpaymentChannelQueryParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PriceDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      x-visibility: external
      security: []
  /exchange/api/orders/trade-url:
    x-original-path: /api/orders/trade-url
    get:
      tags:
      - exchange-external-api
      summary: Fetch trade url
      operationId: initTrade
      parameters:
      - name: apiKey
        in: query
        description: CEX api key
        required: true
        schema:
          type: string
      - name: product
        in: query
        description: Integration product in use e.g web3 or custodial
        required: true
        schema:
          $ref: '#/components/schemas/InitTradeProductEnum'
      - name: orderId
        in: query
        description: Order ID generated for offramp trades
        schema:
          type: string
      - name: tradeType
        in: query
        description: Type of trade
        required: true
        schema:
          $ref: '#/components/schemas/InitTradeTradeTypeEnum'
      - name: fiat
        in: query
        description: Symbol of fiat currency
        required: true
        schema:
          type: string
      - name: fiatAmount
        in: query
        description: Fiat amount
        schema:
          type: number
      - name: token
        in: query
        description: Symbol of token asset
        required: true
        schema:
          type: string
      - name: tokenAmount
        in: query
        description: Token amount
        schema:
          type: number
      - name: networkId
        in: query
        description: Onboard blockchain network identifier or chain Id e.g Base will be `base` or `8453` or `0x2105`
        schema:
          type: string
      - name: address
        in: query
        description: Wallet address to be debited/credited in order
        schema:
          type: string
      - name: paymentChannel
        in: query
        description: Payment channel
        schema:
          type: string
      - name: email
        in: query
        description: Customer's email address
        schema:
          type: string
      - name: autoselect
        in: query
        description: Offer auto select flag
        schema:
          type: boolean
          default: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateOrderDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      x-visibility: external
      security: []
  /exchange/api/cexs/signers:
    x-original-path: /api/cexs/signers
    get:
      tags:
      - exchange-external-api
      summary: Query CEX signer addresses
      operationId: querySignersExternal
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                required:
                - signers
                type: object
                properties:
                  signers:
                    uniqueItems: true
                    type: array
                    items:
                      $ref: '#/components/schemas/CexSignerDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security:
      - authToken: []
      x-visibility: external
  /exchange/api/cexs/signers/{networkId}:
    x-original-path: /api/cexs/signers/{networkId}
    get:
      tags:
      - exchange-external-api
      summary: Query CEX network signer
      operationId: queryNetworkSignerExternal
      parameters:
      - name: networkId
        in: path
        description: Supported network ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CexSignerDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security:
      - authToken: []
      x-visibility: external
  /exchange/api/cexs/liquidity-pools:
    x-original-path: /api/cexs/liquidity-pools
    get:
      tags:
      - exchange-external-api
      summary: Get CEX deployed liquidity pool contract data
      operationId: queryLiquidityPoolsExternal
      parameters:
      - name: networkId
        in: query
        description: Onboard blockchain network identifier or chain Id e.g Base will be `base` or `8453` or `0x2105`
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  liquidityPools:
                    type: array
                    items:
                      $ref: '#/components/schemas/LiquidityPoolDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security:
      - authToken: []
      x-visibility: external
    post:
      tags:
      - exchange-external-api
      summary: Create liquidity pool contract for CEX
      operationId: deployLiquidityPoolExternal
      requestBody:
        description: Request data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeployLiquidityPoolCommand'
        required: false
      responses:
        '201':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LiquidityPoolDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security:
      - authToken: []
      x-visibility: external
      x-codegen-request-body-name: body
  /exchange/api/cexs/liquidity-pools/{poolAddress}/balances:
    x-original-path: /api/cexs/liquidity-pools/{poolAddress}/balances
    get:
      tags:
      - exchange-external-api
      summary: Get CEX token and coin balances
      operationId: fetchLiquidityPoolBalanceExternal
      parameters:
      - name: networkId
        in: query
        description: Onboard blockchain network identifier or chain Id e.g Base will be `base` or `8453` or `0x2105`
        schema:
          type: string
      - name: poolAddress
        in: path
        description: Account address for liquidity pool
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  balances:
                    type: array
                    items:
                      $ref: '#/components/schemas/LiquidityPoolBalanceDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security:
      - authToken: []
      x-visibility: external
  /exchange/api/orders:
    x-original-path: /api/orders
    get:
      tags:
      - exchange-external-api
      summary: Retrieve list of exchange orders
      operationId: getExchangeOrdersExternal
      parameters:
      - name: from
        in: query
        description: 15-04-2022
        schema:
          type: string
          format: date
      - name: to
        in: query
        description: 15-08-2022
        schema:
          type: string
          format: date
      - name: size
        in: query
        schema:
          maximum: 100
          type: integer
          default: 20
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      - name: transactionType
        in: query
        schema:
          $ref: '#/components/schemas/GetExchangeOrdersExternalTransactionTypeEnum'
      - name: statuses
        in: query
        style: form
        explode: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/GetExchangeOrdersExternalStatusesEnum'
      - name: token
        in: query
        schema:
          type: string
      - name: fiat
        in: query
        schema:
          type: string
      - name: network
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeOrdersResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security:
      - authToken: []
      x-visibility: external
  /exchange/api/business/orders/{cexOrderId}:
    x-original-path: /api/business/orders/{cexOrderId}
    get:
      tags:
      - exchange-external-api
      summary: Retrieve an exchange order by cexOrderId
      operationId: getExchangeOrderByIdExternal
      parameters:
      - name: cexOrderId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeOrderDTO'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security:
      - authToken: []
      x-visibility: external
  /exchange/api/offers:
    x-original-path: /api/offers
    get:
      tags:
      - exchange-external-api
      summary: Find offers using trading parameters
      operationId: extFindOffers
      x-visibility: external
      parameters:
      - $ref: '#/components/parameters/ExchangeSvcofferTypeQueryParam'
      - $ref: '#/components/parameters/ExchangeSvctokenQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcfiatQueryParam'
      - $ref: '#/components/parameters/ExchangeSvctokenAmountQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcfiatAmountQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcnetworkQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcpaymentChannelQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcpaymentChannelTypeQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcmerchantIdQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcpageQueryParam'
      - $ref: '#/components/parameters/ExchangeSvclimitQueryParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  offers:
                    type: array
                    items:
                      $ref: '#/components/schemas/OfferDto'
                  orderRequestTradeId:
                    type: string
                  currentPage:
                    type: number
                  totalPages:
                    type: number
                  totalCount:
                    type: number
                  totalPairOffers:
                    type: number
                required:
                - currentPage
                - totalPages
                - totalCount
                - offers
                - orderRequestTradeId
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security: []
  /exchange/api/offers/best-offer:
    x-original-path: /api/offers/best-offer
    get:
      tags:
      - exchange-external-api
      summary: Get best offer using trade parameters
      operationId: getBestOfferExchange
      x-visibility: external
      parameters:
      - $ref: '#/components/parameters/ExchangeSvcofferTypeQueryParam'
      - $ref: '#/components/parameters/ExchangeSvctokenQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcfiatQueryParam'
      - $ref: '#/components/parameters/ExchangeSvctokenAmountQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcfiatAmountQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcnetworkQueryParam'
      - $ref: '#/components/parameters/ExchangeSvcpaymentChannelQueryParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  offer:
                    $ref: '#/components/schemas/BestOfferDTO'
                  orderRequestTradeId:
                    type: string
                required:
                - offer
                - orderRequestTradeId
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageDto'
      security: []
components:
  schemas:
    DeployLiquidityPoolCommand:
      required:
      - cexSigner
      - networkId
      type: object
      properties:
        networkId:
          type: string
          description: ID for network
          example: bsc_testnet
        cexSigner:
          type: string
          description: CEX signer wallet address
          example: 0
      x-source-svc: exchange
    ErrorMessageDto:
      description: Default error object for services. This gives consistent error object that all services may use.
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          description: Error code
          example: UNKNOWN_ERROR
        message:
          type: string
          description: Descriptive error message
          example: Request could not be completed due to an error
        data:
          type: object
          description: Additional data for this error message.
          additionalProperties: true
          properties: {}
      x-common-model: ErrorMessageDto
    ExchangeOrdersResponse:
      type: object
      properties:
        orders:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeOrderDTO'
        pageNumber:
          type: integer
        pageSize:
          type: integer
        totalPages:
          type: integer
        totalOrders:
          type: integer
      x-source-svc: exchange
    TradeMode:
      type: string
      enum:
      - P2P
      - IP
      - OTC
      x-source-svc: exchange
    WalletDTO:
      type: object
      properties:
        walletAddress:
          type: string
          example: 0
        networkId:
          type: string
          example: bsc_testnet
        walletName:
          type: string
          example: My Trust Wallet
      x-source-svc: exchange
    InitTradeTradeTypeEnum:
      type: string
      enum:
      - BUY
      - SELL
      x-source-svc: exchange
    CexProfileDto:
      required:
      - businessCategory
      - businessEmail
      - businessFormationDate
      - businessId
      - businessIndustry
      - businessLocation
      - businessName
      - businessRegCountry
      - businessRegNo
      - createdAt
      - legalEntityType
      - monthlyTransactionVolume
      - operatesInRestrictedRegions
      - taxCountry
      - taxIdentificationNumber
      - transactsOnBehalfOfThirdParties
      - updatedAt
      type: object
      properties:
        businessId:
          type: string
          description: General format for UUID
          format: uuid
          example: 3a5aaea8-504a-4404-ad3d-b82574fba5e5
        businessName:
          type: string
          description: Registered name of business entity
          example: Onabord exchange
        businessEmail:
          type: string
          format: email
          description: Business profile email address
        businessLocation:
          type: string
          description: business full location address
        productName:
          type: string
          description: Product name
        productWebsiteUrl:
          type: string
          description: HTTP link to the product / business website
          format: url
        productDescription:
          type: string
          description: Description of product
        businessPhoneNumber:
          pattern: \+[1-9][0-9]{0,3}[0-9]{7,14}
          type: string
          description: Phone number field.
        businessRegNo:
          type: string
          description: Business registration number (if any)
        businessRegCountry:
          type: string
          description: Business country of registration (if any)
        businessLogoUrl:
          type: string
          description: HTTP link to business image logo
          format: url
        businessFormationDate:
          type: string
          description: Date the business entity was formed
          format: date
        businessType:
          type: string
        businessIndustry:
          $ref: '#/components/schemas/BusinessIndustry'
        enabledProducts:
          type: array
          items:
            type: string
        operatingAddress:
          type: string
          description: Operating address, when different from the registered address
        taxCountry:
          type: string
          description: Tax residency country, Valid alpha2 country code
          minLength: 2
          maxLength: 2
        taxIdentificationNumber:
          type: string
          description: Business tax identification number (TIN)
        legalEntityType:
          $ref: '#/components/schemas/LegalEntityType'
        businessCategory:
          $ref: '#/components/schemas/BusinessCategory'
        monthlyTransactionVolume:
          type: string
          description: Current monthly transaction volume bucket in USD
        transactsOnBehalfOfThirdParties:
          type: boolean
          description: Whether the business transacts on behalf of other parties
        operatesInRestrictedRegions:
          type: boolean
          description: Whether the business operates in or serves customers from restricted regions
        restrictedRegions:
          type: string
          description: Free-text list of restricted regions, when applicable
        ultimateBeneficialOwners:
          type: array
          items:
            $ref: '#/components/schemas/UltimateBeneficialOwner'
        directors:
          type: array
          items:
            $ref: '#/components/schemas/BusinessDirector'
        authorisedSignatories:
          type: array
          description: BVNs of authorised signatories (Nigerian-registered entities)
          items:
            type: string
        documents:
          type: array
          items:
            $ref: '#/components/schemas/BusinessDocument'
        declarationAcceptedAt:
          type: string
          format: date-time
          description: Timestamp field.
          x-faker: date.recent
        createdAt:
          type: string
          format: date-time
          description: Timestamp field.
          x-faker: date.recent
        updatedAt:
          type: string
          format: date-time
          description: Timestamp field.
          x-faker: date.recent
      description: CEX user profile object
      x-source-svc: exchange
    PartnerStats:
      type: object
      properties:
        partnerId:
          type: string
          format: uuid
        averageRating:
          type: number
          example: 3
        totalTransactions:
          type: number
        tradeCount:
          type: number
        completionPercentage:
          type: number
          format: double
          example: 94
        averageResponseTime:
          type: number
          format: double
          example: 5
      x-source-svc: exchange
    FeeConfig:
      type: object
      properties:
        tradeType:
          $ref: '#/components/schemas/OfferType'
        tradeMode:
          $ref: '#/components/schemas/TradeMode'
        base:
          type: number
          description: Flat fee that must be paid for irrespective of percentage fee
        tradePercentage:
          type: number
          description: Fee described as a percentage of the trade
        cap:
          type: number
          description: Maximum value a fee is allowed to have
        network:
          type: string
          description: 'The network this config should be applied to(There will always be at least

            one fee config, that config will have network value of `default`

            '
      required:
      - base
      - tradePercentage
      - network
      x-source-svc: exchange
    OfferPaymentChannelColor:
      type: object
      properties:
        bg:
          type: string
        fg:
          type: string
      required:
      - bg
      - fg
      x-source-svc: exchange
    OfferDto:
      type: object
      properties:
        offerId:
          type: string
          description: external offer id
        userId:
          type: string
          description: userId of the merchant that created offer
        network:
          type: string
          description: id of network on which 

# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nestcoin/refs/heads/main/openapi/nestcoin-exchange-external-api-api-openapi.yml