openapi: 3.2.0 info: title: Accounts API version: v1 servers: - url: https://cubi-sandbox-api.customersbank.com/accounts/v1 tags: - name: Accounts paths: /{accountId}: put: tags: - Accounts summary: /{accountId} - PUT operationId: put-accountid parameters: - name: accountId in: path required: true schema: type: string format: uuid requestBody: description: Account update payload content: application/json: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.UpdateAccountDto' example: name: string searchable: true controlType: Single text/json: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.UpdateAccountDto' example: name: string searchable: true controlType: Single application/*+json: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.UpdateAccountDto' example: name: string searchable: true controlType: Single responses: '202': description: Accepted content: text/plain: schema: $ref: '#/components/schemas/Cubi.Common.WebApi.Mediatr.Validation.IdentifierContainer_System.Guid' examples: default: value: null application/json: schema: $ref: '#/components/schemas/Cubi.Common.WebApi.Mediatr.Validation.IdentifierContainer_System.Guid' example: id: string text/json: schema: $ref: '#/components/schemas/Cubi.Common.WebApi.Mediatr.Validation.IdentifierContainer_System.Guid' example: id: string '400': description: BadRequest content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.1 title: One or more validation errors occurred. status: 400 traceId: string '401': description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.2 title: Unauthorized status: 401 traceId: string '403': description: Forbidden content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.4 title: Forbidden status: 403 traceId: string '404': description: NotFound content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.5 title: Not Found status: 404 traceId: string '422': description: UnprocessableEntity content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc4918#section-11.2 title: Unprocessable Entity status: 422 traceId: string '500': description: InternalServerError content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.6.1 title: An error occurred while processing your request. status: 500 traceId: string get: tags: - Accounts summary: /{accountId} - GET description: Get an account operationId: get-accountid parameters: - name: accountId in: path description: '' required: true schema: type: string format: uuid responses: '200': description: OK content: text/plain: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.GetAccountDto' examples: default: value: null application/json: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.GetAccountDto' example: id: string ibsAccountNumber: string name: string searchable: true controlType: Single modifiedAt: string createdAt: string partnerId: string version: string isFrozen: true isDeleted: true availableBalance: 0 balance: 0 state: Closed additionalBalances: relatedAvailableBalance: 0 totalAccessibleBalance: 0 text/json: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.GetAccountDto' example: id: string ibsAccountNumber: string name: string searchable: true controlType: Single modifiedAt: string createdAt: string partnerId: string version: string isFrozen: true isDeleted: true availableBalance: 0 balance: 0 state: Closed additionalBalances: relatedAvailableBalance: 0 totalAccessibleBalance: 0 '400': description: BadRequest content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.1 title: One or more validation errors occurred. status: 400 traceId: string '401': description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.2 title: Unauthorized status: 401 traceId: string '403': description: Forbidden content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.4 title: Forbidden status: 403 traceId: string '404': description: NotFound content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.5 title: Not Found status: 404 traceId: string '422': description: UnprocessableEntity content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc4918#section-11.2 title: Unprocessable Entity status: 422 traceId: string '500': description: InternalServerError content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.6.1 title: An error occurred while processing your request. status: 500 traceId: string /: get: tags: - Accounts summary: / - GET description: Get a list of accounts operationId: get parameters: - name: accountName in: query description: '' schema: type: string - name: paginateResults in: query schema: type: boolean - name: page in: query schema: type: integer format: int32 - name: perPage in: query schema: type: integer format: int32 - name: sortOn in: query schema: type: string - name: sortAscending in: query schema: type: boolean - name: balances in: query description: '' schema: type: boolean default: true responses: '200': description: OK content: text/plain: schema: $ref: '#/components/schemas/Cubi.Common.Abstractions.Paginated_Cubi.Accounts.WebApi.Dto.AccountDto' examples: default: value: null application/json: schema: $ref: '#/components/schemas/Cubi.Common.Abstractions.Paginated_Cubi.Accounts.WebApi.Dto.AccountDto' example: pageSize: 0 pageOffset: 0 totalPages: 0 totalItemCount: 0 items: - id: string name: string accountNumber: string isSearchable: true isFrozen: true controlType: Single availableBalance: 0 balance: 0 additionalBalances: relatedAvailableBalance: 0 totalAccessibleBalance: 0 balanceMode: Reserved text/json: schema: $ref: '#/components/schemas/Cubi.Common.Abstractions.Paginated_Cubi.Accounts.WebApi.Dto.AccountDto' example: pageSize: 0 pageOffset: 0 totalPages: 0 totalItemCount: 0 items: - id: string name: string accountNumber: string isSearchable: true isFrozen: true controlType: Single availableBalance: 0 balance: 0 additionalBalances: relatedAvailableBalance: 0 totalAccessibleBalance: 0 balanceMode: Reserved '400': description: BadRequest content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.1 title: One or more validation errors occurred. status: 400 traceId: string '401': description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.2 title: Unauthorized status: 401 traceId: string '403': description: Forbidden content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.4 title: Forbidden status: 403 traceId: string '404': description: NotFound content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.5 title: Not Found status: 404 traceId: string '422': description: UnprocessableEntity content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc4918#section-11.2 title: Unprocessable Entity status: 422 traceId: string '500': description: InternalServerError content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.6.1 title: An error occurred while processing your request. status: 500 traceId: string /{accountId}/transactions: get: tags: - Accounts summary: /{accountId}/transactions - GET description: Search transactions for an account operationId: get-accountid-transactions parameters: - name: accountId in: path description: '' required: true schema: type: string format: uuid - name: fromDate in: query schema: type: string format: date-time - name: toDate in: query schema: type: string format: date-time - name: page in: query schema: type: integer format: int32 - name: perPage in: query schema: type: integer format: int32 responses: '200': description: OK content: text/plain: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.TransactionSearchResultsDto' examples: default: value: null application/json: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.TransactionSearchResultsDto' example: transactions: - description: string transactionCode: string transactionCodeDescription: string effectiveDate: string postingDate: string amount: 0 serialNumber: string controlNumber: string confirmationNumber: string transactionType: string rail: BookTransfer id: string coreTransactionId: string processedAt: string checkNumber: string bai2TransactionCode: string hasMorePages: true text/json: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.TransactionSearchResultsDto' example: transactions: - description: string transactionCode: string transactionCodeDescription: string effectiveDate: string postingDate: string amount: 0 serialNumber: string controlNumber: string confirmationNumber: string transactionType: string rail: BookTransfer id: string coreTransactionId: string processedAt: string checkNumber: string bai2TransactionCode: string hasMorePages: true '400': description: BadRequest content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.1 title: One or more validation errors occurred. status: 400 traceId: string '401': description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.2 title: Unauthorized status: 401 traceId: string '403': description: Forbidden content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.4 title: Forbidden status: 403 traceId: string '422': description: UnprocessableEntity content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc4918#section-11.2 title: Unprocessable Entity status: 422 traceId: string '500': description: InternalServerError content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.6.1 title: An error occurred while processing your request. status: 500 traceId: string /download: get: tags: - Accounts summary: /download - GET description: Download a list of all accounts operationId: get-download parameters: - name: accountName in: query description: '' schema: type: string - name: paginateResults in: query schema: type: boolean - name: page in: query schema: type: integer format: int32 - name: perPage in: query schema: type: integer format: int32 - name: sortOn in: query schema: type: string - name: sortAscending in: query schema: type: boolean - name: balances in: query description: '' schema: type: boolean default: true responses: '200': description: OK content: text/plain: schema: type: array items: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.AccountDto' examples: default: value: null application/json: schema: type: array items: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.AccountDto' example: - id: string name: string accountNumber: string isSearchable: true isFrozen: true controlType: Single availableBalance: 0 balance: 0 additionalBalances: relatedAvailableBalance: 0 totalAccessibleBalance: 0 balanceMode: Reserved text/json: schema: type: array items: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.AccountDto' example: - id: string name: string accountNumber: string isSearchable: true isFrozen: true controlType: Single availableBalance: 0 balance: 0 additionalBalances: relatedAvailableBalance: 0 totalAccessibleBalance: 0 balanceMode: Reserved '400': description: BadRequest content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.1 title: One or more validation errors occurred. status: 400 traceId: string '401': description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.2 title: Unauthorized status: 401 traceId: string '403': description: Forbidden content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.4 title: Forbidden status: 403 traceId: string '404': description: NotFound content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.5 title: Not Found status: 404 traceId: string '422': description: UnprocessableEntity content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc4918#section-11.2 title: Unprocessable Entity status: 422 traceId: string '500': description: InternalServerError content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.6.1 title: An error occurred while processing your request. status: 500 traceId: string /{accountId}/searchable: put: tags: - Accounts summary: /{accountId}/searchable - PUT operationId: put-accountid-searchable parameters: - name: accountId in: path required: true schema: type: string format: uuid requestBody: description: Account searchable update payload content: application/json: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.UpdateAccountSearchableDto' example: searchable: true text/json: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.UpdateAccountSearchableDto' example: searchable: true application/*+json: schema: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.UpdateAccountSearchableDto' example: searchable: true responses: '202': description: Accepted content: text/plain: schema: $ref: '#/components/schemas/Cubi.Common.WebApi.Mediatr.Validation.IdentifierContainer_System.Guid' examples: default: value: null application/json: schema: $ref: '#/components/schemas/Cubi.Common.WebApi.Mediatr.Validation.IdentifierContainer_System.Guid' example: id: string text/json: schema: $ref: '#/components/schemas/Cubi.Common.WebApi.Mediatr.Validation.IdentifierContainer_System.Guid' example: id: string '400': description: BadRequest content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.1 title: One or more validation errors occurred. status: 400 traceId: string '401': description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.2 title: Unauthorized status: 401 traceId: string '403': description: Forbidden content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.4 title: Forbidden status: 403 traceId: string '404': description: NotFound content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.5.5 title: Not Found status: 404 traceId: string '422': description: UnprocessableEntity content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ValidationProblemDetails' example: type: https://tools.ietf.org/html/rfc4918#section-11.2 title: Unprocessable Entity status: 422 traceId: string '500': description: InternalServerError content: application/problem+json: schema: $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails' example: type: https://tools.ietf.org/html/rfc9110#section-15.6.1 title: An error occurred while processing your request. status: 500 traceId: string components: schemas: Cubi.Common.Abstractions.Paginated_Cubi.Accounts.WebApi.Dto.AccountDto: type: object properties: pageSize: type: integer format: int32 pageOffset: type: integer format: int32 totalPages: type: integer format: int32 totalItemCount: type: integer format: int32 items: type: array items: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.AccountDto' additionalProperties: false Microsoft.AspNetCore.Mvc.ProblemDetails: type: object properties: type: type: - string - 'null' title: type: - string - 'null' status: type: - integer - 'null' format: int32 detail: type: - string - 'null' traceId: type: - string - 'null' additionalProperties: {} Cubi.Accounts.Contracts.Commands.TransactionCore.TransactionRail: enum: - BookTransfer - Wire - Ach - Rtp - FedNow - InterestPayment type: string Cubi.Accounts.WebApi.Dto.TransactionSearchResultDto: required: - description - transactionCode - transactionType type: object properties: description: type: string description: The description of the transaction transactionCode: type: string description: The transaction code of the transaction transactionCodeDescription: type: - string - 'null' description: The description of transaction code effectiveDate: type: - string - 'null' description: The effective date of the transaction format: date-time postingDate: type: - string - 'null' description: The date the transaction was posted format: date-time amount: type: number description: The amount of the transaction format: double serialNumber: type: - string - 'null' description: 'This property is deprecated. Use ConfirmationNumber instead. The serial number of the payment. Typically, this is the check number, if available' deprecated: true controlNumber: type: - string - 'null' confirmationNumber: type: - string - 'null' transactionType: type: string description: 'The type of transaction. D = Debit C = Credit F = Float M = Miscellaneous Service Charge X = Reversed' rail: $ref: '#/components/schemas/Cubi.Accounts.Contracts.Commands.TransactionCore.TransactionRail' id: type: - string - 'null' description: The CUBIX ID of the payment associated with this transaction. This will be null if the payment was not originated or received within the CUBIX platform format: uuid coreTransactionId: type: - string - 'null' description: The transaction id within the banking core. This value will be null for intraday transactions processedAt: type: - string - 'null' description: The date the transaction was processed format: date-time checkNumber: type: - string - 'null' description: Check number which is Serial Number bai2TransactionCode: type: - string - 'null' description: The standardized BAI2 transaction code for this transaction; suitable for reconciliation additionalProperties: false Cubi.Accounts.WebApi.Dto.TransactionSearchResultsDto: type: object properties: transactions: type: - array - 'null' items: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.TransactionSearchResultDto' hasMorePages: type: boolean additionalProperties: false Cubi.Accounts.Common.Enums.AccountControlType: enum: - Single - Dual type: string Cubi.Accounts.WebApi.Dto.AccountState: enum: - Closed - Active - Restricted type: string Cubi.Accounts.WebApi.Dto.UpdateAccountSearchableDto: type: object properties: searchable: type: boolean additionalProperties: false Microsoft.AspNetCore.Mvc.ValidationProblemDetails: type: object properties: type: type: - string - 'null' title: type: - string - 'null' status: type: - integer - 'null' format: int32 detail: type: - string - 'null' traceId: type: - string - 'null' errors: type: object additionalProperties: type: array items: type: string additionalProperties: {} Cubi.Accounts.Contracts.Messages.BalanceMode: enum: - Reserved - Shared type: string Cubi.Common.WebApi.Mediatr.Validation.IdentifierContainer_System.Guid: type: object properties: id: type: string format: uuid additionalProperties: false Cubi.Accounts.WebApi.Dto.UpdateAccountDto: required: - name type: object properties: name: type: string searchable: type: boolean controlType: $ref: '#/components/schemas/Cubi.Accounts.Common.Enums.AccountControlType' additionalProperties: false Cubi.Accounts.WebApi.Dto.AdditionalBalancesDto: type: object properties: relatedAvailableBalance: type: number description: The total available balance of related accounts format: double totalAccessibleBalance: type: number description: The total accessible balance, which is calculated as available balance + related available balance format: double additionalProperties: false Cubi.Accounts.WebApi.Dto.GetAccountDto: required: - ibsAccountNumber - name type: object properties: id: type: string description: The ID (uuid) of the account. Should be used, instead of account number, when accessing resources in GET urls format: uuid ibsAccountNumber: type: string description: The account number. This is considered PII and should be protected name: type: string description: The name of the account searchable: type: boolean description: Indicates if the account is searchable by other partners for address book linking controlType: $ref: '#/components/schemas/Cubi.Accounts.Common.Enums.AccountControlType' modifiedAt: type: string description: Last modified timestamp format: date-time createdAt: type: string description: Created timestamp format: date-time partnerId: type: string description: The ID of the partner who owns the account format: uuid deprecated: true version: type: - string - 'null' description: Obsolete format: byte deprecated: true isFrozen: type: boolean description: Indicates if the account is frozen isDeleted: type: boolean description: Obsolete deprecated: true availableBalance: type: number description: Amount available, which is typically total balance minus holds format: double balance: type: number description: Total balance, before holds format: double state: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.AccountState' additionalBalances: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.AdditionalBalancesDto' additionalProperties: false Cubi.Accounts.WebApi.Dto.AccountDto: required: - accountNumber - name type: object properties: id: type: string description: The ID (uuid) of the account. Should be used, instead of account number, when accessing resources in GET urls format: uuid name: type: string description: The name of the account accountNumber: type: string description: The account number. This is considered PII and should be protected isSearchable: type: boolean description: Indicates if the account is searchable by other partners for address book linking isFrozen: type: boolean description: Indicates if the account is frozen or not controlType: $ref: '#/components/schemas/Cubi.Accounts.Common.Enums.AccountControlType' availableBalance: type: number description: Amount available, which is typically total balance minus holds format: double balance: type: number description: Total balance, before holds format: double additionalBalances: $ref: '#/components/schemas/Cubi.Accounts.WebApi.Dto.AdditionalBalancesDto' balanceMode: $ref: '#/components/schemas/Cubi.Accounts.Contracts.Messages.BalanceMode' additionalProperties: false x-readme: explorer-enabled: false proxy-enabled: true