openapi: 3.0.0 info: title: Bakkt Crypto Solutions Accounts Partner Party Linking 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 Linking paths: /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/plaidAccount/link: post: tags: - Partner Party Linking summary: Link a Plaid account using processor token description: Send a processor token to link Plaid account operationId: addBankAccount 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/PlaidAccountLinkingRequest' required: true responses: '200': description: OK content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/AccountLinkResponse' '400': description: Bad Request content: '*/*': schema: $ref: '#/components/schemas/PublicApiError' /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/bankAccount: post: tags: - Partner Party Linking summary: Add Bank Account description: Add bank account details to a consumer account at Bakkt. Test Environment Use Only operationId: addManualBankAccount 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/CreateBankAccountRequest' required: true responses: '200': description: OK content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/CreateBankAccountResponse' '400': description: Bad Request content: '*/*': schema: $ref: '#/components/schemas/PublicApiError' /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/fiatAccount/unlink: post: tags: - Partner Party Linking summary: Unlink a fiat account description: Unlink a linked consumer fiat account operationId: removeFiatAccount deprecated: true 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/AccountUnLinkingRequest' required: true responses: '201': description: Transaction created content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/AccountUnLinkingResponse' '400': description: Bad Request content: '*/*': schema: $ref: '#/components/schemas/PublicApiError' components: schemas: 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 AccountLinkResponse: type: object properties: success: type: boolean CreateBankAccountResponse: type: object properties: success: type: boolean CreateBankAccountRequest: required: - accountNumber - routingNumber - accountType type: object properties: accountDisplayName: type: string accountNumber: type: string accountStatus: type: string accountType: type: string bankName: type: string routingNumber: type: string AccountUnLinkingResponse: type: object properties: success: type: boolean PlaidAccountLinkingRequest: required: - processorToken - partnerTransactionRef type: object properties: processorToken: type: string partnerTransactionRef: type: string AccountUnLinkingRequest: type: object properties: instrumentType: type: string enum: - ACH - DEBIT 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