Bakkt Partner Party Funding API

The Partner Party Funding API from Bakkt — 5 operation(s) for partner party funding.

OpenAPI Specification

bakkt-partner-party-funding-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Bakkt Crypto Solutions Accounts Partner Party Funding API
  version: '2.0'
  description: The Bakkt Crypto Solutions API is a REST-based API that provides a platform for clients, so their investors can purchase, hold, sell, and transfer digital assets. Clients must have authorization to use the APIs, secure endpoints, and facilities to ensure safe, fast execution and tracking of orders. Users must specify all date and time units using epoch time in UTC. The URL path includes a version number to indicate major versions which retain backward compatibility to other URLs with the same version prefix. This document is reconstructed by the API Evangelist enrichment pipeline from the per-endpoint OpenAPI fragments Bakkt publishes on its ReadMe developer hub (bakkt.readme.io); it merges the Crypto Solutions (/apex-crypto/api/v2) and Fiat/Partner (/partner/v1) endpoint families.
  termsOfService: https://bakkt.com/user-agreement
  contact:
    name: Bakkt User Account Agreement
    url: https://bakkt.com/user-agreement
servers:
- url: https://api.bakkt.com
  description: Bakkt API gateway (dedicated per-client, IP-whitelisted; base paths /apex-crypto/api/v2 and /partner/v1)
tags:
- name: Partner Party Funding
paths:
  /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/wire-instructions:
    get:
      tags:
      - Partner Party Funding
      summary: Generate inbound wire instructions
      description: Generate end user specific inbound wire instructions for fiat deposit. Reponse not to be cached. Bank instructions may change over time.
      operationId: generateWireInstructions
      parameters:
      - name: partnerId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: partnerPartyRef
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Request Accepted
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/WireInstructionsResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PublicApiError'
  /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/fiatAccount/balance:
    get:
      tags:
      - Partner Party Funding
      summary: Retrieve Fiat Account Balance
      description: Retrieve the fiat account balance of a consumer
      operationId: getFiatAccountBalance
      parameters:
      - name: partnerId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: partnerPartyRef
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json;charset=UTF-8:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/GetFiatAccountBalanceResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PublicApiError'
  /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/bankAccountLinking/ach:
    post:
      tags:
      - Partner Party Funding
      summary: Add Bank Account - ACH
      operationId: linkBankAccountAchAsync
      parameters:
      - name: partnerId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: partnerPartyRef
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/LinkBankAccountAchRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/LinkBankAccountAchResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PublicApiError'
  /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/transfer:
    post:
      tags:
      - Partner Party Funding
      summary: Deposit or withdraw funds
      description: Initiate deposit or withdraw on behalf of the consumer on linked fiat account.
      operationId: transferFiatCurrency
      parameters:
      - name: partnerId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: partnerPartyRef
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/TransferRequest'
        required: true
      responses:
        '200':
          description: Request Accepted
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PublicApiError'
  /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/bankAccountLinking/unlink:
    post:
      tags:
      - Partner Party Funding
      summary: Unlink fiat Account
      operationId: unlinkBankAccount
      parameters:
      - name: partnerId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: partnerPartyRef
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: x-tracking-id
        in: header
        required: false
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/UnlinkBankAccountRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/UnlinkBankAccountResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PublicApiError'
components:
  schemas:
    TransferRequest:
      type: object
      required:
      - amount
      - currency
      - fiatTransactType
      - idempotencyKey
      - instrumentType
      - partnerTransactionRef
      properties:
        amount:
          type: number
          format: double
        currency:
          type: string
          enum:
          - USD
        fiatTransactType:
          type: string
          enum:
          - DEPOSIT
          - WITHDRAW
        idempotencyKey:
          type: string
        instrumentType:
          type: string
          enum:
          - ACH
          - DEBIT
          - WIRE
        partnerTransactionRef:
          type: string
        wireWithdrawDetails:
          $ref: '#/components/schemas/WireWithdrawDetails'
    GetFiatAccountBalanceResponse:
      required:
      - partnerPartyRef
      - currency
      - settledAmount
      - unsettledAmount
      type: object
      properties:
        partnerPartyRef:
          type: string
          description: The Partner's primary key for this Party
          example: b9e930d0-372a-48f0-9c04-fd51c58eafb6
        currency:
          type: string
          description: Currency of the settled and unsettled amounts
          example: USD
        settledAmount:
          type: number
          description: Settled Fiat Account balance
          example: 50.01
        unsettledAmount:
          type: number
          description: Unsettled Fiat Account balance
          example: 100.01
    UnlinkBankAccountRequest:
      required:
      - instrumentType
      - partnerTransactionRef
      type: object
      properties:
        instrumentType:
          type: string
          enum:
          - ACH
          - DEBIT
          - TPJ
          - WIRE
        partnerTransactionRef:
          maxLength: 255
          minLength: 0
          type: string
    LinkBankAccountAchRequest:
      required:
      - accountNumber
      - accountType
      - partnerTransactionRef
      - routingNumber
      type: object
      properties:
        accountNumber:
          type: string
        accountType:
          type: string
        partnerTransactionRef:
          maxLength: 255
          minLength: 0
          type: string
        routingNumber:
          type: string
    PublicApiError:
      type: object
      properties:
        description:
          type: string
          description: Message from the exception
          example: Parameter passed for field is not meeting its required format.
        detail:
          type: string
          description: Description of the type
          example: validation error
        details:
          type: array
          items:
            $ref: '#/components/schemas/PublicApiErrorDetail'
        type:
          type: string
          example: INVALID_FIELD_VALUE
    LinkBankAccountAchResponse:
      type: object
      properties:
        success:
          type: boolean
    WireInstructionsResponse:
      type: object
      required:
      - wireReferenceNumber
      - wireRoutingNumber
      - wireAccountNumber
      - wireSwiftCode
      - wireBankName
      - wireBankAddress
      - wireBeneficiaryName
      - wireBeneficiaryAddress
      properties:
        wireReferenceNumber:
          type: string
        wireRoutingNumber:
          type: string
        wireAccountNumber:
          type: string
        wireSwiftCode:
          type: string
        wireBankName:
          type: string
        wireBankAddress:
          type: string
        wireBeneficiaryName:
          type: string
        wireBeneficiaryAddress:
          type: string
    UnlinkBankAccountResponse:
      type: object
      properties:
        success:
          type: boolean
    WireWithdrawDetails:
      type: object
      properties:
        wireRoutingNumber:
          type: string
        wireAccountNumber:
          type: string
        wireBankName:
          type: string
        wireBankAddress:
          type: string
        wireSwiftCode:
          type: string
    PublicApiErrorDetail:
      type: object
      properties:
        description:
          type: string
          description: Human readable error description
          example: Validation Error.
        field:
          type: string
          example: id
        rejectedValue:
          type: object
          example: i-am-not-a-uuid
        type:
          type: string
          example: VALIDATION_ERROR