Details
Admin API
>
API Reference
>
v0
>
Remote Deposit Capture
>
Details
openapi: 3.0.0
info:
version: "0.0"
title: RDC
tags:
- name: User RDC Endpoints
- name: Institution RDC Endpoints
servers:
- url: https://banno.com
paths:
"/a/mobile/api/v0/institutions/{institutionId}/users/{userId}/rdcAccounts":
get:
tags:
- User RDC Endpoints
description: |
Returns the list of RDC accounts associated to the user.
Requires the "View Everything" permission for People
security:
- clientCredentials: [ https://jackhenry.com/rdc/accounts.read ]
parameters:
- $ref: '#/components/parameters/UserId'
- $ref: '#/components/parameters/InstitutionId'
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/RdcAccountsV0"
"403":
$ref: '#/components/responses/GenericForbidden'
"500":
description: |
The server failed to fetch the accounts for this user.
post:
tags:
- User RDC Endpoints
description: |
Creates a new account that is added to the existing accounts.
The existing accounts are not modified.
Requires the "Manage RDC" permission for People
security:
- clientCredentials: [ https://jackhenry.com/rdc/accounts.write ]
parameters:
- $ref: '#/components/parameters/InstitutionId'
- $ref: '#/components/parameters/UserId'
requestBody:
$ref: "#/components/requestBodies/CreateRdcAccountV0"
responses:
"200":
description: |
The new RDC account was created successfully. The entity
is the full list of accounts, which includes the new one.
This is the same response as a subsequent `get` would give
content:
application/json:
schema:
$ref: "#/components/schemas/RdcAccountsV0"
"403":
$ref: '#/components/responses/GenericForbidden'
"400":
description: |
a) The request body was malformed. b) Returns an error
document with an error message for the user. The account
may or may not have been created in the remote server.
content:
application/json:
schema:
$ref: "#/components/schemas/updateRdcError"
"500":
description: |
There was an error in the server, either while creating the
new account or when retrieving the full list of accounts.
Note that, in the latter case, this response may be returned
after the new RDC account has been created.
put:
tags:
- User RDC Endpoints
description: |
Updates a user's RDC accounts. Returns the updated accounts or an error
document with a message for the user.
Requires the "Manage RDC" permission for People
security:
- clientCredentials: [ https://jackhenry.com/rdc/accounts.write ]
parameters:
- $ref: '#/components/parameters/InstitutionId'
- $ref: '#/components/parameters/UserId'
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/PutRdcAccountsV0"
responses:
"200":
description: |
The RDC accounts indicated were updated to the new status.
The response all the RDC accounts of the user, incorporating
the updated status of the updated accounts.
This is the same response as a subsequent `get` would give
content:
application/json:
schema:
$ref: "#/components/schemas/RdcAccountsV0"
"400":
description: |
The request body was malformed
"403":
$ref: '#/components/responses/GenericForbidden'
"500":
description: |
There was an error, either when updating the RDC accounts
or when fetching the full list of updated accounts.
Note that, in the latter case, the update itself has been performed.
content:
application/json:
schema:
$ref: "#/components/schemas/PutRdcAccountsErrorV0"
"/a/mobile/api/v0/institutions/{institutionId}/users/{userId}/rdcAccounts/{rdcAccountId}":
put:
tags:
- User RDC Endpoints
description: |
Updates the selected RDC account.
Requires the "Manage RDC" permission for People
security:
- clientCredentials: [ https://jackhenry.com/rdc/accounts.write ]
parameters:
- $ref: '#/components/parameters/InstitutionId'
- $ref: '#/components/parameters/UserId'
- $ref: '#/components/parameters/RdcAccountId'
requestBody:
$ref: "#/components/requestBodies/UpdateRdcAccountV0"
responses:
"200":
description: |
The selected account was correctly updated. The response carries all the
accounts of the user, with the updated one.
content:
application/json:
schema:
$ref: "#/components/schemas/RdcAccountsV0"
"403":
$ref: '#/components/responses/GenericForbidden'
"400":
description: |
The request entity body was malformed.
"404":
description: |
The RDC account associated with the rdcAccountId is either
not found or doesn't belong to the user.
"500":
description: |
Either the attempt to update the RDC account failed, or
retrieving the full list of accounts failed. Note that, in
this latter case, the update was performed.
content:
application/json:
schema:
$ref: "#/components/schemas/updateRdcError"
delete:
tags:
- User RDC Endpoints
description: |
Will delete the selected RDC account for the given user.
Requires the "Manage RDC" permission for People
security:
- clientCredentials: [ https://jackhenry.com/rdc/accounts.write ]
parameters:
- $ref: '#/components/parameters/InstitutionId'
- $ref: '#/components/parameters/UserId'
- $ref: '#/components/parameters/RdcAccountId'
responses:
"204":
description: The RDC account deleted successfully
"403":
$ref: '#/components/responses/GenericForbidden'
"404":
description: The selected RDC account could not be found.
"500":
description: RDC account deletion failed due to an unexpected error.
content:
application/json:
schema:
$ref: "#/components/schemas/updateRdcError"
"/a/mobile/api/v0/institutions/{institutionId}/users/{userId}/rdcAccounts/{rdcAccountId}/history":
get:
tags:
- User RDC Endpoints
description: |
Returns an array of events associated with the RDC account.
Requires the "View Everything" permission for People
security:
- clientCredentials: [ https://jackhenry.com/rdc/accounts.read ]
parameters:
- $ref: '#/components/parameters/InstitutionId'
- $ref: '#/components/parameters/UserId'
- $ref: '#/components/parameters/RdcAccountId'
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AccountHistoryV0"
"403":
$ref: '#/components/responses/GenericForbidden'
"404":
description: |
The `rdcAccountId` parameter does not denote any RDC account
belonging to the used denoted by `userId`
"/a/mobile/api/v0/institutions/{institutionId}/users/{userId}/rdcVelocity":
get:
tags:
- User RDC Endpoints
description: |
Will return the user's RDC deposit velocity. If a user doesn't have any
approved RDC accounts, then they will not have any velocity as they are
only in our database and not with the RDC provider.
Requires the "View Everything" permission for People
security:
- clientCredentials: [ https://jackhenry.com/rdc/velocity.read ]
parameters:
- $ref: '#/components/parameters/InstitutionId'
- $ref: '#/components/parameters/UserId'
responses:
"200":
description: Successfully retrieved the velocity of the user.
content:
application/json:
schema:
$ref: "#/components/schemas/rdcVelocity"
"403":
$ref: '#/components/responses/GenericForbidden'
"404":
description: |
Could not get the velocity for the given user.
"500":
description: |
Internal server error when retrieving the velocity.
put:
tags:
- User RDC Endpoints
description: |
Accepts RDC velocity values and returns either an error response or the
updated velocity.
Requires the "Manage RDC" permission for People
security:
- clientCredentials: [ https://jackhenry.com/rdc/velocity.write ]
parameters:
- $ref: '#/components/parameters/InstitutionId'
- $ref: '#/components/parameters/UserId'
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/updateVelocity"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/rdcVelocity"
"403":
$ref: '#/components/responses/GenericForbidden'
"404":
description: |
Could not find any velocity for the given user.
"400":
description: |
a) The request body was malformed b) could not find the velocity
content:
application/json:
schema:
type: object
properties:
message:
type: string
"500":
description: |
Internal server error when updating the velocity.
"/a/mobile/api/v0/institutions/{institutionId}/users/{userId}/rdcAccounts/{rdcAccountId}/notes":
post:
tags:
- User RDC Endpoints
description: |
Updates account notes.
Requires the "Manage RDC" permission for People
security:
- clientCredentials: [ https://jackhenry.com/rdc/accounts.write ]
parameters:
- $ref: '#/components/parameters/InstitutionId'
- $ref: '#/components/parameters/UserId'
- $ref: '#/components/parameters/RdcAccountId'
requestBody:
content:
application/json:
schema:
type: object
properties:
text:
type: string
description: Plain text string
responses:
"403":
$ref: '#/components/responses/GenericForbidden'
"200":
description: |
The note was successfully added to the RDC account.
This returns the event that corresponds to adding this note.
content:
application/json:
schema:
$ref: "#/components/schemas/AccountNoteAddedV0"
"400":
description: |
The request body was malformed
"404":
description: |
The `rdcAccountId` matches no RDC account belonging to the user
given by `userId`, or the `userId` is not a customer/member
of the bank / credit union given by the `institutionId`
"/a/mobile/api/v0/institutions/{institutionId}/rdcRequests":
get:
tags:
- Institution RDC Endpoints
description: |
Returns every RDC request from every users across the institution,
filtered by some query parameters like the user first and last name.
Since this list is returned in a predefined ordered, this endpoint
support pagination by means of the `limit` and `offset` parameters.
security:
- clientCredentials: [ https://jackhenry.com/rdc/rdc-requests.read ]
parameters:
- $ref: '#/components/parameters/InstitutionId'
- in: query
name: status
required: true
description: |
Filter RDC accounts by their status. The response will only include
RDC requests from RDC accounts that, at the time the endpoint is
called, have the given status.
Requires the "View Everything" permission for People
schema:
$ref: "#/components/schemas/rdcAccountStatus"
- in: query
name: username
required: false
schema:
type: string
description: |
If present, the endpoint only returns RDC requests from users whose
username matches the value given in this parameter.
- in: query
name: firstName
description: |
If present, the endpoint only returns RDC requests from users whose
first name matches the value given in this parameter.
required: false
schema:
type: string
example: 'Johnnie'
- in: query
name: lastName
description: |
If present, the endpoint only returns RDC requests from users whose
last name matches the value given in this parameter.
required: false
example: 'Walker'
schema:
type: string
- in: query
name: offset
description: |
This is a parameter for paginating the list in the response. It
indicates the number of RDC requests that are skipped before the
current page. For example, if from a list of 100 items we want to
show items from 31 to 40, we would set `offset = 30`.
required: false
schema:
type: integer
default: 0
- in: query
name: limit
description: |
Response Pagination parameter: number of requests to return in each page.
required: false
schema:
type: integer
default: 20
responses:
"403":
$ref: '#/components/responses/GenericForbidden'
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/RdcRequestsV0"
"400":
description: |
Invalid status, offset, or limit query parameters are provided.
components:
securitySchemes:
clientCredentials:
type: oauth2
description: OAuth2 using the client credentials flow
flows:
clientCredentials:
tokenUrl: https://banno.com/a/oidc-provider/api/v0/token
scopes: {}
parameters:
UserId:
in: path
name: userId
description: |
Identifier of the user whose information about RDC accounts we are trying
to access or modify. This may be a consumer user (bank customer) or an
enterprise user (another bank employee).
required: true
schema:
type: string
format: uuid
example: '01234567-abcd-4321-fedc-9876543210fa'
InstitutionId:
in: path
name: institutionId
description: ID of the institution
required: true
schema:
type: string
format: uuid
example: '01234567-abcd-4321-fedc-9876543210fa'
RdcAccountId:
in: path
name: rdcAccountId
description: |
Identifier of the RDC Account. Note that this is not the same
as the AccountId used in other endpoints of Banno
required: true
schema:
type: string
format: uuid
example: '01234567-abcd-4321-fedc-9876543210fa'
requestBodies:
CreateRdcAccountV0:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateRdcAccountV0"
UpdateRdcAccountV0:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateRdcAccountV0"
responses:
GenericForbidden:
description: |
The sender is not allowed access to the accounts of this user.
This response may be given, amongst other cases, because:
a. The `institutionId` in the path does not correspond to any
financial institution in Banno.
b. The `userId` in the path does not correspond to any
active user of that institution.
c. The sender is not authenticated as an Enterprise user,
which is the role given to FI employees.
d. The sender is an enterprise user, but she is trying to
access information of another FI.
e. She is trying to operate on information of a colleague,
another employee at that FI, and she is not an Administrator.
schemas:
RdcAccountsV0:
type: object
required:
- rdcAccounts
properties:
rdcAccounts:
type: array
items:
$ref: "#/components/schemas/AccountV0"
AccountV0:
type: object
required:
- rdcAccountId
- userId
- name
- accountTypeMarker
- status
- submittedDate
- active
- routingNumber
properties:
rdcAccountId:
type: string
description: uuid
format: uuid
userId:
type: string
description: uuid
format: uuid
accountNumberMasked:
type: string
description: |
The number of the bank account, with some of the digits hidden.
accountNumberHashed:
type: string
format: binary
description: |
Kept for legacy reasons.
deprecated: true
name:
type: string
routingNumber:
type: string
pattern: "^[0-9]{9}$"
accountTypeMarker:
$ref: '#/components/schemas/accountTypeMarker'
status:
$ref: "#/components/schemas/rdcAccountStatus"
submittedDate:
type: string
format: date-time
description: |
The date at which the RDC account was recorded in the Banno
platform. That may not coincide with the date the account
was originally created, if it was created outside Banno.
active:
type: boolean
example: false
AccountHistoryV0:
type: object
required:
- events
properties:
events:
type: array
items:
oneOf:
- $ref: '#/components/schemas/AccountStatusChangeV0'
- $ref: '#/components/schemas/AccountNoteAddedEventV0'
discriminator:
propertyName: type
mapping:
AccountStatusChange: '#/components/schemas/AccountStatusChangeV0'
AccountNoteAdded: '#/components/schemas/AccountNoteAddedEventV0'
AccountStatusChangeV0:
type: object
required:
- type
- rdcAccountId
- date
- user
- toStatus
properties:
type:
type: string
description: Event type
example: AccountStatusChange
comments:
type: string
description: |
Text comments associated with the RDC account status change
date:
type: string
format: date-time
description: |
Indicates the time at which this history event was created.
This would be after the account status was changed.
rdcAccountId:
type: string
format: uuid
description: |
Id of the RDC account for which this event records a status change.
toStatus:
$ref: "#/components/schemas/rdcAccountStatus"
user:
$ref: '#/components/schemas/EnterpriseUserInfoV0'
AccountNoteAddedEventV0:
allOf:
- $ref: '#/components/schemas/AccountNoteAddedV0'
- type: object
required:
- type
- user
properties:
type:
type: string
description: Event type
example: AccountNoteAdded
user:
$ref: '#/components/schemas/EnterpriseUserInfoV0'
AccountNoteAddedV0:
type: object
required:
- rdcAccountId
- date
- text
properties:
date:
type: string
description: |
The timestamp of this histoy event, which is the time at which
the note was added to the account.
format: date-time
rdcAccountId:
type: string
format: uuid
description: |
Id of the RDC account on which a note was added (as recorded in
this history event)
text:
type: string
description: Text content of the added note
EnterpriseUserInfoV0:
type: object
properties:
firstName:
type: string
description: The enterprise user's first name
example: 'Dimitry'
lastName:
type: string
description: The enterprise user's last name
example: 'Smirnoff'
email:
type: string
description: The enterprise user's email address
example: 'dmtry@smirnoff.ru'
description: |
The details about the employee of the financial institution
that performed the actions recorded by this history event.
rdcVelocity:
type: object
required:
- userId
- dailyDepositsCount
- dailyDepositsLimit
- dailyAmount
- dailyAmountLimit
- overageAllowed
properties:
userId:
type: string
description: uuid
format: uuid
dailyDepositsCount:
type: integer
example: 1000
dailyDepositsLimit:
type: integer
example: 1000
dailyAmount:
type: number
example: 100.00
dailyAmountLimit:
type: number
example: 100.00
periodDepositsCount:
type: integer
example: 1000
periodDepositsLimit:
type: integer
example: 1000
periodAmount:
type: number
example: 100.00
periodAmountLimit:
type: number
example: 100.00
overageAllowed:
type: boolean
example: true
singleItemMax:
type: number
example: 100.00
singleItemReviewLimit:
type: number
example: 100.00
updateVelocity:
type: object
required:
- dailyDepositsLimit
- dailyAmountLimit
- periodDepositsLimit
- periodAmountLimit
- overageAllowed
properties:
dailyDepositsLimit:
type: integer
example: 1000
dailyAmountLimit:
type: number
example: 100
periodDepositsLimit:
type: integer
example: 1000
periodAmountLimit:
type: number
example: 100
overageAllowed:
type: boolean
example: true
singleItemMax:
type: number
example: 100
CreateRdcAccountV0:
type: object
required:
- name
- accountNumber
- accountTypeMarker
properties:
name:
type: string
description: The new name for the RDC account
accountNumber:
type: string
description: The new account number for the RDC account
accountTypeMarker:
$ref: '#/components/schemas/accountTypeMarker'
UpdateRdcAccountV0:
type: object
required:
- name
- accountTypeMarker
properties:
name:
type: string
description: The new name for the RDC account
accountNumber:
type: string
description: The new account number for the RDC account
accountTypeMarker:
$ref: '#/components/schemas/accountTypeMarker'
updateRdcError:
type: object
required:
- message
properties:
rdcAccountId:
type: string
description: Optional RDC account ID
message:
type: string
PutRdcAccountsV0:
type: object
required:
- rdcAccountIds
- status
properties:
rdcAccountIds:
type: array
items:
type: string
description: |
List of RDC accounts that are updated to the new status
format: uuid
status:
$ref: "#/components/schemas/rdcAccountStatus"
comments:
type: string
description: |
A fre text, a note, written by the FI employee for internal records,
but which is never attached to the user.
PutRdcAccountsErrorV0:
type: object
required:
- errors
properties:
errors:
type: array
items:
$ref: "#/components/schemas/updateRdcError"
RdcRequestsV0:
type: object
required:
- total
- users
properties:
total:
type: integer
example: 42
description: |
Gives the total number of requests that were found by the endpoint.
Note that, because the endpoint uses pagination, this may be more
than the number of elements in the `users` array.
users:
type: array
items:
$ref: "#/components/schemas/RdcRequestV0"
RdcRequestV0:
type: object
required:
- userId
- firstName
- lastName
- lastApprovalRequested
- userType
properties:
userId:
type: string
description: User ID
format: uuid
firstName:
type: string
description: First name of the given user
lastName:
type: string
description: Last name of the given user
lastApprovalRequested:
type: string
format: date-time
description: |
The most recent date and time when the given user submitted an RDC account for approval
businessName:
type: string
description: |
If the userId denotes a business, this field is present and
gives the Business name of that user. Otherwise, this field
is absent.
userType:
type: string
description: Business or Individual
enum:
- Business
- Individual
employeeStatus:
type: string
description: |
Indicates if the user indicated by the userId field is an employee.
'E' indicates employee, whereas 'NE' indicates a non-employee.
enum:
- E
- NE
accountTypeMarker:
type: string
description: RDC account type
enum:
- Savings
- Checking
- GeneralLedger
rdcAccountStatus:
type: string
description: The status of the RDC account
enum:
- Pending
- Approved
- Rejected
Have a Question?
Have a how-to question? Seeing a weird error? Get help on
StackOverflow.
Register for the Digital Toolkit Meetup
where we answer technical Q&A from the audience.
Last updated Tue Sep 14 2021