Files
CrimsonandGitHub 5bc95257a2 feat(pools): Add new endpoint that returns latest pool balance (#442)
* Add method to fetch latest balance from storage

* Add functionality to fetch latest pool balance if at value is current time

* Add new API endpoint for fetching latest pool balances

* Generate openapi specs for new latest balances endpoint

* Add e2e test for new pool balances endpoint
2025-05-14 14:57:07 +00:00

2638 lines
68 KiB
YAML

openapi: 3.0.3
info:
title: Payments API
version: v1
paths:
/payments:
post:
summary: Create a payment
tags:
- payments.v1
operationId: createPayment
description: Create a payment
requestBody:
$ref: '#/components/requestBodies/Payment'
responses:
'200':
$ref: '#/components/responses/Payment'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
get:
summary: List payments
operationId: listPayments
tags:
- payments.v1
parameters:
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Cursor'
- $ref: '#/components/parameters/Sort'
- $ref: '#/components/parameters/Query'
responses:
'200':
$ref: '#/components/responses/Payments'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/payments/{paymentId}:
get:
summary: Get a payment
tags:
- payments.v1
operationId: getPayment
parameters:
- $ref: '#/components/parameters/PaymentId'
responses:
'200':
$ref: '#/components/responses/Payment'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/payments/{paymentId}/metadata:
patch:
summary: Update metadata
tags:
- payments.v1
operationId: updateMetadata
parameters:
- $ref: '#/components/parameters/PaymentId'
requestBody:
$ref: '#/components/requestBodies/UpdateMetadata'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/transfer-initiations:
get:
summary: List Transfer Initiations
operationId: listTransferInitiations
tags:
- payments.v1
parameters:
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Cursor'
- $ref: '#/components/parameters/Sort'
- $ref: '#/components/parameters/Query'
responses:
'200':
$ref: '#/components/responses/TransferInitiations'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
post:
summary: Create a TransferInitiation
tags:
- payments.v1
operationId: createTransferInitiation
description: Create a transfer initiation
requestBody:
$ref: '#/components/requestBodies/TransferInitiation'
responses:
'200':
$ref: '#/components/responses/TransferInitiation'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/transfer-initiations/{transferId}:
get:
summary: Get a transfer initiation
tags:
- payments.v1
operationId: getTransferInitiation
parameters:
- $ref: '#/components/parameters/TransferId'
responses:
'200':
$ref: '#/components/responses/TransferInitiation'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
delete:
summary: Delete a transfer initiation
operationId: deleteTransferInitiation
tags:
- payments.v1
description: Delete a transfer initiation by its id.
parameters:
- $ref: '#/components/parameters/TransferId'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/transfer-initiations/{transferId}/status:
post:
summary: Update the status of a transfer initiation
tags:
- payments.v1
operationId: updateTransferInitiationStatus
description: Update a transfer initiation status
parameters:
- $ref: '#/components/parameters/TransferId'
requestBody:
$ref: '#/components/requestBodies/UpdateTransferInitiationStatus'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/transfer-initiations/{transferId}/reverse:
post:
summary: Reverse a transfer initiation
tags:
- payments.v1
operationId: reverseTransferInitiation
description: Reverse transfer initiation
parameters:
- $ref: '#/components/parameters/TransferId'
requestBody:
$ref: '#/components/requestBodies/ReverseTransferInitiation'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/transfer-initiations/{transferId}/retry:
post:
summary: Retry a failed transfer initiation
tags:
- payments.v1
operationId: retryTransferInitiation
description: Retry a failed transfer initiation
parameters:
- $ref: '#/components/parameters/TransferId'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/pools:
get:
summary: List Pools
operationId: listPools
tags:
- payments.v1
parameters:
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Cursor'
- $ref: '#/components/parameters/Sort'
- $ref: '#/components/parameters/Query'
responses:
'200':
$ref: '#/components/responses/Pools'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
post:
summary: Create a Pool
tags:
- payments.v1
operationId: createPool
description: Create a Pool
requestBody:
$ref: '#/components/requestBodies/Pool'
responses:
'200':
$ref: '#/components/responses/Pool'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/pools/{poolId}:
get:
summary: Get a Pool
tags:
- payments.v1
operationId: getPool
parameters:
- $ref: '#/components/parameters/PoolId'
responses:
'200':
$ref: '#/components/responses/Pool'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
delete:
summary: Delete a Pool
operationId: deletePool
tags:
- payments.v1
description: Delete a pool by its id.
parameters:
- $ref: '#/components/parameters/PoolId'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/pools/{poolId}/accounts:
post:
summary: Add an account to a pool
tags:
- payments.v1
operationId: addAccountToPool
description: Add an account to a pool
parameters:
- $ref: '#/components/parameters/PoolId'
requestBody:
$ref: '#/components/requestBodies/AddAccountToPool'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/pools/{poolId}/accounts/{accountId}:
delete:
summary: Remove an account from a pool
operationId: removeAccountFromPool
tags:
- payments.v1
description: Remove an account from a pool by its id.
parameters:
- $ref: '#/components/parameters/PoolId'
- $ref: '#/components/parameters/AccountId'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/pools/{poolId}/balances:
get:
summary: Get historical pool balances at a particular point in time
operationId: getPoolBalances
tags:
- payments.v1
parameters:
- $ref: '#/components/parameters/PoolId'
- name: at
in: query
description: |
Filter balances by date.
required: true
schema:
type: string
format: date-time
responses:
'200':
$ref: '#/components/responses/PoolBalances'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/pools/{poolId}/balances/latest:
get:
summary: Get latest pool balances
operationId: getPoolBalancesLatest
tags:
- payments.v1
parameters:
- $ref: '#/components/parameters/PoolId'
responses:
'200':
$ref: '#/components/responses/PoolBalances'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/accounts:
post:
summary: Create an account
tags:
- payments.v1
operationId: createAccount
description: Create an account
requestBody:
$ref: '#/components/requestBodies/Account'
responses:
'200':
$ref: '#/components/responses/Account'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
get:
summary: List accounts
operationId: listAccounts
tags:
- payments.v1
parameters:
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Cursor'
- $ref: '#/components/parameters/Sort'
- $ref: '#/components/parameters/Query'
requestBody:
content:
application/json:
schema:
type: object
additionalProperties: true
responses:
'200':
$ref: '#/components/responses/Accounts'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/accounts/{accountId}:
get:
summary: Get an account
tags:
- payments.v1
operationId: getAccount
parameters:
- $ref: '#/components/parameters/AccountId'
responses:
'200':
$ref: '#/components/responses/Account'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/accounts/{accountId}/balances:
get:
summary: Get account balances
operationId: getAccountBalances
tags:
- payments.v1
parameters:
- $ref: '#/components/parameters/AccountId'
- name: limit
in: query
description: The maximum number of results to return per page.
required: false
schema:
type: integer
format: int64
- name: asset
in: query
description: |
Filter balances by currency.
If not specified, all account's balances will be returned.
required: false
schema:
type: string
- name: from
in: query
description: |
Filter balances by date.
If not specified, all account's balances will be returned.
required: false
schema:
type: string
format: date-time
- name: to
in: query
description: |
Filter balances by date.
If not specified, default will be set to now.
required: false
schema:
type: string
format: date-time
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Cursor'
- $ref: '#/components/parameters/Sort'
responses:
'200':
$ref: '#/components/responses/AccountBalances'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/bank-accounts:
post:
summary: Create a BankAccount in Payments and on the PSP
tags:
- payments.v1
operationId: createBankAccount
description: Create a bank account in Payments and on the PSP.
requestBody:
$ref: '#/components/requestBodies/BankAccount'
responses:
'200':
$ref: '#/components/responses/BankAccount'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
get:
summary: List bank accounts created by user on Formance
operationId: listBankAccounts
tags:
- payments.v1
parameters:
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Cursor'
- $ref: '#/components/parameters/Sort'
description: List all bank accounts created by user on Formance.
responses:
'200':
$ref: '#/components/responses/BankAccounts'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/bank-accounts/{bankAccountId}:
get:
summary: Get a bank account created by user on Formance
tags:
- payments.v1
operationId: getBankAccount
parameters:
- $ref: '#/components/parameters/BankAccountId'
responses:
'200':
$ref: '#/components/responses/BankAccount'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/bank-accounts/{bankAccountId}/forward:
post:
summary: Forward a bank account to a connector
tags:
- payments.v1
operationId: forwardBankAccount
parameters:
- $ref: '#/components/parameters/BankAccountId'
requestBody:
$ref: '#/components/requestBodies/ForwardBankAccount'
responses:
'200':
$ref: '#/components/responses/BankAccount'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/bank-accounts/{bankAccountId}/metadata:
patch:
summary: Update metadata of a bank account
tags:
- payments.v1
operationId: updateBankAccountMetadata
parameters:
- $ref: '#/components/parameters/BankAccountId'
requestBody:
$ref: '#/components/requestBodies/UpdateBankAccountMetadata'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/connectors:
get:
summary: List all installed connectors
operationId: listAllConnectors
tags:
- payments.v1
description: List all installed connectors.
responses:
'200':
$ref: '#/components/responses/Connectors'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/connectors/configs:
get:
summary: List the configs of each available connector
operationId: listConfigsAvailableConnectors
tags:
- payments.v1
description: List the configs of each available connector.
responses:
'200':
$ref: '#/components/responses/ConnectorsConfigs'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/connectors/{connector}:
post:
summary: Install a connector
tags:
- payments.v1
operationId: installConnector
description: Install a connector by its name and config.
parameters:
- $ref: '#/components/parameters/Connector'
requestBody:
$ref: '#/components/requestBodies/ConnectorConfig'
responses:
'201':
$ref: '#/components/responses/ConnectorInstalled'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
delete:
summary: Uninstall a connector
deprecated: true
operationId: uninstallConnector
tags:
- payments.v1
description: Uninstall a connector by its name.
parameters:
- $ref: '#/components/parameters/Connector'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/connectors/{connector}/{connectorId}:
delete:
summary: Uninstall a connector
operationId: uninstallConnectorV1
tags:
- payments.v1
description: Uninstall a connector by its name.
parameters:
- $ref: '#/components/parameters/Connector'
- $ref: '#/components/parameters/ConnectorID'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/connectors/{connector}/config:
get:
summary: Read the config of a connector
deprecated: true
operationId: readConnectorConfig
tags:
- payments.v1
description: Read connector config
parameters:
- $ref: '#/components/parameters/Connector'
responses:
'200':
$ref: '#/components/responses/ConnectorConfig'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/connectors/{connector}/{connectorId}/config:
post:
summary: Update the config of a connector
operationId: updateConnectorConfigV1
tags:
- payments.v1
description: Update connector config
parameters:
- $ref: '#/components/parameters/Connector'
- $ref: '#/components/parameters/ConnectorID'
requestBody:
$ref: '#/components/requestBodies/ConnectorConfig'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
get:
summary: Read the config of a connector
operationId: readConnectorConfigV1
tags:
- payments.v1
description: Read connector config
parameters:
- $ref: '#/components/parameters/Connector'
- $ref: '#/components/parameters/ConnectorID'
responses:
'200':
$ref: '#/components/responses/ConnectorConfig'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/connectors/{connector}/reset:
post:
summary: Reset a connector
deprecated: true
operationId: resetConnector
tags:
- payments.v1
description: |
Reset a connector by its name.
It will remove the connector and ALL PAYMENTS generated with it.
parameters:
- $ref: '#/components/parameters/Connector'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/connectors/{connector}/{connectorId}/reset:
post:
summary: Reset a connector
operationId: resetConnectorV1
tags:
- payments.v1
description: |
Reset a connector by its name.
It will remove the connector and ALL PAYMENTS generated with it.
parameters:
- $ref: '#/components/parameters/Connector'
- $ref: '#/components/parameters/ConnectorID'
responses:
'204':
$ref: '#/components/responses/NoContent'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
/connectors/{connector}/tasks:
get:
summary: List tasks from a connector
deprecated: true
tags:
- payments.v1
operationId: listConnectorTasks
description: List all tasks associated with this connector.
parameters:
- $ref: '#/components/parameters/Connector'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Cursor'
responses:
'200':
$ref: '#/components/responses/Tasks'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/connectors/{connector}/{connectorId}/tasks:
get:
summary: List tasks from a connector
tags:
- payments.v1
operationId: listConnectorTasksV1
description: List all tasks associated with this connector.
parameters:
- $ref: '#/components/parameters/Connector'
- $ref: '#/components/parameters/ConnectorID'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Cursor'
responses:
'200':
$ref: '#/components/responses/Tasks'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/connectors/{connector}/tasks/{taskId}:
get:
summary: Read a specific task of the connector
deprecated: true
tags:
- payments.v1
operationId: getConnectorTask
description: Get a specific task associated to the connector.
parameters:
- $ref: '#/components/parameters/Connector'
- $ref: '#/components/parameters/TaskId'
responses:
'200':
$ref: '#/components/responses/Task'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/connectors/{connector}/{connectorId}/tasks/{taskId}:
get:
summary: Read a specific task of the connector
tags:
- payments.v1
operationId: getConnectorTaskV1
description: Get a specific task associated to the connector.
parameters:
- $ref: '#/components/parameters/Connector'
- $ref: '#/components/parameters/ConnectorID'
- $ref: '#/components/parameters/TaskId'
responses:
'200':
$ref: '#/components/responses/Task'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:read
/connectors/{connector}/transfers:
post:
summary: Transfer funds between Connector accounts
tags:
- payments.v1
operationId: connectorsTransfer
description: Execute a transfer between two accounts.
parameters:
- $ref: '#/components/parameters/Connector'
requestBody:
$ref: '#/components/requestBodies/Transfer'
responses:
'200':
$ref: '#/components/responses/Transfer'
default:
$ref: '#/components/responses/PaymentsErrorResponse'
security:
- Authorization:
- payments:write
components:
parameters:
Query:
name: query
in: query
required: false
description: |
Filters used to filter resources.
schema:
type: string
PageSize:
name: pageSize
in: query
description: |
The maximum number of results to return per page.
example: 100
schema:
type: integer
format: int64
minimum: 1
maximum: 1000
default: 15
Cursor:
name: cursor
in: query
description: |
Parameter used in pagination requests. Maximum page size is set to 15.
Set to the value of next for the next page of results.
Set to the value of previous for the previous page of results.
No other parameters can be set when this parameter is set.
schema:
type: string
example: aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==
Sort:
name: sort
in: query
schema:
type: array
items:
type: string
description: Fields used to sort payments (default is date:desc).
example:
- date:asc
- status:desc
PaymentId:
name: paymentId
in: path
schema:
type: string
description: The payment ID.
example: XXX
required: true
AccountId:
name: accountId
in: path
schema:
type: string
description: The account ID.
example: XXX
required: true
ConnectorID:
name: connectorId
in: path
schema:
type: string
description: The connector ID.
example: XXX
required: true
PoolId:
name: poolId
in: path
schema:
type: string
description: The pool ID.
example: XXX
required: true
TransferId:
name: transferId
in: path
schema:
type: string
description: The transfer ID.
example: XXX
required: true
BankAccountId:
name: bankAccountId
in: path
schema:
type: string
description: The bank account ID.
example: XXX
required: true
Connector:
name: connector
description: The name of the connector.
in: path
schema:
$ref: '#/components/schemas/Connector'
required: true
TaskId:
name: taskId
description: The task ID.
example: task1
in: path
schema:
type: string
required: true
responses:
NoContent:
description: No content
PaymentsErrorResponse:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentsErrorResponse'
Payments:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentsCursor'
Payment:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentResponse'
Pools:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolsCursor'
Pool:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResponse'
PoolBalances:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolBalancesResponse'
TransferInitiations:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TransferInitiationsCursor'
TransferInitiation:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TransferInitiationResponse'
Accounts:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AccountsCursor'
Account:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AccountResponse'
AccountBalances:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BalancesCursor'
ConnectorInstalled:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorResponse'
Connectors:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorsResponse'
BankAccounts:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BankAccountsCursor'
BankAccount:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BankAccountResponse'
ConnectorsConfigs:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorsConfigsResponse'
ConnectorConfig:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorConfigResponse'
Tasks:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TasksCursor'
Task:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TaskResponse'
Transfer:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TransferResponse'
requestBodies:
ConnectorConfig:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorConfig'
UpdateMetadata:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentMetadata'
Payment:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentRequest'
Account:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AccountRequest'
Pool:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PoolRequest'
AddAccountToPool:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddAccountToPoolRequest'
TransferInitiation:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TransferInitiationRequest'
ForwardBankAccount:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ForwardBankAccountRequest'
UpdateBankAccountMetadata:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateBankAccountMetadataRequest'
BankAccount:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BankAccountRequest'
UpdateTransferInitiationStatus:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTransferInitiationStatusRequest'
ReverseTransferInitiation:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReverseTransferInitiationRequest'
Transfer:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TransferRequest'
schemas:
CursorBase:
type: object
required:
- pageSize
- hasMore
- data
properties:
pageSize:
type: integer
format: int64
minimum: 1
maximum: 1000
example: 15
hasMore:
type: boolean
example: false
previous:
type: string
example: YXVsdCBhbmQgYSBtYXhpbXVtIG1heF9yZXN1bHRzLol=
next:
type: string
example: ''
PaymentsCursor:
type: object
required:
- cursor
properties:
cursor:
allOf:
- $ref: '#/components/schemas/CursorBase'
- type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/Payment'
PoolsCursor:
type: object
required:
- cursor
properties:
cursor:
allOf:
- $ref: '#/components/schemas/CursorBase'
- type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/Pool'
TransferInitiationsCursor:
type: object
required:
- cursor
properties:
cursor:
allOf:
- $ref: '#/components/schemas/CursorBase'
- type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/TransferInitiation'
BankAccountsCursor:
type: object
required:
- cursor
properties:
cursor:
allOf:
- $ref: '#/components/schemas/CursorBase'
- type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/BankAccount'
AccountsCursor:
type: object
required:
- cursor
properties:
cursor:
allOf:
- $ref: '#/components/schemas/CursorBase'
- type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/Account'
BalancesCursor:
type: object
required:
- cursor
properties:
cursor:
allOf:
- $ref: '#/components/schemas/CursorBase'
- type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/AccountBalance'
TasksCursor:
type: object
required:
- cursor
properties:
cursor:
allOf:
- $ref: '#/components/schemas/CursorBase'
- type: object
required:
- data
properties:
data:
type: array
items:
oneOf:
- $ref: '#/components/schemas/TaskStripe'
- $ref: '#/components/schemas/TaskWise'
- $ref: '#/components/schemas/TaskCurrencyCloud'
- $ref: '#/components/schemas/TaskDummyPay'
- $ref: '#/components/schemas/TaskModulr'
- $ref: '#/components/schemas/TaskBankingCircle'
- $ref: '#/components/schemas/TaskMangoPay'
- $ref: '#/components/schemas/TaskMoneycorp'
ConnectorConfigResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/ConnectorConfig'
PaymentResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Payment'
PoolBalancesResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/PoolBalances'
PoolResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Pool'
TransferInitiationResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/TransferInitiation'
AccountResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Account'
ConnectorResponse:
type: object
required:
- data
properties:
data:
type: object
required:
- connectorID
properties:
connectorID:
type: string
ConnectorsResponse:
type: object
required:
- data
properties:
data:
type: array
items:
type: object
required:
- provider
- name
- connectorID
properties:
provider:
$ref: '#/components/schemas/Connector'
name:
type: string
connectorID:
type: string
enabled:
type: boolean
BankAccountResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/BankAccount'
ConnectorsConfigsResponse:
type: object
required:
- data
properties:
data:
type: object
additionalProperties:
type: object
additionalProperties:
type: object
required:
- dataType
- required
properties:
dataType:
type: string
required:
type: boolean
defaultValue:
type: string
TaskResponse:
type: object
required:
- data
properties:
data:
oneOf:
- $ref: '#/components/schemas/TaskStripe'
- $ref: '#/components/schemas/TaskWise'
- $ref: '#/components/schemas/TaskCurrencyCloud'
- $ref: '#/components/schemas/TaskDummyPay'
- $ref: '#/components/schemas/TaskModulr'
- $ref: '#/components/schemas/TaskBankingCircle'
- $ref: '#/components/schemas/TaskMangoPay'
- $ref: '#/components/schemas/TaskMoneycorp'
TransferResponse:
type: object
properties:
id:
type: string
Connector:
type: string
enum:
- STRIPE
- DUMMY-PAY
- WISE
- MODULR
- CURRENCY-CLOUD
- BANKING-CIRCLE
- MANGOPAY
- MONEYCORP
- ATLAR
- ADYEN
- GENERIC
TransferInitiationStatus:
type: string
enum:
- WAITING_FOR_VALIDATION
- PROCESSING
- PROCESSED
- FAILED
- REJECTED
- VALIDATED
- ASK_RETRIED
- ASK_REVERSED
- REVERSE_PROCESSING
- REVERSE_FAILED
- PARTIALLY_REVERSED
- REVERSED
ConnectorConfig:
discriminator:
propertyName: provider
mapping:
Stripe: '#/components/schemas/StripeConfig'
Dummypay: '#/components/schemas/DummyPayConfig'
Wise: '#/components/schemas/WiseConfig'
Modulr: '#/components/schemas/ModulrConfig'
Currencycloud: '#/components/schemas/CurrencyCloudConfig'
Bankingcircle: '#/components/schemas/BankingCircleConfig'
Mangopay: '#/components/schemas/MangoPayConfig'
Moneycorp: '#/components/schemas/MoneycorpConfig'
Atlar: '#/components/schemas/AtlarConfig'
Adyen: '#/components/schemas/AdyenConfig'
Generic: '#/components/schemas/GenericConfig'
oneOf:
- $ref: '#/components/schemas/StripeConfig'
- $ref: '#/components/schemas/DummyPayConfig'
- $ref: '#/components/schemas/WiseConfig'
- $ref: '#/components/schemas/ModulrConfig'
- $ref: '#/components/schemas/CurrencyCloudConfig'
- $ref: '#/components/schemas/BankingCircleConfig'
- $ref: '#/components/schemas/MangoPayConfig'
- $ref: '#/components/schemas/MoneycorpConfig'
- $ref: '#/components/schemas/AtlarConfig'
- $ref: '#/components/schemas/AdyenConfig'
- $ref: '#/components/schemas/GenericConfig'
StripeConfig:
type: object
required:
- name
- apiKey
properties:
name:
type: string
example: My Stripe Account
provider:
type: string
default: Stripe
pollingPeriod:
type: string
example: 60s
description: >
The frequency at which the connector will try to fetch new
BalanceTransaction objects from Stripe API.
default: 120s
apiKey:
type: string
example: XXX
pageSize:
type: integer
format: int64
minimum: 0
description: |
Number of BalanceTransaction to fetch at each polling interval.
default: 10
example: 50
DummyPayConfig:
type: object
required:
- name
- directory
properties:
name:
type: string
example: My DummyPay Account
provider:
type: string
default: Dummypay
filePollingPeriod:
type: string
example: 60s
description: >-
The frequency at which the connector will try to fetch new payment
objects from the directory
default: 10s
directory:
type: string
example: /tmp/dummypay
prefixFileToIngest:
type: string
numberOfAccountsPreGenerated:
type: integer
format: int64
numberOfPaymentsPreGenerated:
type: integer
format: int64
WiseConfig:
type: object
required:
- name
- apiKey
properties:
name:
type: string
example: My Wise Account
provider:
type: string
default: Wise
apiKey:
type: string
example: XXX
pollingPeriod:
type: string
example: 60s
description: >
The frequency at which the connector will try to fetch new
BalanceTransaction objects from Wise API.
default: 120s
ModulrConfig:
type: object
required:
- name
- apiKey
- apiSecret
properties:
name:
type: string
example: My Modulr Account
provider:
type: string
default: Modulr
apiKey:
type: string
example: XXX
apiSecret:
type: string
example: XXX
endpoint:
type: string
example: XXX
pollingPeriod:
type: string
example: 60s
description: >
The frequency at which the connector will try to fetch new
BalanceTransaction objects from Modulr API.
default: 120s
BankingCircleConfig:
type: object
required:
- name
- username
- password
- endpoint
- authorizationEndpoint
- userCertificate
- userCertificateKey
properties:
name:
type: string
example: My Banking Circle Account
provider:
type: string
default: Bankingcircle
username:
type: string
example: XXX
password:
type: string
example: XXX
endpoint:
type: string
example: XXX
authorizationEndpoint:
type: string
example: XXX
userCertificate:
type: string
example: XXX
userCertificateKey:
type: string
example: XXX
pollingPeriod:
type: string
example: 60s
description: >
The frequency at which the connector will try to fetch new
BalanceTransaction objects from Banking Circle API.
default: 120s
GenericConfig:
type: object
required:
- name
- apiKey
- endpoint
properties:
name:
type: string
example: My Generic Account
provider:
type: string
default: Generic
apiKey:
type: string
example: XXX
endpoint:
type: string
example: XXX
pollingPeriod:
type: string
example: 60s
description: >
The frequency at which the connector will try to fetch new
BalanceTransaction objects from the API.
default: 120s
MangoPayConfig:
type: object
required:
- name
- clientID
- apiKey
- endpoint
properties:
name:
type: string
example: My MangoPay Account
provider:
type: string
default: Mangopay
pollingPeriod:
type: string
example: 60s
description: >
The frequency at which the connector will try to fetch new
BalanceTransaction objects from MangoPay API.
default: 120s
clientID:
type: string
example: XXX
apiKey:
type: string
example: XXX
endpoint:
type: string
example: XXX
MoneycorpConfig:
type: object
required:
- name
- clientID
- apiKey
- endpoint
properties:
name:
type: string
example: My Moneycorp Account
provider:
type: string
default: Moneycorp
clientID:
type: string
example: XXX
apiKey:
type: string
example: XXX
endpoint:
type: string
example: XXX
pollingPeriod:
type: string
example: 60s
description: >
The frequency at which the connector will try to fetch new
BalanceTransaction objects from MoneyCorp API.
default: 120s
CurrencyCloudConfig:
type: object
required:
- name
- apiKey
- loginID
properties:
name:
type: string
example: My CurrencyCloud Account
provider:
type: string
default: Currencycloud
apiKey:
type: string
example: XXX
loginID:
type: string
example: XXX
description: Username of the API Key holder
pollingPeriod:
type: string
example: 60s
description: The frequency at which the connector will fetch transactions
default: 120s
endpoint:
type: string
example: XXX
description: >-
The endpoint to use for the API. Defaults to
https://devapi.currencycloud.com
AdyenConfig:
type: object
required:
- name
- apiKey
- hmacKey
properties:
name:
type: string
example: My Adyen Account
provider:
type: string
default: Adyen
apiKey:
type: string
example: XXX
hmacKey:
type: string
example: XXX
liveEndpointPrefix:
type: string
example: XXX
pollingPeriod:
type: string
example: 60s
description: >
The frequency at which the connector will try to fetch new
BalanceTransaction objects from Adyen API.
default: 120s
AtlarConfig:
type: object
required:
- name
- accessKey
- secret
properties:
name:
type: string
example: My Atlar Account
provider:
type: string
default: Atlar
baseUrl:
type: string
example: https://api.example.com
default: https://api.atlar.com
description: >
The base URL the client uses for making requests towards the Atlar
API.
pollingPeriod:
type: string
example: 60s
description: >
The frequency at which the connector tries to fetch new Transaction
objects from the Atlar API.
default: 120s
transferInitiationStatusPollingPeriod:
type: string
example: 60s
description: >
The frequency at which the connector tries to fetch the status of
payment initiations from the Atlar API.
default: 120s
accessKey:
type: string
example: XXX
description: >
The access key used by the connector for authorizing requests to the
Atlar API.
You can obtain it along with the associated secret from the Atlar
dashboard.
secret:
type: string
example: XXX
description: >
The secret used by the connector for authorizing requests to the
Atlar API.
You can obtain it along with the associated access key from the
Atlar dashboard.
pageSize:
type: integer
format: int64
minimum: 0
description: |
Number of items to fetch when querying paginated APIs.
default: 25
example: 50
TransferInitiation:
type: object
required:
- id
- reference
- createdAt
- scheduledAt
- description
- sourceAccountID
- destinationAccountID
- connectorID
- provider
- type
- amount
- initialAmount
- asset
- status
properties:
id:
type: string
example: XXX
reference:
type: string
createdAt:
type: string
format: date-time
scheduledAt:
type: string
format: date-time
description:
type: string
sourceAccountID:
type: string
destinationAccountID:
type: string
connectorID:
type: string
provider:
type: string
nullable: true
type:
type: string
enum:
- TRANSFER
- PAYOUT
amount:
type: integer
format: bigint
initialAmount:
type: integer
format: bigint
asset:
type: string
example: USD
status:
$ref: '#/components/schemas/TransferInitiationStatus'
error:
type: string
nullable: true
metadata:
type: object
additionalProperties:
type: string
nullable: true
relatedPayments:
type: array
nullable: true
items:
$ref: '#/components/schemas/TransferInitiationPayments'
relatedAdjustments:
type: array
items:
$ref: '#/components/schemas/TransferInitiationAdjusments'
TransferInitiationAdjusments:
type: object
required:
- adjustmentID
- createdAt
- status
properties:
adjustmentID:
type: string
createdAt:
type: string
format: date-time
status:
$ref: '#/components/schemas/TransferInitiationStatus'
error:
type: string
nullable: true
metadata:
type: object
additionalProperties:
type: string
nullable: true
TransferInitiationPayments:
type: object
required:
- paymentID
- createdAt
- status
properties:
paymentID:
type: string
createdAt:
type: string
format: date-time
status:
$ref: '#/components/schemas/PaymentStatus'
error:
type: string
nullable: true
BankAccount:
type: object
required:
- id
- name
- createdAt
- country
properties:
id:
type: string
name:
type: string
createdAt:
type: string
format: date-time
country:
type: string
connectorID:
type: string
accountID:
type: string
provider:
type: string
iban:
type: string
accountNumber:
type: string
swiftBicCode:
type: string
relatedAccounts:
type: array
items:
$ref: '#/components/schemas/BankAccountRelatedAccounts'
metadata:
$ref: '#/components/schemas/BankAccountMetadata'
BankAccountRelatedAccounts:
type: object
required:
- id
- createdAt
- connectorID
- provider
- accountID
properties:
id:
type: string
createdAt:
type: string
format: date-time
provider:
type: string
connectorID:
type: string
accountID:
type: string
BankAccountMetadata:
type: object
additionalProperties:
type: string
nullable: true
Payment:
type: object
required:
- id
- reference
- connectorID
- sourceAccountID
- destinationAccountID
- type
- status
- initialAmount
- amount
- scheme
- asset
- createdAt
- raw
- adjustments
- metadata
properties:
id:
type: string
example: XXX
reference:
type: string
sourceAccountID:
type: string
destinationAccountID:
type: string
connectorID:
type: string
provider:
$ref: '#/components/schemas/Connector'
type:
$ref: '#/components/schemas/PaymentType'
status:
$ref: '#/components/schemas/PaymentStatus'
initialAmount:
type: integer
format: bigint
minimum: 0
example: 100
amount:
type: integer
format: bigint
minimum: 0
example: 100
scheme:
$ref: '#/components/schemas/PaymentScheme'
asset:
type: string
example: USD
createdAt:
type: string
format: date-time
raw:
type: object
nullable: true
adjustments:
type: array
items:
$ref: '#/components/schemas/PaymentAdjustment'
metadata:
$ref: '#/components/schemas/PaymentMetadata'
PaymentAdjustment:
type: object
required:
- reference
- createdAt
- amount
- status
- raw
properties:
reference:
type: string
createdAt:
type: string
format: date-time
status:
$ref: '#/components/schemas/PaymentStatus'
amount:
type: integer
format: bigint
minimum: 0
example: 100
raw:
type: object
PaymentMetadata:
type: object
additionalProperties:
type: string
nullable: true
AccountMetadata:
type: object
additionalProperties:
type: string
nullable: true
Pool:
type: object
required:
- id
- name
- accounts
properties:
id:
type: string
name:
type: string
accounts:
type: array
items:
type: string
PoolBalances:
type: object
required:
- balances
properties:
balances:
type: array
items:
$ref: '#/components/schemas/PoolBalance'
PoolBalance:
type: object
required:
- amount
- asset
properties:
amount:
type: integer
format: bigint
minimum: 0
example: 100
asset:
type: string
example: USD
Account:
type: object
required:
- id
- createdAt
- reference
- connectorID
- defaultCurrency
- defaultAsset
- accountName
- type
- metadata
- raw
properties:
id:
type: string
createdAt:
type: string
format: date-time
reference:
type: string
connectorID:
type: string
provider:
type: string
defaultCurrency:
type: string
deprecated: true
defaultAsset:
type: string
accountName:
type: string
type:
$ref: '#/components/schemas/AccountType'
pools:
type: array
items:
type: string
metadata:
$ref: '#/components/schemas/AccountMetadata'
raw:
type: object
nullable: true
AccountBalance:
type: object
required:
- accountId
- createdAt
- lastUpdatedAt
- currency
- asset
- balance
properties:
accountId:
type: string
createdAt:
type: string
format: date-time
lastUpdatedAt:
type: string
format: date-time
currency:
type: string
deprecated: true
asset:
type: string
balance:
type: integer
format: bigint
TaskBase:
type: object
required:
- id
- connectorID
- createdAt
- updatedAt
- descriptor
- status
properties:
id:
type: string
format: uuid
connectorID:
type: string
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
status:
$ref: '#/components/schemas/TaskStatus'
state:
nullable: true
type: object
error:
type: string
nullable: true
TaskStatus:
type: string
enum:
- PENDING
- ACTIVE
- STOPPED
- TERMINATED
- FAILED
TaskStripe:
allOf:
- $ref: '#/components/schemas/TaskBase'
- type: object
required:
- descriptor
properties:
descriptor:
type: object
required:
- name
- account
properties:
name:
type: string
main:
type: boolean
account:
type: string
TaskWise:
allOf:
- $ref: '#/components/schemas/TaskBase'
- type: object
required:
- descriptor
properties:
descriptor:
type: object
properties:
name:
type: string
key:
type: string
profileID:
type: integer
format: int64
minimum: 0
TaskModulr:
allOf:
- $ref: '#/components/schemas/TaskBase'
- type: object
required:
- descriptor
properties:
descriptor:
type: object
properties:
name:
type: string
key:
type: string
accountID:
type: string
TaskDummyPay:
allOf:
- $ref: '#/components/schemas/TaskBase'
- type: object
required:
- descriptor
properties:
descriptor:
type: object
properties:
name:
type: string
key:
type: string
fileName:
type: string
TaskCurrencyCloud:
allOf:
- $ref: '#/components/schemas/TaskBase'
- type: object
required:
- descriptor
properties:
descriptor:
type: object
properties:
name:
type: string
TaskBankingCircle:
allOf:
- $ref: '#/components/schemas/TaskBase'
- type: object
required:
- descriptor
properties:
descriptor:
type: object
properties:
name:
type: string
key:
type: string
TaskMangoPay:
allOf:
- $ref: '#/components/schemas/TaskBase'
- type: object
required:
- descriptor
properties:
descriptor:
type: object
properties:
name:
type: string
key:
type: string
userID:
type: string
TaskMoneycorp:
allOf:
- $ref: '#/components/schemas/TaskBase'
- type: object
required:
- descriptor
properties:
descriptor:
type: object
properties:
name:
type: string
key:
type: string
accountID:
type: string
TransferRequest:
type: object
required:
- asset
- amount
- destination
properties:
amount:
type: integer
format: bigint
minimum: 0
example: 100
asset:
type: string
example: USD
destination:
type: string
example: acct_1Gqj58KZcSIg2N2q
source:
type: string
example: acct_1Gqj58KZcSIg2N2q
ForwardBankAccountRequest:
type: object
required:
- connectorID
properties:
connectorID:
type: string
UpdateBankAccountMetadataRequest:
type: object
required:
- metadata
properties:
metadata:
$ref: '#/components/schemas/BankAccountMetadata'
BankAccountRequest:
type: object
required:
- country
- name
properties:
country:
type: string
example: GB
connectorID:
type: string
name:
type: string
example: My account
accountNumber:
type: string
iban:
type: string
swiftBicCode:
type: string
metadata:
$ref: '#/components/schemas/BankAccountMetadata'
AddAccountToPoolRequest:
type: object
required:
- accountID
properties:
accountID:
type: string
PoolRequest:
type: object
required:
- name
- accountIDs
properties:
name:
type: string
accountIDs:
type: array
items:
type: string
AccountRequest:
type: object
required:
- reference
- connectorID
- createdAt
- type
properties:
reference:
type: string
connectorID:
type: string
createdAt:
type: string
format: date-time
type:
$ref: '#/components/schemas/AccountType'
defaultAsset:
type: string
accountName:
type: string
metadata:
$ref: '#/components/schemas/AccountMetadata'
PaymentRequest:
type: object
required:
- reference
- connectorID
- createdAt
- amount
- type
- status
- scheme
- asset
properties:
reference:
type: string
connectorID:
type: string
createdAt:
type: string
format: date-time
amount:
type: integer
format: bigint
minimum: 0
example: 100
type:
$ref: '#/components/schemas/PaymentType'
status:
$ref: '#/components/schemas/PaymentStatus'
scheme:
$ref: '#/components/schemas/PaymentScheme'
asset:
type: string
example: USD
sourceAccountID:
type: string
destinationAccountID:
type: string
TransferInitiationRequest:
type: object
required:
- reference
- scheduledAt
- description
- sourceAccountID
- destinationAccountID
- type
- amount
- asset
- validated
properties:
reference:
type: string
example: XXX
scheduledAt:
type: string
format: date-time
description:
type: string
sourceAccountID:
type: string
destinationAccountID:
type: string
connectorID:
type: string
type:
type: string
enum:
- TRANSFER
- PAYOUT
amount:
type: integer
format: bigint
asset:
type: string
example: USD
validated:
type: boolean
metadata:
type: object
additionalProperties:
type: string
nullable: true
ReverseTransferInitiationRequest:
type: object
required:
- reference
- description
- amount
- asset
- metadata
properties:
reference:
type: string
example: XXX
description:
type: string
amount:
type: integer
format: bigint
asset:
type: string
example: USD
metadata:
type: object
additionalProperties:
type: string
nullable: true
UpdateTransferInitiationStatusRequest:
type: object
required:
- status
properties:
status:
type: string
enum:
- REJECTED
- VALIDATED
AccountType:
type: string
enum:
- UNKNOWN
- INTERNAL
- EXTERNAL
PaymentType:
type: string
enum:
- PAY-IN
- PAYOUT
- TRANSFER
- OTHER
PaymentScheme:
type: string
enum:
- unknown
- other
- visa
- mastercard
- amex
- diners
- discover
- jcb
- unionpay
- alipay
- cup
- sepa debit
- sepa credit
- sepa
- apple pay
- google pay
- doku
- dragonpay
- maestro
- molpay
- a2a
- ach debit
- ach
- rtp
PaymentStatus:
type: string
enum:
- PENDING
- SUCCEEDED
- CANCELLED
- FAILED
- EXPIRED
- REFUNDED
- REFUNDED_FAILURE
- DISPUTE
- DISPUTE_WON
- DISPUTE_LOST
- OTHER
PaymentsErrorResponse:
type: object
required:
- errorCode
- errorMessage
properties:
errorCode:
$ref: '#/components/schemas/PaymentsErrorsEnum'
errorMessage:
type: string
example: '[VALIDATION] missing reference'
PaymentsErrorsEnum:
type: string
enum:
- INTERNAL
- VALIDATION
- NOT_FOUND
example: VALIDATION
ServerInfo:
type: object
properties:
version:
type: string
debug:
type: boolean