openapi: 3.0.0
info:
title: Banking Products
description: >
This API manages the set of banking products that a financial institution offers to its customers. Each bank _account_ is associated with a
_product_. Examples of products are a personal savings account product or a business checking account product. Each product also has a _product
type_ (for example, DDA for a checking or demand deposit account) and a _subtype_ which is a more specific type, such as 'Interest Checking'.
Each account is attached to the product instance that was effective and active when account was created. Product types may also have subtypes,
although subtypes may not have deeper subtypes. Products and product types each have a `name`, a `description` a `label`, and a `state`.
The state may be one of the following:
* *`pending`* In creation, not yet used or available for use.
Only pending items may be deleted.
* *`active`* Active and in use or available for use
* *`inactive`* Not available for use (deactivated)
* *`removed`* Removed and archived. Removed items are not eligible to be activated.
When an account is removed, its name is changed so that the name
may be used for new products or product types.
After creating a product type or product subtype, which by default leaves the resource in the `pending` state, the caller should also activate it
via the `apiture:activate` link in the response. Pending resources which have not been activated may be deleted after an expiration period.
Allowed state transitions are:
* `pending -> active`
* `pending -> inactive`
* `active -> inactive`
* `inactive -> active`
* `active -> removed`
* `inactive -> removed`
A product or product type may only be deleted if its `state` is `pending`. A product or type may only change to `inactive` if it is not currently
in use by active accounts or active products. Products and product types include links which convey the allowed POST operations, such as
`apiture:activate`, `apiture:deactivate`, or `apiture:remove`.In addition, a product has `newAccountAvailability` which indicates if that product
is available for opening new accounts.
This resource is a copy of the banking product resources in the bank core.
# Error Types
Error responses in this API may have one of the `type` values described below.
See [Errors](https://developer.apiture.com/docs/concepts/errors) for more information
on error responses and error types.
activateProductInvalidState
**Description**: Products may only be activated if they are in an inactive or pending state.
**Remediation**: Check the state of your Product and the applicable allowed state transitions in the Products API documentation.
activateProductSubTypeInvalidState
**Description**: The state of the resource may not be changed to active or inactive when the product type or subtype is still `pending`.
**Remediation**: Check the state of your product type and subtype and ensure it is not pending.
canOnlyLockUnlockActive
**Description**: You can only lock or unlock a product if its state is `active`.
**Remediation**: Activate the product and resubmit the operation.
cannotChangeRateType
**Description**: The products rate type may not be changed once created.
**Remediation**: Remove the product and recreate it with the desired rate type or create a new product.
cannotChangeRemovedProductTypeState
**Description**: The state of a removed productType may not be changed.
**Remediation**: Check the state of the productType and ensure it is not removed.
cannotPatchProductFields
**Description**: A products _id and newAccountAvailability cannot be patched.
**Remediation**: Remove the _id and newAccountAvailability from the request body and try again.
cannotUpdateProductTypeState
**Description**: The state of a productType cannot be changed using a PUT method.
**Remediation**: Check the API documentation for the /activeProductTypes, /inactiveProductTypes, and /removedProductTypes endpoints.
deactivateProductInvalidState
**Description**: Products may only be deactivated if they are in a pending or active state.
**Remediation**: Check the state of your Product and the applicable allowed state transitions in the Products API documentation.
deleteProductInvalidState
**Description**: Products may only be deleted if they are in a pending state.
**Remediation**: Check the state of your Product and the applicable allowed state transitions in the Products API documentation.
deleteProductTypeInvalidState
**Description**: A product type may not be deleted if the state is anything other than pending, or if the type is used by a pending product.
**Remediation**: Check the state of the productType and ensure it is not pending. Also ensure that any products using the productType are not
pending.
**Description**: The supplied `if-Match` header value does not match the most recent `ETag` response header value. The resource has changed in the
interim.
**Remediation**: Resubmit the operation, supplying the value of the ETag and the most recent state of the resource.
invalidAccountAvailability
**Description**: The product new account availability is not valid.
**Remediation**: Resubmit the operation and supply a valid product new account availability value.
invalidConstraintItemAmount
**Description**: The given fees item amount value is not valid.
**Remediation**: Check to make sure the fees item amount is a valid numerical value. Also make sure the value is greater than 0.
invalidConstraintMaxFundingAmount
**Description**: The given maximumFundingAmount value is not valid.
**Remediation**: Check to make sure the maximumFundingAmount is a valid numerical value. Also make sure the value is greater than minimum value
and the value is greater than 0.
invalidConstraintMaxTransferAmount
**Description**: The given maximumTransferAmount value is not valid.
**Remediation**: Check to make sure the maximumTransferAmount is a valid numerical value. Also make sure the value is greater than minimum value
and the value is greater than 0.
invalidConstraintMinBalance
**Description**: The given minimumBalance value is not valid.
**Remediation**: Check to make sure the minimumBalance is a valid numerical value. Also make sure the value is greater than minimum value and the
value is greater than 0.
invalidConstraintMinFundingAmount
**Description**: The given minimumFundingAmount value is not valid.
**Remediation**: Check to make sure the minimumFundingAmount is a valid numerical value. Also make sure the value is greater than minimum value
and the value is greater than 0.
invalidConstraintMinTransferAmount
**Description**: The given minimumTransferAmount value is not valid.
**Remediation**: Check to make sure the minimumTransferAmount is a valid numerical value. Also make sure the value is greater than minimum value
and the value is greater than 0.
invalidFeesType
**Description**: The fee must be an array.
**Remediation**: Check the type of the fee field and resubmit.
invalidProductId
**Description**: No Products were found for the specified productId.
**Remediation**: Check to make sure that the supplied productId corresponds to an apiture product resource.
invalidProductLinkToSubType
**Description**: A link to apiture:productSubtype is missing or is invalid.
**Remediation**: Check to make sure the product has a valid subtype or that the subtype exists.
invalidProductState
**Description**: The supplied product state is invalid.
**Remediation**: Resubmit the operation, supplying a valid product state.
The `attributes` object in the error may have the following properties:
| Property | Type | Description |
|----------|------|-------------|
| validStates | [string] | The required states for this operation |
invalidProductTypeId
**Description**: No product types were found for the specified productTypeId.
**Remediation**: Check to make sure that the supplied productType corresponds to an apiture product type resource.
invalidQueryParameterCombination
**Description**: Do not use mutually exclusive query parameters.
**Remediation**: Use one or the other, but not both.
The `attributes` object in the error may have the following properties:
| Property | Type | Description |
|----------|------|-------------|
| mutuallyExclusiveQueryParameters | [string] | undefined
Example: `state,openable` |
invalidRateValues
**Description**: The rate object contains invalid values.
**Remediation**: Check the values of the rate object and resubmit.
invalidTransactionTypes
**Description**: The given transaction type is not valid.
**Remediation**: Resubmit the operation and supply a valid transaction type.
malformedCreateProductBody
**Description**: The supplied request body to create a product did not contain a description or label.
**Remediation**: Resubmit the request with a description and label in the body.
**Description**: The supplied product was malformed.
**Remediation**: Check to make sure that the supplied product parameter corresponds to an apiture product resource.
The `attributes` object in the error may have the following properties:
| Property | Type | Description |
|----------|------|-------------|
| product | string | The URI or the ID of an existing product |
**Description**: The supplied productType was malformed.
**Remediation**: Check to make sure that the supplied productType corresponds to an apiture productType resource.
The `attributes` object in the error may have the following properties:
| Property | Type | Description |
|----------|------|-------------|
| productType | string | The invalid product type URI. |
malformedRequestBody
**Description**: The supplied request body was malformed.
**Remediation**: Check to make sure that your request body exists and that it does not contain syntax errors.
productCodeInUse
**Description**: The given product code is currently in use, and cannot be reused.
**Remediation**: Delete the product with the specified code, or use a different code.
productNameInUse
**Description**: The given product name is currently in use, and cannot be reused.
**Remediation**: Delete the product with the specified name, or use a different name.
productStateCannotBeAltered
**Description**: A products state cannot be altered using the PATCH operation.
**Remediation**: Check the API documentation for the /activeProducts, /inactiveProducts, /removedProducts, /lockedProducts, and /unlockedProducts
endpoints.
productTypeDoesNotExist
**Description**: The given product type does not exist.
**Remediation**: Verify that the product type exists for the subtype or parent type and resubmit.
removeProductInvalidState
**Description**: Products may only be removed if they are in an inactive or active state.
**Remediation**: Check the state of your Product and the applicable allowed state transitions in the Products API documentation.
removeProductTypeInvalidState
**Description**: A product type may not be updated if the state is removed.
**Remediation**: Check the state of the productType and ensure it not removed.
updateProductTypeInvalidState
**Description**: A product type may not be removed if the state is anything other than inactive.
**Remediation**: Check the state of the productType and ensure it is inactive.
version: 0.23.2
contact:
name: Apiture
url: 'https://developer.apiture.com'
email: api@apiture.com
termsOfService: 'https://developer.apiture.com/docs/Apiture-Open-API-License-Agreement.pdf'
tags:
- name: Product
description: Banking Products
- name: Product Type
description: Banking Product Types
- name: Account Verification Letter Template
description: Account Verification Letter Template
- name: API
description: The Products API
paths:
/productTypes:
get:
summary: Return a collection of product types
description: >-
Return a [paginated](https://developer.apiture.com/docs/concepts/pagination) [sortable](https://developer.apiture.com/docs/concepts/sorting)
[filterable](https://developer.apiture.com/docs/concepts/filtering) [searchable](https://developer.apiture.com/docs/concepts/searchable)
collection of product types. The [links](https://developer.apiture.com/docs/concepts/links) in the response include pagination links.
operationId: getProductTypes
security:
- apiKey: []
x-apiture-implemented: true
tags:
- Product Type
x-apiture-traits:
sortBy:
- state
- type
- name
- subtype
itemSchema: productType
filters:
state:
filter:
- eq
- ne
- in
type:
filter:
- eq
- ne
- in
name:
filter:
- eq
- ne
- lt
- le
- gt
- ge
- startsWith
- endsWith
- contains
- search
subtype:
filter:
- eq
- ne
- in
parameters:
- name: start
in: query
description: 'The zero-based index of the first product type in this page. The default, 0, represents the first page of the collection.'
schema:
type: integer
format: int64
default: 0
- name: limit
in: query
description: The maximum number of product type representations to return in this page.
schema:
type: integer
format: int32
default: 100
- name: sortBy
in: query
description: >-
Optional sort criteria. See [sort criteria format](https://developer.apiture.com/docs/concepts/sorting), such as
`?sortBy=field1,-field2`.
This collection may be sorted by following properties:
• `state`
• `type`
•
`name`
• `subtype`
schema:
type: string
- $ref: '#/components/parameters/nameQueryParam'
- $ref: '#/components/parameters/typeQueryParam'
- $ref: '#/components/parameters/subtypeQueryParam'
- $ref: '#/components/parameters/stateQueryParam'
- name: filter
in: query
description: >-
Optional filter criteria. See [filtering](https://developer.apiture.com/docs/concepts/filtering).
This collection may be filtered by
following properties and functions:
• Property `state` using functions `eq`, `ne`, `in`
• Property `type` using
functions `eq`, `ne`, `in`
• Property `name` using functions `eq`, `ne`, `lt`, `le`, `gt`, `ge`, `startsWith`,
`endsWith`, `contains`, `search`
• Property `subtype` using functions `eq`, `ne`, `in`
schema:
type: string
- $ref: '#/components/parameters/qQueryParam'
- name: parent
in: query
description: >-
Subset the product types to only those subtypes whose parent type is named by its product type URI. This implements the
*`apiture:children`* link relation on a product type.
schema:
type: string
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productTypes'
application/json:
schema:
$ref: '#/components/schemas/productTypes'
'400':
$ref: '#/components/responses/400'
'422':
$ref: '#/components/responses/422'
post:
summary: Create a new product type
description: >-
Create a new product type or subtype. The request may include a parent type in order to create a subtype. The parent type may not be a
subtype. The `name` must be unique and the `state` may not be `removed`. `POST` to the `apiture:activate` link after creating a product type
to activate it.
operationId: createProductType
security:
- apiKey: []
accessToken:
- admin/write
x-apiture-implemented: true
tags:
- Product Type
parameters:
- name: copyOf
in: query
description: >-
To make a copy of an existing product type, pass the URI of the original product type. Fields in the request body will override the values
copied from the existing product type. The new name must be passed in the body, since names must be unique. A new unique `code` will be
assigned to the copy.
schema:
type: string
format: uri
requestBody:
content:
application/hal+json:
schema:
$ref: '#/components/schemas/createProductType'
application/json:
schema:
$ref: '#/components/schemas/createProductType'
description: The data necessary to create a new product type.
required: true
responses:
'201':
description: Created
headers:
Location:
description: >-
The URI of the new resource. If the URI begins with / it is relative to the API root context. Else, it is a full URI starting with
*`scheme`*`://host` .
schema:
type: string
format: uri
ETag:
description: >-
The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
operations which update the resource.
schema:
type: string
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
description: |-
Bad Request. One of the request parameters to create a productType was not valid. See _error for more information
This error response may have one of the following `type` values:
* [`malformedRequestBody`](#err-malformedRequestBody)
* [`invalidProductState`](#err-invalidProductState)
x-apiture-errors:
- malformedRequestBody
- invalidProductState
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'409':
$ref: '#/components/responses/409ProdTypeConflict'
'/productTypes/{productTypeId}':
get:
summary: Fetch a representation of this product type.
description: >-
Return a [HAL](https://developer.apiture.com/docs/concepts/hal) representation of this product type resource. See the description of the
`productType` model schema for the links that may be found in a product type representation.
operationId: getProductType
security:
- apiKey: []
x-apiture-implemented: true
tags:
- Product Type
parameters:
- $ref: '#/components/parameters/productTypeIdPathParam'
- $ref: '#/components/parameters/ifNoneMatchHeaderParam'
responses:
'200':
description: OK
headers:
ETag:
description: >-
The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
operations which update this product type resource.
schema:
type: string
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'304':
$ref: '#/components/responses/304'
'404':
$ref: '#/components/responses/404ProductType'
put:
summary: Update this product type
description: >-
Perform a complete replacement of this product type. Changes to the `state` follow the rules described in this API's description. To
change the state of a product type, use the `apiture:activate`, `apiture:deactivate`, or `apiture:remove` links on the resource to `POST` the
product type URI to one of the paths, `/activeProductTypes`, `/inactiveProductTypes`, `/removedProductTypes`.
operationId: updateProductType
security:
- apiKey: []
accessToken:
- admin/write
x-apiture-implemented: true
tags:
- Product Type
parameters:
- $ref: '#/components/parameters/productTypeIdPathParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
requestBody:
$ref: '#/components/requestBodies/productType'
responses:
'200':
description: OK
headers:
ETag:
description: >-
The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
operations which update this product type resource.
schema:
type: string
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
$ref: '#/components/responses/400'
'404':
$ref: '#/components/responses/404ProductType'
'409':
$ref: '#/components/responses/409ProdTypeConflict'
'412':
$ref: '#/components/responses/412'
'422':
$ref: '#/components/responses/422'
patch:
summary: Update this product type
description: >-
Perform a partial update of this product type. Fields which are omitted are not updated. Changes to the `state` follow the rules described in
this API's description. To change the state of a product type, use the `apiture:activate`, `apiture:deactivate`, or `apiture:remove`
links on the resource to `/activeProductTypes`, `/inactiveProductTypes`, `/removedProductTypes`.
operationId: patchProductType
security:
- apiKey: []
accessToken:
- admin/write
x-apiture-implemented: true
tags:
- Product Type
parameters:
- $ref: '#/components/parameters/productTypeIdPathParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
requestBody:
$ref: '#/components/requestBodies/productType'
responses:
'200':
description: OK
headers:
ETag:
description: >-
The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
operations which update this product type resource.
schema:
type: string
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
description: |-
Bad Request. One of the request parameters to patch a productType was not valid. See _error for more information
This error response may have one of the following `type` values:
* [`malformedProductType`](#err-malformedProductType)
x-apiture-errors:
- malformedProductType
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'404':
$ref: '#/components/responses/404ProductType'
'409':
$ref: '#/components/responses/409ProdTypeConflict'
'412':
$ref: '#/components/responses/412'
'422':
$ref: '#/components/responses/422'
delete:
summary: Delete this product type resource
description: >-
Delete this product type resource and any resources that are owned by it. A product type may only be deleted if its `state` is `pending`, and
it is not in use by a product.
operationId: deleteProductType
security:
- apiKey: []
accessToken:
- admin/delete
x-apiture-implemented: true
tags:
- Product Type
parameters:
- $ref: '#/components/parameters/ifMatchHeaderParam'
- $ref: '#/components/parameters/productTypeIdPathParam'
responses:
'204':
$ref: '#/components/responses/204Deleted'
'409':
description: >-
Conflict. A product type may not be deleted if the `state` is anything other than `pending`, or if the type is used by a `pending`
product.
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'412':
$ref: '#/components/responses/412'
/products:
get:
summary: Return a collection of products
description: >-
Return a [paginated](https://developer.apiture.com/docs/concepts/pagination) [sortable](https://developer.apiture.com/docs/concepts/sorting)
[filterable](https://developer.apiture.com/docs/concepts/filtering) [searchable](https://developer.apiture.com/docs/concepts/searchable)
collection of products. The [links](https://developer.apiture.com/docs/concepts/links) in the response include pagination links.
operationId: getProducts
security:
- apiKey: []
x-apiture-implemented: true
tags:
- Product
x-apiture-traits:
sortBy:
- state
- type
- name
- code
- category
- target
- label
itemSchema: product
filters:
code:
filter:
- eq
- ne
- in
category:
filter:
- eq
- ne
- in
openable:
filter:
- eq
- ne
- not
name:
filter:
- eq
- ne
- lt
- le
- gt
- ge
- startsWith
- endsWith
- contains
- search
label:
filter:
- eq
- ne
- startsWith
- endsWith
- contains
- search
state:
filter:
- eq
- ne
- in
target:
filter:
- eq
- ne
multiMatch: false
type:
filter:
- eq
- ne
- in
newAccountAvailability:
filter:
- eq
- ne
multiMatch: false
ifxType:
filter:
- eq
- ne
- in
_id:
filter:
- eq
- in
parameters:
- name: start
in: query
description: 'The zero-based index of the first product in this page. The default, 0, represents the first page of the collection.'
schema:
type: integer
format: int64
default: 0
- name: limit
in: query
description: The maximum number of product representations to return in this page.
schema:
type: integer
format: int32
default: 100
- name: sortBy
in: query
description: >-
Optional sort criteria. See [sort criteria format](https://developer.apiture.com/docs/concepts/sorting), such as
`?sortBy=field1,-field2`.
This collection may be sorted by following properties:
• `state`
• `type`
•
`name`
• `code`
• `category`
• `target`
• `label`
schema:
type: string
- $ref: '#/components/parameters/nameQueryParam'
- $ref: '#/components/parameters/typeQueryParam'
- $ref: '#/components/parameters/codeQueryParam'
- $ref: '#/components/parameters/categoryQueryParam'
- $ref: '#/components/parameters/stateQueryParam'
- $ref: '#/components/parameters/targetQueryParam'
- $ref: '#/components/parameters/ifxTypeQueryParam'
- name: filter
in: query
description: >-
Optional filter criteria. See [filtering](https://developer.apiture.com/docs/concepts/filtering).
This collection may be filtered by
following properties and functions:
• Property `code` using functions `eq`, `ne`, `in`
• Property `category` using
functions `eq`, `ne`, `in`
• Property `openable` using functions `eq`, `ne`, `not`
• Property `name` using
functions `eq`, `ne`, `lt`, `le`, `gt`, `ge`, `startsWith`, `endsWith`, `contains`, `search`
• Property `label` using
functions `eq`, `ne`, `startsWith`, `endsWith`, `contains`, `search`
• Property `state` using functions `eq`, `ne`,
`in`
• Property `target` using functions `eq`, `ne`
• Property `type` using functions `eq`, `ne`,
`in`
• Property `newAccountAvailability` using functions `eq`, `ne`
• Property `ifxType` using functions `eq`,
`ne`, `in`
• Property `_id` using functions `eq`, `in`
schema:
type: string
- $ref: '#/components/parameters/qQueryParam'
- name: openable
in: query
description: >-
If true, filter only by products whose `state` is `active` and `newAccountAvailability` is `available`. For example, `?openable=true` is
equivalent to `?state=active&newAccountAvailability=available` .
schema:
type: boolean
- name: newAccountAvailability
in: query
description: Subset the result to only those whose `newAccountAvailability` property matches this value.
schema:
type: string
enum:
- available
- notAvailable
- name: productType
in: query
description: >-
Subset the result to only products that use the product type identified by this value. The value is the `_id` of a product type instance.
(This query parameter is used to implement the *`apiture:products`* link relation on a product type resource.)
schema:
type: string
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/products'
application/json:
schema:
$ref: '#/components/schemas/products'
'400':
$ref: '#/components/responses/400'
'409':
description: |-
Conflict. Query parameters are in conflict. Do not use both `?openable=` and `?state=` query parameters.
This error response may have one of the following `type` values:
* [`invalidQueryParameterCombination`](#err-invalidQueryParameterCombination)
x-apiture-errors:
- invalidQueryParameterCombination
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'422':
$ref: '#/components/responses/422'
post:
summary: Create a new product
description: >-
Create a new product from the given name, label, description, and product subtype. The request must contain links to an existing product
subtype. The `name` must be unique and the `state` may not be `removed`. `POST` to the `apiture:activate` link after creating a product to
activate it.
operationId: createProduct
security:
- apiKey: []
accessToken:
- admin/write
x-apiture-implemented: true
tags:
- Product
parameters:
- name: copyOf
in: query
description: >-
To make a copy of an existing product, pass the URI of the original product. Fields in the request body will override the values copied
from the existing product. The new name must be passed in the body, since names must be unique.
schema:
type: string
format: uri
requestBody:
content:
application/hal+json:
schema:
$ref: '#/components/schemas/createProduct'
application/json:
schema:
$ref: '#/components/schemas/createProduct'
description: The data necessary to create a new product.
required: true
responses:
'201':
description: Created
headers:
Location:
description: >-
The URI of the new resource. If the URI begins with / it is relative to the API root context. Else, it is a full URI starting with
*`scheme`*`://host` .
schema:
type: string
format: uri
ETag:
description: >-
The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
operations which update the resource.
schema:
type: string
content:
application/hal+json:
schema:
$ref: '#/components/schemas/product'
application/json:
schema:
$ref: '#/components/schemas/product'
'400':
description: |-
Bad Request. One of the request parameters to create a product was not valid. See _error for more information
This error response may have one of the following `type` values:
* [`malformedRequestBody`](#err-malformedRequestBody)
* [`malformedCreateProductBody`](#err-malformedCreateProductBody)
* [`invalidProductState`](#err-invalidProductState)
* [`invalidAccountAvailability`](#err-invalidAccountAvailability)
* [`invalidProductLinkToSubType`](#err-invalidProductLinkToSubType)
* [`invalidTransactionTypes`](#err-invalidTransactionTypes)
* [`invalidConstraintItemAmount`](#err-invalidConstraintItemAmount)
* [`invalidConstraintMaxFundingAmount`](#err-invalidConstraintMaxFundingAmount)
* [`invalidConstraintMaxTransferAmount`](#err-invalidConstraintMaxTransferAmount)
* [`invalidConstraintMinBalance`](#err-invalidConstraintMinBalance)
* [`invalidConstraintMinFundingAmount`](#err-invalidConstraintMinFundingAmount)
* [`invalidConstraintMinTransferAmount`](#err-invalidConstraintMinTransferAmount)
* [`invalidRateValues`](#err-invalidRateValues)
* [`invalidFeesType`](#err-invalidFeesType)
x-apiture-errors:
- malformedRequestBody
- malformedCreateProductBody
- invalidProductState
- invalidAccountAvailability
- invalidProductLinkToSubType
- invalidTransactionTypes
- invalidConstraintItemAmount
- invalidConstraintMaxFundingAmount
- invalidConstraintMaxTransferAmount
- invalidConstraintMinBalance
- invalidConstraintMinFundingAmount
- invalidConstraintMinTransferAmount
- invalidRateValues
- invalidFeesType
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'409':
$ref: '#/components/responses/409ProdConflict'
'/products/{productId}/verificationLetterTemplate':
get:
summary: Fetch an account verification letter template
description: >-
Return a representation of account verification letter template for this product. This is a Mustache template. The content is [Github Flavored
Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) with Mustache template variables for replaceable text.
The variables in the template are:
* `{accountOwnerName}` - The account owner's full name
* `{accountOwnerAddress}` - The account owner's address
* `{businessName}` - The business name
* `{businessAddress}` - The business' address
* `{today}` - Today's date
* `{product}` - The account's product name
* `{productType}` - The account's product type name
* `{productApy}` - The product APY
* `{routingNumber}` - The routing number
* `{accountNumber}` - The account number
* `{maturityDate}` - The maturity date
* `{openingDate}` - The opening date
* `{AccountBalance}` - The account balance
This template is used to format the account verification letter in the `createVerificationLetter` operation in the Accounts API.
operationId: getVerificationLetterTemplate
security:
- apiKey: []
accessToken:
- admin/read
x-apiture-implemented: true
tags:
- Account Verification Letter Template
parameters:
- $ref: '#/components/parameters/productIdPathParam'
- name: Accept
in: header
description: The media type of the desired response representation. Only `text/markdown` is currently supported.
schema:
type: string
responses:
'200':
description: Markdown template for the account verifications letter template.
headers:
Content-Type:
description: The media type of the response representation. The `Content-Type` will be `text/markdown`.
schema:
type: string
content:
text/markdown:
schema:
type: string
'404':
$ref: '#/components/responses/404Product'
'406':
description: >-
Not Acceptable. Indicates that the server cannot produce a response matching the list of acceptable values defined in the request's
headers (i.e. not text/markdown)
content:
text/markdown:
schema:
$ref: '#/components/schemas/errorResponse'
put:
summary: Update this account verification letter template
description: Set or replace the account verification letter template for this product.
operationId: updateVerificationLetterTemplate
security:
- apiKey: []
accessToken:
- admin/write
x-apiture-implemented: true
tags:
- Account Verification Letter Template
parameters:
- $ref: '#/components/parameters/productIdPathParam'
- name: Accept
in: header
description: The media type of the desired response representation. Only `text/markdown` is currently supported.
schema:
type: string
- name: Content-Type
in: header
description: The media type of the request body representation. Only `text/markdown` is currently supported.
schema:
type: string
requestBody:
content:
text/markdown:
schema:
type: string
description: >-
The [Github Flavored Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) text (with Mustache variables)
defining the template for the verification letter.
required: true
responses:
'200':
description: OK
headers:
Content-Type:
description: The media type of the response representation. The `Content-Type` will be `text/markdown`.
schema:
type: string
content:
text/markdown:
schema:
type: string
'404':
$ref: '#/components/responses/404Product'
'/products/{productId}':
get:
summary: Fetch a representation of this product
description: >-
Return a [HAL](https://developer.apiture.com/docs/concepts/hal) representation of this product resource.
**Note**: If the `?calculate=` parameters is used to request optional calulated product properties but the value(s) cannot be computed, the
`_error` object in the [`product`](#schema-product) response contains a description of the error, although the product response is still
returned with a 200 OK HTTP status.
operationId: getProduct
security:
- apiKey: []
x-apiture-implemented: true
tags:
- Product
parameters:
- $ref: '#/components/parameters/productIdPathParam'
- $ref: '#/components/parameters/ifNoneMatchHeaderParam'
- name: calculate
in: query
description: >-
Cacluate additinal optional properties related to the product and include them in the [`product`](#schema-product) response. If provided,
the value is a comma-separated list of additional product properties to calculate: - `maturesAt` - calculate the
`timeDeposit.maturesAt` property for CD or other time-deposit products. This is ignored if the product is not a time-deposit product.
Example: `?calculate=maturesAt`
required: false
style: form
explode: false
schema:
type: array
items:
type: string
enum:
- maturesAt
minItems: 1
responses:
'200':
description: OK
headers:
ETag:
description: >-
The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
operations which update this product resource.
schema:
type: string
content:
application/hal+json:
schema:
$ref: '#/components/schemas/product'
application/json:
schema:
$ref: '#/components/schemas/product'
'304':
$ref: '#/components/responses/304'
'404':
$ref: '#/components/responses/404Product'
'412':
$ref: '#/components/responses/412'
put:
summary: Update this product
description: >-
Perform a complete replacement of this product. The new name, if any, must not be in use by another product (whether active or inactive).
Changes to the `state` follow the rules described in this API's description. To change the state of a product, use the
`apiture:activate`, `apiture:deactivate`, or `apiture:remove` links on the resource to `/activeProducts`, `/inactiveProducts`,
`/removedProducts`.
The product `code` may not be changed if the current `state` is not `pending`.
operationId: updateProduct
security:
- apiKey: []
accessToken:
- admin/write
x-apiture-implemented: true
tags:
- Product
parameters:
- $ref: '#/components/parameters/productIdPathParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
requestBody:
$ref: '#/components/requestBodies/product'
responses:
'200':
description: OK
headers:
ETag:
description: >-
The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
operations which update this product resource.
schema:
type: string
content:
application/hal+json:
schema:
$ref: '#/components/schemas/product'
application/json:
schema:
$ref: '#/components/schemas/product'
'400':
description: |-
Bad Request. One of the request parameters to update a product was not valid. See _error for more information
This error response may have one of the following `type` values:
* [`malformedProduct`](#err-malformedProduct)
* [`invalidProductState`](#err-invalidProductState)
* [`invalidTransactionTypes`](#err-invalidTransactionTypes)
* [`invalidConstraintItemAmount`](#err-invalidConstraintItemAmount)
* [`invalidConstraintMaxFundingAmount`](#err-invalidConstraintMaxFundingAmount)
* [`invalidConstraintMaxTransferAmount`](#err-invalidConstraintMaxTransferAmount)
* [`invalidConstraintMinBalance`](#err-invalidConstraintMinBalance)
* [`invalidConstraintMinFundingAmount`](#err-invalidConstraintMinFundingAmount)
* [`invalidConstraintMinTransferAmount`](#err-invalidConstraintMinTransferAmount)
* [`invalidRateValues`](#err-invalidRateValues)
* [`invalidFeesType`](#err-invalidFeesType)
x-apiture-errors:
- malformedProduct
- invalidProductState
- invalidTransactionTypes
- invalidConstraintItemAmount
- invalidConstraintMaxFundingAmount
- invalidConstraintMaxTransferAmount
- invalidConstraintMinBalance
- invalidConstraintMinFundingAmount
- invalidConstraintMinTransferAmount
- invalidRateValues
- invalidFeesType
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'404':
$ref: '#/components/responses/404Product'
'412':
$ref: '#/components/responses/412'
'422':
$ref: '#/components/responses/422'
patch:
summary: Update this product
description: >-
Perform a partial update of this product. Fields which are omitted are not updated. The new name, if any, must not be in use by another
product (whether active or inactive). Changes to the `state` follow the rules described in this API's description. To change the state of
a product, use the `apiture:activate`, `apiture:deactivate`, or `apiture:remove` links on the resource to `/activeProducts`,
`/inactiveProducts`, `/removedProducts`.
The product `code` may not be changed if the current `state` is not `pending`.
operationId: patchProduct
security:
- apiKey: []
accessToken:
- admin/write
x-apiture-implemented: true
tags:
- Product
parameters:
- $ref: '#/components/parameters/productIdPathParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
requestBody:
$ref: '#/components/requestBodies/product'
responses:
'200':
description: OK
headers:
ETag:
description: >-
The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
operations which update this product resource.
schema:
type: string
content:
application/hal+json:
schema:
$ref: '#/components/schemas/product'
application/json:
schema:
$ref: '#/components/schemas/product'
'400':
description: |-
Bad Request. One of the request parameters to patch a product was not valid. See _error for more information
This error response may have one of the following `type` values:
* [`malformedProduct`](#err-malformedProduct)
* [`invalidProductState`](#err-invalidProductState)
* [`invalidTransactionTypes`](#err-invalidTransactionTypes)
* [`invalidConstraintItemAmount`](#err-invalidConstraintItemAmount)
* [`invalidConstraintMaxFundingAmount`](#err-invalidConstraintMaxFundingAmount)
* [`invalidConstraintMaxTransferAmount`](#err-invalidConstraintMaxTransferAmount)
* [`invalidConstraintMinBalance`](#err-invalidConstraintMinBalance)
* [`invalidConstraintMinFundingAmount`](#err-invalidConstraintMinFundingAmount)
* [`invalidConstraintMinTransferAmount`](#err-invalidConstraintMinTransferAmount)
* [`invalidRateValues`](#err-invalidRateValues)
* [`invalidFeesType`](#err-invalidFeesType)
x-apiture-errors:
- malformedProduct
- invalidProductState
- invalidTransactionTypes
- invalidConstraintItemAmount
- invalidConstraintMaxFundingAmount
- invalidConstraintMaxTransferAmount
- invalidConstraintMinBalance
- invalidConstraintMinFundingAmount
- invalidConstraintMinTransferAmount
- invalidRateValues
- invalidFeesType
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'404':
$ref: '#/components/responses/404Product'
'409':
$ref: '#/components/responses/409ProdConflict'
'412':
$ref: '#/components/responses/412'
'422':
description: |-
unprocessableEntity. The _id and newAccountAvailability cannot be changed
This error response may have one of the following `type` values:
* [`cannotPatchProductFields`](#err-cannotPatchProductFields)
x-apiture-errors:
- cannotPatchProductFields
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
delete:
summary: Delete this product resource
description: |-
Delete this product resource and any resources that are owned by it.
A product may only be deleted if its `state` is `pending`.
operationId: deleteProduct
security:
- apiKey: []
accessToken:
- admin/delete
x-apiture-implemented: true
tags:
- Product
parameters:
- $ref: '#/components/parameters/ifMatchHeaderParam'
- $ref: '#/components/parameters/productIdPathParam'
responses:
'204':
$ref: '#/components/responses/204Deleted'
'400':
description: |-
Bad Request. One of the request parameters to delete a product was not valid. See _error for more information
This error response may have one of the following `type` values:
* [`malformedProduct`](#err-malformedProduct)
* [`deleteProductInvalidState`](#err-deleteProductInvalidState)
x-apiture-errors:
- malformedProduct
- deleteProductInvalidState
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'409':
description: Conflict. A product may not be deleted if the `state` is anything other than `pending`.
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'412':
$ref: '#/components/responses/412'
/activeProductTypes:
post:
summary: Activate a product type
description: >-
Activate a product type that is eligible to be activated. Only product types which are `pending` or `inactive` may be activated. This
`POST` operation is invoked from the `apiture:activate` link on a product type.
This changes the `state` to `active`.
operationId: activateProductType
security:
- apiKey: []
accessToken:
- admin/write
tags:
- Product Type
parameters:
- $ref: '#/components/parameters/productTypeQueryParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
description: |-
Bad Request. The `productType` was malformed or does not refer to a product type.
This error response may have one of the following `type` values:
* [`malformedProductType`](#err-malformedProductType)
x-apiture-errors:
- malformedProductType
'409':
$ref: '#/components/responses/409ProdTypeConflict'
'422':
$ref: '#/components/responses/422'
/inactiveProductTypes:
post:
summary: Deactivate a product type
description: >-
Deactivate a product type that is eligible to be deactivated.
Only product types which are `pending` or `active` and which are not in use
by any `pending` or `active` products or accounts, and which are not the parent type of `pending` or `active` product types may be
deactivated.
This `POST` operation is invoked from the `apiture:deactivate` link on a product type when it is eligible to be deactivated.
This changes the `state` to `inactive`.
operationId: deactivateProductType
security:
- apiKey: []
accessToken:
- admin/write
tags:
- Product Type
parameters:
- $ref: '#/components/parameters/productTypeQueryParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
description: |-
Bad Request. The `productType` was malformed or does not refer to a product type.
This error response may have one of the following `type` values:
* [`malformedProductType`](#err-malformedProductType)
x-apiture-errors:
- malformedProductType
'409':
$ref: '#/components/responses/409ProdTypeConflict'
'422':
$ref: '#/components/responses/422'
/removedProductTypes:
post:
summary: Remove a product type
tags:
- Product Type
description: >-
Remove a product type that is eligible to be removed.
Only product types which are `active` or `inactive` and which are not in use by any
`pending`, `active` or `inactive` products or accounts, and which are not the parent type of pending, active, or inactive product types may be
removed. This operation is invoked from the `apiture:remove` link on a product type when it is eligible to be removed.
This changes the
`state` to `removed`.
Removing a product type will append the timestamp with the format "` (Removed yyyy-mm-ddTHH:MM:SSZ)`" to the name,
so that the previous name may be used for other product types.
operationId: removeProductType
security:
- apiKey: []
accessToken:
- admin/write
parameters:
- $ref: '#/components/parameters/productTypeQueryParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
description: |-
Bad Request. The `productType` was malformed or does not refer to a product type.
This error response may have one of the following `type` values:
* [`malformedProductType`](#err-malformedProductType)
x-apiture-errors:
- malformedProductType
'409':
$ref: '#/components/responses/409ProdTypeConflict'
'422':
$ref: '#/components/responses/422'
/unlockedProducts:
post:
summary: Marks an active product as eligible for new account opening
description: >-
Marks an active product as eligible for new account opening.
This `POST` operation is invoked from the `apiture:unlock` link on a product.
This changes the `newAccountAvailability` to `available`.
operationId: unlockProduct
security:
- apiKey: []
accessToken:
- admin/write
tags:
- Product
parameters:
- $ref: '#/components/parameters/productQueryParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
description: |-
Bad Request. The `product` was malformed or does not refer to a product.
This error response may have one of the following `type` values:
* [`canOnlyLockUnlockActive`](#err-canOnlyLockUnlockActive)
* [`malformedProduct`](#err-malformedProduct)
x-apiture-errors:
- canOnlyLockUnlockActive
- malformedProduct
'409':
$ref: '#/components/responses/409ProdConflict'
'422':
$ref: '#/components/responses/422'
/lockedProducts:
post:
summary: Marks an active product as ineligible for new account opening
description: >-
Marks an active product as ineligible for new account opening. Users may not open new accounts with this product, thus the product is
"locked".
This `POST` operation is invoked from the `apiture:lock` link on a product.
This changes the `newAccountAvailability` to
`notAvailable`.
operationId: lockProduct
security:
- apiKey: []
accessToken:
- admin/write
tags:
- Product
parameters:
- $ref: '#/components/parameters/productQueryParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
description: |-
Bad Request. The `product` was malformed or does not refer to a product.
This error response may have one of the following `type` values:
* [`canOnlyLockUnlockActive`](#err-canOnlyLockUnlockActive)
* [`malformedProduct`](#err-malformedProduct)
x-apiture-errors:
- canOnlyLockUnlockActive
- malformedProduct
'409':
$ref: '#/components/responses/409ProdConflict'
'422':
$ref: '#/components/responses/422'
/activeProducts:
post:
summary: Activate a product
description: >-
Activate a product that is eligible to be activated. Only product types which are `pending` or `inactive` may be activated.
This `POST`
operation is invoked from the `apiture:activate` link on a product.
This changes the `state` to `active`.
operationId: activateProduct
security:
- apiKey: []
accessToken:
- admin/write
tags:
- Product
parameters:
- $ref: '#/components/parameters/productQueryParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
description: |-
Bad Request. The `product` was malformed or does not refer to a product.
This error response may have one of the following `type` values:
* [`malformedProduct`](#err-malformedProduct)
x-apiture-errors:
- malformedProduct
'409':
$ref: '#/components/responses/409ProdConflict'
'422':
$ref: '#/components/responses/422'
/inactiveProducts:
post:
summary: Deactivate a product
description: >-
Deactivate a product that is eligible to be deactivated.
Only products which are `pending` or `active` and which are not in use by any
`pending`, `active` or `inactive` accounts types may be deactivated.
This `POST` operation is invoked from the `apiture:deactivate` link
on a product when it is eligible to be deactivated.
This changes the `state` to `inactive`.
operationId: deactivateProduct
security:
- apiKey: []
accessToken:
- admin/write
tags:
- Product
parameters:
- $ref: '#/components/parameters/productQueryParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
description: |-
Bad Request. The `product` was malformed or does not refer to a product.
This error response may have one of the following `type` values:
* [`malformedProduct`](#err-malformedProduct)
x-apiture-errors:
- malformedProduct
'409':
$ref: '#/components/responses/409ProdConflict'
'422':
$ref: '#/components/responses/422'
/removedProducts:
post:
summary: Remove a product
tags:
- Product
description: >-
Remove a product that is eligible to be removed.
Only products which are `active` or `inactive` _and_ which are not used by any non-closed
accounts may be removed.
This `POST` operation is invoked from the `apiture:remove` link on a product when it is eligible to be removed.
This changes the `state` to `removed`.
Removing a product will append the timestamp with the format "` (Removed
yyyy-mm-ddTHH:MM:SSZ)`" to the name, so that the previous name may be used for other products.
operationId: removeProduct
security:
- apiKey: []
accessToken:
- admin/write
parameters:
- $ref: '#/components/parameters/productQueryParam'
- $ref: '#/components/parameters/ifMatchHeaderParam'
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
'400':
description: |-
Bad Request. The `product` was malformed or does not refer to a product.
This error response may have one of the following `type` values:
* [`malformedProduct`](#err-malformedProduct)
x-apiture-errors:
- malformedProduct
'409':
$ref: '#/components/responses/409ProdConflict'
'422':
$ref: '#/components/responses/422'
/:
get:
summary: Top-level resources and operations in this API
description: |-
Return links to the top-level resources and operations in this API. This API returns the following links:
* *`apiture:product`* : links to the collection of products
* *`apiture:productTypes`* : links to the collection of product types
operationId: getApi
security:
- apiKey: []
x-apiture-implemented: true
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/root'
examples:
response:
value:
id: products
name: Banking Products
apiVersion: 0.1.0
_profile: 'https://api.apiture.com/schemas/common/root/v2.0.0/profile.json'
_links:
'apiture:products':
href: /products/products
'apiture:productTypes':
href: /products/productTypes
application/json:
schema:
$ref: '#/components/schemas/root'
tags:
- API
parameters: []
/apiDoc:
get:
summary: Return API definition document
description: Return the OpenAPI document that describes this API.
operationId: getApiDoc
security:
- apiKey: []
x-apiture-implemented: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
application/openapi+json;version=2.0:
schema:
type: object
application/openapi+yaml;version=2.0:
schema:
type: object
tags:
- API
parameters: []
/labels:
get:
summary: Localized Labels
description: |-
Return a JSON object which defines labels
for enumeration types defined by the schemas
defined in this API.
The labels in the response may not all match the
requested language; some may be in the default
language (`en-us`).
operationId: getLabels
security:
- apiKey: []
x-apiture-implemented: true
parameters:
- name: Accept-Language
in: header
description: >-
The weighted language tags which indicate the user's preferred natural language for the localized labels in the response, as per [RFC
7231](https://tools.ietf.org/html/rfc7231#section-5.3.5).
schema:
type: string
responses:
'200':
description: OK
content:
application/hal+json:
schema:
$ref: '#/components/schemas/labelGroups'
application/json:
schema:
$ref: '#/components/schemas/labelGroups'
tags:
- API
x-apiture-errors:
invalidProductId:
description: No Products were found for the specified productId
remediation: Check to make sure that the supplied productId corresponds to an apiture product resource
invalidProductTypeId:
description: No product types were found for the specified productTypeId
remediation: Check to make sure that the supplied productType corresponds to an apiture product type resource
ifMatchHeaderDoesNotMatch:
description: The supplied `if-Match` header value does not match the most recent `ETag` response header value. The resource has changed in the interim
remediation: 'Resubmit the operation, supplying the value of the ETag and the most recent state of the resource'
malformedProduct:
description: The supplied product was malformed
remediation: Check to make sure that the supplied product parameter corresponds to an apiture product resource
attributes:
properties:
product:
type: string
description: The URI or the ID of an existing product
malformedProductType:
description: The supplied productType was malformed
remediation: Check to make sure that the supplied productType corresponds to an apiture productType resource
attributes:
properties:
productType:
type: string
description: The invalid product type URI.
malformedRequestBody:
description: The supplied request body was malformed
remediation: Check to make sure that your request body exists and that it does not contain syntax errors
malformedCreateProductBody:
description: The supplied request body to create a product did not contain a description or label
remediation: Resubmit the request with a description and label in the body
canOnlyLockUnlockActive:
description: You can only lock or unlock a product if its state is `active`
remediation: Activate the product and resubmit the operation
invalidProductState:
description: The supplied product state is invalid
remediation: 'Resubmit the operation, supplying a valid product state'
attributes:
properties:
validStates:
description: The required states for this operation
type: array
items:
type: string
enum:
- active
- inactive
- pending
- removed
invalidAccountAvailability:
description: The product new account availability is not valid
remediation: Resubmit the operation and supply a valid product new account availability value
invalidTransactionTypes:
description: The given transaction type is not valid
remediation: Resubmit the operation and supply a valid transaction type
invalidConstraintMaxFundingAmount:
description: The given maximumFundingAmount value is not valid
remediation: >-
Check to make sure the maximumFundingAmount is a valid numerical value. Also make sure the value is greater than minimum value and the value is
greater than 0
invalidConstraintMaxTransferAmount:
description: The given maximumTransferAmount value is not valid
remediation: >-
Check to make sure the maximumTransferAmount is a valid numerical value. Also make sure the value is greater than minimum value and the value is
greater than 0
invalidConstraintMinBalance:
description: The given minimumBalance value is not valid
remediation: >-
Check to make sure the minimumBalance is a valid numerical value. Also make sure the value is greater than minimum value and the value is
greater than 0
invalidConstraintMinFundingAmount:
description: The given minimumFundingAmount value is not valid
remediation: >-
Check to make sure the minimumFundingAmount is a valid numerical value. Also make sure the value is greater than minimum value and the value is
greater than 0
invalidConstraintMinTransferAmount:
description: The given minimumTransferAmount value is not valid
remediation: >-
Check to make sure the minimumTransferAmount is a valid numerical value. Also make sure the value is greater than minimum value and the value is
greater than 0
invalidConstraintItemAmount:
description: The given fees item amount value is not valid
remediation: Check to make sure the fees item amount is a valid numerical value. Also make sure the value is greater than 0
invalidProductLinkToSubType:
description: 'A link to apiture:productSubtype is missing or is invalid'
remediation: Check to make sure the product has a valid subtype or that the subtype exists
invalidRateValues:
description: The rate object contains invalid values
remediation: Check the values of the rate object and resubmit
invalidFeesType:
description: The fee must be an array
remediation: Check the type of the fee field and resubmit
cannotPatchProductFields:
description: A products _id and newAccountAvailability cannot be patched
remediation: Remove the _id and newAccountAvailability from the request body and try again
activateProductInvalidState:
description: Products may only be activated if they are in an inactive or pending state
remediation: Check the state of your Product and the applicable allowed state transitions in the Products API documentation
removeProductInvalidState:
description: Products may only be removed if they are in an inactive or active state
remediation: Check the state of your Product and the applicable allowed state transitions in the Products API documentation
deactivateProductInvalidState:
description: Products may only be deactivated if they are in a pending or active state
remediation: Check the state of your Product and the applicable allowed state transitions in the Products API documentation
deleteProductInvalidState:
description: Products may only be deleted if they are in a pending state
remediation: Check the state of your Product and the applicable allowed state transitions in the Products API documentation
cannotChangeRateType:
description: The products rate type may not be changed once created
remediation: Remove the product and recreate it with the desired rate type or create a new product
productStateCannotBeAltered:
description: A products state cannot be altered using the PATCH operation
remediation: 'Check the API documentation for the /activeProducts, /inactiveProducts, /removedProducts, /lockedProducts, and /unlockedProducts endpoints'
productNameInUse:
description: 'The given product name is currently in use, and cannot be reused'
remediation: 'Delete the product with the specified name, or use a different name'
productCodeInUse:
description: 'The given product code is currently in use, and cannot be reused'
remediation: 'Delete the product with the specified code, or use a different code'
activateProductSubTypeInvalidState:
description: The state of the resource may not be changed to active or inactive when the product type or subtype is still `pending`.
remediation: Check the state of your product type and subtype and ensure it is not pending
productTypeDoesNotExist:
description: The given product type does not exist
remediation: Verify that the product type exists for the subtype or parent type and resubmit
deleteProductTypeInvalidState:
description: 'A product type may not be deleted if the state is anything other than pending, or if the type is used by a pending product'
remediation: Check the state of the productType and ensure it is not pending. Also ensure that any products using the productType are not pending
removeProductTypeInvalidState:
description: A product type may not be updated if the state is removed.
remediation: Check the state of the productType and ensure it not removed.
updateProductTypeInvalidState:
description: A product type may not be removed if the state is anything other than inactive.
remediation: Check the state of the productType and ensure it is inactive.
cannotChangeRemovedProductTypeState:
description: The state of a removed productType may not be changed
remediation: Check the state of the productType and ensure it is not removed
cannotUpdateProductTypeState:
description: The state of a productType cannot be changed using a PUT method
remediation: 'Check the API documentation for the /activeProductTypes, /inactiveProductTypes, and /removedProductTypes endpoints'
invalidQueryParameterCombination:
description: Do not use mutually exclusive query parameters.
remediation: 'Use one or the other, but not both'
attributes:
properties:
type: object
mutuallyExclusiveQueryParameters:
type: array
minLength: 2
items:
type: string
example:
- state
- openable
x-apiture-traits:
- api:
title: Products
basePath: products
links:
- getApiDoc
- getApi
- getLabels
- getProductTypes
- createProductType
- getProducts
- createProduct
- resource:
name: product
- resource:
name: product type
servers:
- url: 'https://api.devbank.apiture.com/products'
components:
parameters:
productTypeIdPathParam:
name: productTypeId
description: The unique identifier of this product type. This is an opaque string.
in: path
required: true
schema:
type: string
nameQueryParam:
name: name
in: query
description: >-
Subset the products or product types collection to those with this `name` value. This is combined with an implicit `and` with other filters if
they are used. See [filtering](https://developer.apiture.com/docs/concepts/filtering).
schema:
type: string
typeQueryParam:
name: type
in: query
description: >-
Subset the products or product types collection to those with this exact `type` value. This is combined with an implicit `and` with other
filters if they are used. See [filtering](https://developer.apiture.com/docs/concepts/filtering).
schema:
type: string
stateQueryParam:
name: state
in: query
description: >-
Subset the products or product types collection to those whose `state` matches this value. Use `|` to separate multiple values. For example,
`?state=pending` matches only items whose `state` is `pending`; `?state=removed|inactive` matches items whose `state` is `removed` or
`inactive`. This is combined with an implicit `and` with other filters if they are used. See
[filtering](https://developer.apiture.com/docs/concepts/filtering).
schema:
type: string
codeQueryParam:
name: code
in: query
description: >-
Subset the products or product types collection to those whose `code` matches this value. Use `|` to separate multiple values. For example,
`?type=B2001` matches only items whose `type` is `B2001`, but `?type=B2001|B3002` matches items whose `type` is `B2001` or `B3002`. This is
combined with an implicit `and` with `?state` `?filter` if they are used. See
[filtering](https://developer.apiture.com/docs/concepts/filtering).
schema:
type: string
categoryQueryParam:
name: category
in: query
description: >-
Subset the products or product types collection to those whose `category` matches this value. Use `|` to separate multiple values. For
example, `?category=Savings` matches only items whose `category` is `Savings`, but `?category=Savings|Checking` matches items whose `type` is
`Savings` or `Checking`. This is combined with an implicit `and` with other filters if they are used. See
[filtering](https://developer.apiture.com/docs/concepts/filtering).
schema:
type: string
targetQueryParam:
name: target
in: query
description: >-
Subset the products or product types collection to those whose `target` matches this value (`personal` or `business`). For example,
`?target=personal` matches only items whose `target` is `personal`. This is combined with an implicit `and` with other filters if they are
used. See [filtering](https://developer.apiture.com/docs/concepts/filtering).
schema:
type: string
enum:
- personal
- business
subtypeQueryParam:
name: subtype
in: query
description: >-
Subset the product types collection to those with this exact `subtype` value. For example, `?subtype=true` will limit the response to only
product types which are subtypes. This is combined with an implicit `and` with other filters if they are used. See
[filtering](https://developer.apiture.com/docs/concepts/filtering).
schema:
type: boolean
ifxTypeQueryParam:
name: ifxType
in: query
description: >-
Subset the products collection to those whose `ifxType` matches this value. Use `|` to separate multiple values. For example, `?ifxType=SDA`
matches only items whose `ifxType` is `SDA`; `?ifxType=SDA|DDA` matches items whose `ifxType` is `SDA` or `DDA`. This is combined with an
implicit `and` with other filters if they are used. See [filtering](https://developer.apiture.com/docs/concepts/filtering).
schema:
type: string
filterQueryParam:
name: filter
in: query
description: 'Optional filter criteria. See [filtering](https://developer.apiture.com/docs/concepts/filtering).'
schema:
type: string
qQueryParam:
name: q
in: query
description: 'Optional search string. See [searching](https://developer.apiture.com/docs/concepts/searching).'
schema:
type: string
productIdPathParam:
name: productId
description: The unique identifier of this product. This is an opaque string.
in: path
required: true
schema:
type: string
productQueryParam:
name: product
description: A server-supplied value which identifies the product instance.
in: query
required: true
schema:
type: string
productTypeQueryParam:
name: productType
description: A server-supplied value which identifies the product type instance.
in: query
required: true
schema:
type: string
ifMatchHeaderParam:
name: If-Match
description: The entity tag that was returned in the `ETag` response. This must match the current entity tag of the resource.
in: header
schema:
type: string
ifNoneMatchHeaderParam:
name: If-None-Match
description: >-
The entity tag that was returned in the `ETag` response. If the resource's current entity tag matches, the `GET` will return 304 (Not
Modified) and no response body, else the resource representation will be returned.
in: header
schema:
type: string
responses:
'304':
description: Not Modified. The resource has not been modified since it was last fetched.
'400':
description: >-
Bad Request. The request body or one or more of the query parameters was not well formed. The `_error` field in the response will contain
details about the request error.
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'412':
description: >-
Precondition Failed. The supplied `if-Match` header value does not match the most recent `ETag` response header value. The resource has
changed in the interim.
This error response may have one of the following `type` values:
* [`ifMatchHeaderDoesNotMatch`](#err-ifMatchHeaderDoesNotMatch)
x-apiture-errors:
- ifMatchHeaderDoesNotMatch
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
'422':
description: >-
Unprocessable Entity. One or more of the query parameters was well formed but otherwise invalid. The `_error` field in the response will
contain details about the request error.
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
404ProductType:
description: >-
Not Found. There is no such product type resource at the specified `{productTypeId}` The `_error` field in the response will contain details
about the request error.
This error response may have one of the following `type` values:
* [`invalidProductTypeId`](#err-invalidProductTypeId)
x-apiture-errors:
- invalidProductTypeId
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
404Product:
description: >-
Not Found. There is no such product resource at the specified `{productId}` The `_error` field in the response will contain details about the
request error.
This error response may have one of the following `type` values:
* [`invalidProductId`](#err-invalidProductId)
x-apiture-errors:
- invalidProductId
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
204Deleted:
description: No Content. The resource was deleted successfully.
409ProdConflict:
description: |-
Conflict. There is a conflict between the request and the current state of the resource. It may be one of the following:
* The `state` of an `active` or `inactive` resource may not be changed to `pending`.
* The `state` of a `removed` resource may not be changed.
* The `state` of the resource may not be changed to `active` or
`inactive` when the product type or subtype is still `pending'.
* The resource cannot be created or modified due to a conflict with other resources. For example,
the name may already be in use, or the selected subtype is not a subtype of the selected product type.
* An attempt to set a product's `newAccountAvailability` to true when the product state is `inactive`.
* An attempt to set a product's `code` when the product state is not `pending`.
* An attempt to set a product's `code` to a value that is used in another product.
This error response may have one of the following `type` values:
* [`cannotChangeRateType`](#err-cannotChangeRateType)
* [`invalidProductState`](#err-invalidProductState)
* [`productStateCannotBeAltered`](#err-productStateCannotBeAltered)
* [`productNameInUse`](#err-productNameInUse)
* [`productCodeInUse`](#err-productCodeInUse)
* [`activateProductInvalidState`](#err-activateProductInvalidState)
* [`deactivateProductInvalidState`](#err-deactivateProductInvalidState)
* [`removeProductInvalidState`](#err-removeProductInvalidState)
* [`activateProductSubTypeInvalidState`](#err-activateProductSubTypeInvalidState)
* [`cannotChangeRemovedProductTypeState`](#err-cannotChangeRemovedProductTypeState)
x-apiture-errors:
- cannotChangeRateType
- invalidProductState
- productStateCannotBeAltered
- productNameInUse
- productCodeInUse
- activateProductInvalidState
- deactivateProductInvalidState
- removeProductInvalidState
- activateProductSubTypeInvalidState
- cannotChangeRemovedProductTypeState
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
409ProdTypeConflict:
description: |-
Conflict. There is a conflict between the request and the current state of the resource. It may be one of the following:
* The `state` of the resource may not be changed to `pending`.
* The resource cannot be created or modified due to a conflict with other resources.
For example, the name may already be in use.
* Attempt to create a subtype of a subtype.
This error response may have one of the following `type` values:
* [`productTypeDoesNotExist`](#err-productTypeDoesNotExist)
* [`deleteProductTypeInvalidState`](#err-deleteProductTypeInvalidState)
* [`removeProductTypeInvalidState`](#err-removeProductTypeInvalidState)
* [`updateProductTypeInvalidState`](#err-updateProductTypeInvalidState)
* [`cannotUpdateProductTypeState`](#err-cannotUpdateProductTypeState)
x-apiture-errors:
- productTypeDoesNotExist
- deleteProductTypeInvalidState
- removeProductTypeInvalidState
- updateProductTypeInvalidState
- cannotUpdateProductTypeState
content:
application/hal+json:
schema:
$ref: '#/components/schemas/errorResponse'
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
requestBodies:
productType:
content:
application/hal+json:
schema:
$ref: '#/components/schemas/productType'
application/json:
schema:
$ref: '#/components/schemas/productType'
required: true
product:
content:
application/hal+json:
schema:
$ref: '#/components/schemas/product'
application/json:
schema:
$ref: '#/components/schemas/product'
required: true
securitySchemes:
apiKey:
type: apiKey
name: API-Key
in: header
description: >-
API Key based authentication. Each client application must pass its private, unique API key, allocated in the developer portal, via the
`API-Key: {api-key}` request header.
accessToken:
type: oauth2
description: >-
OAuth2 client access token authentication. The client authenticates against the server at `authorizationUrl`, passing the client's private
`clientId` (and optional `clientSecret`) as part of this flow. The client obtains an access token from the server at `tokenUrl`. It then
passes the received access token via the `Authorization: Bearer {access-token}` header in subsequent API calls. The authorization process also
returns a refresh token which the client should use to renew the access token before it expires.
flows:
authorizationCode:
authorizationUrl: 'https://auth.devbank.apiture.com/auth/oauth2/authorize'
tokenUrl: 'https://api.devbank.apiture.com/auth/oauth2/token'
scopes:
admin/read: 'Read admin access to non-account, non-profile data.'
admin/write: 'Write admin access to non-account, non-profile data.'
admin/delete: 'Delete admin access to non-account, non-profile data.'
schemas:
productTypeFields:
title: Product Type Fields (v1.0.0)
description: Common fields of the product type resource.
x-apiture-version: 1.0.0
x-apiture-composition:
- $ref: '#/components/schemas/productState'
- properties:
- name
- label
- description
- subtype
properties:
state:
description: >-
The state of this product or product type. New resources are `pending` by default and must be activated before they may be used.
The `state` property is immutable and derived and may not be changed via the `PUT` or `PATCH` operations. To change the state of a product
or product type, use the `POST` operation using the `apiture:activate`, `apiture:deactivate` or `apiture:remove` links on the resource.
allOf:
- $ref: '#/components/schemas/prodState'
name:
description: The name of this product type.
type: string
maxLength: 128
minLength: 1
label:
description: The text label for this product type. This field may be localized.
type: string
maxLength: 128
minLength: 1
description:
description: >-
A fuller description of this product type. This field may be localized. The content is processed as [Github Flavored
Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) and thus supports rich text.
type: string
maxLength: 4096
minLength: 1
format: markdown
subtype:
description: >-
Indicates if this is a subtype. This is a derived, immutable property, based on whether the product type was created with a link to a
parent type. See also the *`apiture:parent`* link on the `productSubtype` schema.
type: boolean
type: object
x-apiture-flattened: true
ifxType:
title: IFX Account Type (v1.0.0)
description: >-
A code which identifies the product type. This is one of the [IFX AcctType](https://ifxforum.org) values. Labels and descriptions for the
enumeration values are in the `ifxType` key in the response of the `getLabels` operation.
ifxType
strings may have one of the following
[enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):
Value | Description |
CCA | Credit card account |
CDA | Certificate of deposit account (CD) |
CLA | Commercial loan account |
CMA | Cash management account |
DDA | Demand deposit account |
EQU | Home equity loan |
GLA | General ledger account |
ILA | Installment loan account |
INV | Investment account |
IRA | Individual retirement account |
IRL | Accounts held in Ireland |
LOC | Consumer line of credit |
MLA | Military Lending Account: Credit facility held by former US service member |
MMA | Money market account |
PBA | Packaged bank Account: Account with additional benefits that charges a fixed monthly fee. |
PPA | Private pension administrator |
RWD | Reward accounts |
SDA | Savings deposit account |
These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)
named `ifxType` in the response from the [`getLabels`](#op-getLabels) operation.
x-apiture-enum: ifxType
type: string
enum:
- CCA
- CDA
- CLA
- CMA
- DDA
- EQU
- GLA
- ILA
- INV
- IRA
- IRL
- LOC
- MLA
- MMA
- PBA
- PPA
- RWD
- SDA
x-apiture-version: 1.0.0
x-apiture-flattened: true
summaryProductType:
title: Product Type Summary (v1.0.1)
description: >-
Summary representation of a product type resource in product types collections. This representation normally does not contain any `_embedded`
objects. If needed, call the `GET` operation on the item's `self` link to get `_embedded` objects. This representation omits the `attributes`
of the full representation.
x-apiture-version: 1.0.1
example:
_id: eccb54ed-0f0a-443b-9f2e-32d5b8f4371c
_profile: 'https://api.apiture.com/schemas/products/summaryProductType/v1.0.1/profile.json'
_links:
self:
href: /products/productTypes/eccb54ed-0f0a-443b-9f2e-32d5b8f4371c
'apiture:parent':
href: /products/productTypes/4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
name: Demand Deposit with Interest
label: Demand Deposit with Interest
description: A demand deposit checking account with interest.
state: active
subtype: true
subtypeCount: 0
x-apiture-composition:
- $ref: '#/components/schemas/productTypeFields'
- $ref: '#/components/schemas/abstractResource'
- properties:
- _id
properties:
state:
description: >-
The state of this product or product type. New resources are `pending` by default and must be activated before they may be used.
The `state` property is immutable and derived and may not be changed via the `PUT` or `PATCH` operations. To change the state of a product
or product type, use the `POST` operation using the `apiture:activate`, `apiture:deactivate` or `apiture:remove` links on the resource.
allOf:
- $ref: '#/components/schemas/prodState'
name:
description: The name of this product type.
type: string
maxLength: 128
minLength: 1
label:
description: The text label for this product type. This field may be localized.
type: string
maxLength: 128
minLength: 1
description:
description: >-
A fuller description of this product type. This field may be localized. The content is processed as [Github Flavored
Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) and thus supports rich text.
type: string
maxLength: 4096
minLength: 1
format: markdown
subtype:
description: >-
Indicates if this is a subtype. This is a derived, immutable property, based on whether the product type was created with a link to a
parent type. See also the *`apiture:parent`* link on the `productSubtype` schema.
type: boolean
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
type: object
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
_id:
description: The unique identifier for this product type resource. This is an opaque string.
readOnly: true
type: string
type: object
x-apiture-flattened: true
createProductType:
title: Create Product Type (v1.0.1)
description: >-
Representation used to create a new product type. To create a `subtype`, the request may include a link in the `_links` object which refers to
the parent product type.
x-apiture-version: 1.0.1
required:
- name
- label
- description
example:
_profile: 'https://api.apiture.com/schemas/products/createProductType/v1.0.1/profile.json'
name: Demand Deposit with Interest
label: Demand Deposit with Interest
description: 'A demand deposit checking account, a subtype of the base Demand Deposit account.'
_links:
'apiture:parent':
href: /products/productTypes/4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
x-apiture-composition:
- $ref: '#/components/schemas/abstractResource'
- $ref: '#/components/schemas/productTypeFields'
- properties:
- attributes
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
type: object
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
state:
description: >-
The state of this product or product type. New resources are `pending` by default and must be activated before they may be used.
The `state` property is immutable and derived and may not be changed via the `PUT` or `PATCH` operations. To change the state of a product
or product type, use the `POST` operation using the `apiture:activate`, `apiture:deactivate` or `apiture:remove` links on the resource.
allOf:
- $ref: '#/components/schemas/prodState'
name:
description: The name of this product type.
type: string
maxLength: 128
minLength: 1
label:
description: The text label for this product type. This field may be localized.
type: string
maxLength: 128
minLength: 1
description:
description: >-
A fuller description of this product type. This field may be localized. The content is processed as [Github Flavored
Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) and thus supports rich text.
type: string
maxLength: 4096
minLength: 1
format: markdown
subtype:
description: >-
Indicates if this is a subtype. This is a derived, immutable property, based on whether the product type was created with a link to a
parent type. See also the *`apiture:parent`* link on the `productSubtype` schema.
type: boolean
attributes:
type: object
description: An optional map of name/value pairs which provide additional metadata about the product type.
type: object
x-apiture-flattened: true
productType:
title: Product Type (v1.0.1)
description: >
Representation of a product type resource. If the type is a subtype, the `_embedded` resource contains the parent type.
Links
Response and request bodies using this productType
schema may contain
the following links:
x-apiture-version: 1.0.1
x-apiture-links:
- rel: self
operationId: getProductType
- rel: 'apiture:parent'
operationId: getProductType
- rel: 'apiture:children'
operationId: getProductTypes
- rel: 'apiture:products'
operationId: getProducts
- rel: 'apiture:activate'
operationId: activateProductType
- rel: 'apiture:deactivate'
operationId: deactivateProductType
- rel: 'apiture:remove'
operationId: removeProductType
example:
_id: eccb54ed-0f0a-443b-9f2e-32d5b8f4371c
_profile: 'https://api.apiture.com/schemas/products/productType/v1.0.1/profile.json'
_links:
self:
href: /products/productTypes/eccb54ed-0f0a-443b-9f2e-32d5b8f4371c
'apiture:parent':
href: /products/productTypes/4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
'apiture:deactivate':
title: Deactivate this product type
href: /products/inactiveProductTypes?productType=eccb54ed-0f0a-443b-9f2e-32d5b8f4371c
_embedded:
parent:
_id: 4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
_profile: 'https://api.apiture.com/schemas/products/productType/v1.0.1/profile.json'
name: Demand Deposit
label: Demand Deposit
description: A demand deposit checking account.
state: active
subtype: false
subtypeCount: 1
_links:
self:
href: /products/productTypes/4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
'apiture:deactivate':
href: /disabledProductTypes?productType=4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
name: Demand Deposit with Interest
label: Demand Deposit with Interest
description: A demand deposit checking account with interest.
state: active
subtype: true
subtypeCount: 0
x-apiture-composition:
- $ref: '#/components/schemas/summaryProductType'
- properties:
- subtypeCount
- createdAt
- _embedded
- attributes
properties:
state:
description: >-
The state of this product or product type. New resources are `pending` by default and must be activated before they may be used.
The `state` property is immutable and derived and may not be changed via the `PUT` or `PATCH` operations. To change the state of a product
or product type, use the `POST` operation using the `apiture:activate`, `apiture:deactivate` or `apiture:remove` links on the resource.
allOf:
- $ref: '#/components/schemas/prodState'
name:
description: The name of this product type.
type: string
maxLength: 128
minLength: 1
label:
description: The text label for this product type. This field may be localized.
type: string
maxLength: 128
minLength: 1
description:
description: >-
A fuller description of this product type. This field may be localized. The content is processed as [Github Flavored
Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) and thus supports rich text.
type: string
maxLength: 4096
minLength: 1
format: markdown
subtype:
description: >-
Indicates if this is a subtype. This is a derived, immutable property, based on whether the product type was created with a link to a
parent type. See also the *`apiture:parent`* link on the `productSubtype` schema.
type: boolean
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: >-
Embedded resources for this product type. This may contain the parent type, if any. `_embedded` may not appear if there are no embedded
resources.
allOf:
- $ref: '#/components/schemas/productTypeEmbeddedObjects'
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
_id:
description: The unique identifier for this product type resource. This is an opaque string.
readOnly: true
type: string
subtypeCount:
description: >-
`0` if this type does not have subtypes; otherwise this holds the indicated number of direct subtypes. This is a derived, immutable
property. See also the *`apiture:children`* link on the `productSubtype` schema.
type: integer
minimum: 0
readOnly: true
createdAt:
description: The date-time when this product type was created. This value is derived and immutable.
type: string
format: date-time
readOnly: true
attributes:
type: object
description: An optional map of name/value pairs which provide additional metadata about the product type.
type: object
x-apiture-flattened: true
productTypeEmbeddedObjects:
title: Product Type Embedded Objects (v1.0.0)
description: Objects embedded in a poduct type resource.
type: object
properties:
parent:
description: 'In subtypes, this is the parent type.'
allOf:
- $ref: '#/components/schemas/summaryProductType'
x-apiture-version: 1.0.0
x-apiture-flattened: true
productTypesEmbeddedObjects:
title: Product Types Embedded Objects (v1.0.0)
description: Objects embedded in the `productTypes` `items` array.
type: object
properties:
items:
description: An array containing a page of product type items.
type: array
items:
$ref: '#/components/schemas/summaryProductType'
x-apiture-version: 1.0.0
x-apiture-flattened: true
productTypes:
title: Product Type Collection (v1.0.2)
description: >-
Collection of product types. The items in the collection are ordered in the `_embedded` object with name `items`. The top-level `_links`
object may contain pagination links (`self`, `next`, `prev`, `first`, `last`, `collection`).
x-apiture-version: 1.0.2
example:
_profile: 'https://api.apiture.com/schemas/products/productTypes/v1.0.2/profile.json'
start: 0
limit: 10
count: 127
name: productTypes
_links:
self:
href: /products?start=0&limit=10
first:
href: /products?start=0&limit=10
next:
href: /products?start=10&limit=10
collection:
href: /products
_embedded:
items:
- _id: 4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
_profile: 'https://api.apiture.com/schemas/products/productType/v1.0.1/profile.json'
name: Demand Deposit
label: Demand Deposit
description: A demand deposit checking account.
state: active
subtype: false
subtypeCount: 1
_links:
self:
href: /products/productTypes/4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
- _id: eccb54ed-0f0a-443b-9f2e-32d5b8f4371c
_profile: 'https://api.apiture.com/schemas/products/productType/v1.0.1/profile.json'
name: Demand Deposit with Interest
label: Demand Deposit with Interest
description: A demand deposit checking account with interest.
state: active
subtype: true
subtypeCount: 0
_links:
self:
href: /products/productTypes/eccb54ed-0f0a-443b-9f2e-32d5b8f4371c
'apiture:parent':
href: /products/productTypes/4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
x-apiture-composition:
- $ref: '#/components/schemas/collection'
- properties:
- _embedded
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: Embedded objects.
allOf:
- $ref: '#/components/schemas/productTypesEmbeddedObjects'
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
count:
description: >-
The number of items in the collection. This value is _optional_ and may be omitted if the count is not computable efficiently. If a filter
is applied to the collection (either implicitly or explicitly), the count, if present, indicates the number of items that satisfy the
filter.
type: integer
start:
description: The start index of this page of items.
type: integer
limit:
description: The maximum number of items per page.
type: integer
name:
description: The name of the collection.
type: string
type: object
x-apiture-flattened: true
fee:
title: Fee (v1.0.1)
description: Fees that are attached to accounts of this product.
type: object
x-apiture-version: 1.0.1
properties:
type:
description: The fee type.
allOf:
- $ref: '#/components/schemas/productFeeType'
period:
description: >-
The period at which the fee is assessed. If omitted, the fee is assessed per transaction. This value is an [ISO 8601
duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) string of the form `P[n]Y[n]M[n]D` to specify the fee period in the number of
years/months/weeks/days. For example, the values `P1d`, `P1W`, `P2W`, `P1M`, `P0.25Y`, `P0.5Y`, `P1Y` indicate a term of daily, weekly,
by-weekly, monthly, quarterly, biannually, and annually, respectively, (although other periods may be allowed).
type: string
example: P1M
description:
description: A description of the fee and its structure and period.
type: string
structure:
description: The fee structure for this fee
allOf:
- $ref: '#/components/schemas/feeStructure'
amount:
description: 'The amount of the (fixed) fee, in the product''s `currency`.'
type: string
example: '1.00'
x-apiture-flattened: true
feeStructure:
title: Product Fee Structure (v1.0.0)
description: >-
The fee structure. fixed fee, variable fee, or other. For example, the `service` fee or `atm` may be `fixed` (such as `"amount" : "2.00"`) but
the `foreignTransactions` fee may be `variable`.
feeStructure
strings may have one of the following
[enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):
Value | Description |
unknown | Undetermined fee structure |
variable | A variable rate fee |
fixed | A fixed rate fee |
These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)
named `feeStructure` in the response from the [`getLabels`](#op-getLabels) operation.
type: string
enum:
- unknown
- variable
- fixed
x-apiture-enum: feeStructure
x-apiture-version: 1.0.0
x-apiture-flattened: true
productFeeType:
title: Product Fee Type (v1.0.1)
description: |-
A type identifier which indicates what type of fee exists for a banking product.
**Warning**: the `enum` list will be removed in a future release.
and the values defined at runtime via the `productFeeType`
group in the response from the [`getLabels`](#op-getLabels) operation.
type: string
x-apiture-choice: productFeeType
x-apiture-version: 1.0.1
enum:
- servicing
- minimumBalance
- overdraft
- returnedCheck
- statementHardCopy
- atm
- foreignTransaction
- earlyClosing
- earlyWithdrawal
- other
x-apiture-flattened: true
transactionTypes:
title: Transaction Types (v1.0.0)
description: An array which lists which transaction types are allowed for an account.
type: array
items:
$ref: '#/components/schemas/transactionType'
x-apiture-version: 1.0.0
x-apiture-flattened: true
transactionType:
title: Transaction Type (v1.0.0)
description: |-
A string which defines a transaction type allowed for an account.
* *`credit`* : Credits may be posted to this account, such as transfer funds _to_ this external account.
* *`debit`* : Debits may be posted to this account, such as transfer funds _from_ this external account.
Labels and descriptions for the enumeration values are in the `transactionType`
key in the response of the `getLabels` operation.
transactionType
strings may have one of the following
[enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):
Value | Description |
debit | A transaction which descreases an account's balance |
credit | A transaction which increases an accounts's balance |
These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)
named `transactionType` in the response from the [`getLabels`](#op-getLabels) operation.
type: string
enum:
- debit
- credit
x-apiture-enum: transactionType
x-apiture-version: 1.0.0
x-apiture-flattened: true
productFields:
title: Product Fields (v2.1.0)
description: Common fields of the product resource.
x-apiture-version: 2.1.0
x-apiture-fragment: true
x-apiture-composition:
- $ref: '#/components/schemas/productState'
- properties:
- name
- label
- description
- code
- newAccountAvailability
- category
- ifxType
- target
- rates
- rate
properties:
state:
description: >-
The state of this product or product type. New resources are `pending` by default and must be activated before they may be used.
The `state` property is immutable and derived and may not be changed via the `PUT` or `PATCH` operations. To change the state of a product
or product type, use the `POST` operation using the `apiture:activate`, `apiture:deactivate` or `apiture:remove` links on the resource.
allOf:
- $ref: '#/components/schemas/prodState'
name:
description: The name of this product.
type: string
maxLength: 128
minLength: 1
label:
description: The text label for this product. This field may be localized.
type: string
maxLength: 128
minLength: 1
description:
description: >-
A fuller description of this product. This field may be localized. The content is processed as [Github Flavored
Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) and thus supports rich text.
type: string
maxLength: 4096
minLength: 1
format: markdown
code:
description: >-
The unique product code for this product, normally defined by the underlying banking core. The `code` cannot be changed once the `state`
is beyond `pending`.
type: string
maxLength: 64
newAccountAvailability:
description: >-
Indicates if the product is available for opening new accounts.
* *`available`* means the product may be selected for a new account application.
* *`notAvailable`* means the product may *not* be selected for a new account application.
The default is `available`. Note that clients must check both the product `state` and the `newAccountAvailability` when listing products
for new account opening. The `?openable=true` query parameter on [`getProducts`](#op-getProducts) combines these.
(Labels and descriptions for the enumeration values are in the `newAccountAvailability` key in the response of the
[`getLabels`](#op-getLabels) operation.) Upate this property with the [`unlockProduct`](#op-unlockProduct) or
[`unlockProduct`](#op-unlockProduct) operations
readOnly: true
allOf:
- $ref: '#/components/schemas/newAccountAvailability'
category:
description: The product category name. This is a more readable form of the product's `type`.
type: string
example: Savings
ifxType:
description: The product IFX Account Type.
allOf:
- $ref: '#/components/schemas/ifxType'
target:
description: >-
Describes the target audience or consumer of the accounts, `personal` or `business`. Labels and descriptions for the enumeration values
are in the `productTarget` key in the response of the `getLabels` operation.
allOf:
- $ref: '#/components/schemas/productTarget'
rates:
description: The interest rates for this product.
allOf:
- $ref: '#/components/schemas/productInterestRates'
rate:
description: >-
The interest rate for this product.
**Warning**: The property `rate` was deprecated on version `v2.1.0` of the schema. Use `rates`
object instead. `rate` will be removed on version `v3.0.0` of the schema.
x-apiture-deprecated:
since: 2.1.0
removeOn: 3.0.0
replacement: '`rates` object'
allOf:
- $ref: '#/components/schemas/rate'
type: object
x-apiture-flattened: true
newAccountAvailability:
title: New Account Availability (v1.0.0)
description: |-
Describes if the product is available for opening new accounts.
newAccountAvailability
strings may have one of the following
[enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):
Value | Description |
available | Users may open new accounts of this type |
notAvailable | Users may not open new accounts of this type |
These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)
named `newAccountAvailability` in the response from the [`getLabels`](#op-getLabels) operation.
type: string
enum:
- available
- notAvailable
x-apiture-enum: newAccountAvailability
x-apiture-version: 1.0.0
x-apiture-flattened: true
productTarget:
title: Product Target (v1.0.0)
description: |-
The target audience for this product.
productTarget
strings may have one of the following
[enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):
Value | Description |
personal | Banking products for personal use |
business | Banking products for business use |
These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)
named `productTarget` in the response from the [`getLabels`](#op-getLabels) operation.
type: string
enum:
- personal
- business
x-apiture-enum: productTarget
x-apiture-version: 1.0.0
x-apiture-flattened: true
summaryProduct:
title: Product Summary (v2.5.0)
description: >
Summary representation of a product resource in products collections. This representation normally does not contain any `_embedded` objects.
If needed, call the `GET` operation on the item's `self` link to get `_embedded` objects. This representation omits the `attributes` of the
full representation.
Links
Response and request bodies using this summaryProduct
schema may contain
the following links:
x-apiture-version: 2.5.0
x-apiture-links:
- rel: self
operationId: getProduct
- rel: 'apiture:productType'
operationId: getProductType
- rel: 'apiture:productSubtype'
operationId: getProductType
example:
_id: a6459cdf-543e-46df-887b-ac5378ee9acd
_profile: 'https://api.apiture.com/schemas/products/summaryProduct/v2.5.0/profile.json'
name: Premiere Checking
label: Premiere Checking
description: A premiere demand deposit checking account for business use.
state: active
type: Demand Deposit
subtype: Demand Deposit with Interest
newAccountAvailability: available
target: business
_embedded: {}
ifxType: DDA
rates:
apy: '1.45'
nominal: '1.455'
apye: '1.45'
compoundPeriod: P1D
accrualType: compounding
paymentsEnabled: true
checkOrderingEnabled: true
constraints:
transactionTypes:
- debit
- credit
minimumBalance: '500.00'
minimumFundingAmount: '500.00'
maximumFundingAmount: '25000.00'
maximumTransferAmount: '25000.00'
fundingTerm: P7D
_links:
self:
href: /products/products/a6459cdf-543e-46df-887b-ac5378ee9acd
'apiture:productType':
href: /products/productTypes/4d4242ed-eb8d-46ca-bc3c-13e1f82337c8
'apiture:productSubtype':
href: /products/productTypes/fa4f2335-3306-4721-b74c-8ec0c77823e9
x-apiture-composition:
- $ref: '#/components/schemas/abstractResource'
- $ref: '#/components/schemas/productFields'
- properties:
- _id
- type
- subtype
- timeDeposit
- constraints
- paymentsEnabled
- checkOrderingEnabled
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
type: object
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
state:
description: >-
The state of this product or product type. New resources are `pending` by default and must be activated before they may be used.
The `state` property is immutable and derived and may not be changed via the `PUT` or `PATCH` operations. To change the state of a product
or product type, use the `POST` operation using the `apiture:activate`, `apiture:deactivate` or `apiture:remove` links on the resource.
allOf:
- $ref: '#/components/schemas/prodState'
name:
description: The name of this product.
type: string
maxLength: 128
minLength: 1
label:
description: The text label for this product. This field may be localized.
type: string
maxLength: 128
minLength: 1
description:
description: >-
A fuller description of this product. This field may be localized. The content is processed as [Github Flavored
Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) and thus supports rich text.
type: string
maxLength: 4096
minLength: 1
format: markdown
code:
description: >-
The unique product code for this product, normally defined by the underlying banking core. The `code` cannot be changed once the `state`
is beyond `pending`.
type: string
maxLength: 64
newAccountAvailability:
description: >-
Indicates if the product is available for opening new accounts.
* *`available`* means the product may be selected for a new account application.
* *`notAvailable`* means the product may *not* be selected for a new account application.
The default is `available`. Note that clients must check both the product `state` and the `newAccountAvailability` when listing products
for new account opening. The `?openable=true` query parameter on [`getProducts`](#op-getProducts) combines these.
(Labels and descriptions for the enumeration values are in the `newAccountAvailability` key in the response of the
[`getLabels`](#op-getLabels) operation.) Upate this property with the [`unlockProduct`](#op-unlockProduct) or
[`unlockProduct`](#op-unlockProduct) operations
readOnly: true
allOf:
- $ref: '#/components/schemas/newAccountAvailability'
category:
description: The product category name. This is a more readable form of the product's `type`.
type: string
example: Savings
ifxType:
description: The product IFX Account Type.
allOf:
- $ref: '#/components/schemas/ifxType'
target:
description: >-
Describes the target audience or consumer of the accounts, `personal` or `business`. Labels and descriptions for the enumeration values
are in the `productTarget` key in the response of the `getLabels` operation.
allOf:
- $ref: '#/components/schemas/productTarget'
rates:
description: The interest rates for this product.
allOf:
- $ref: '#/components/schemas/productInterestRates'
rate:
description: >-
The interest rate for this product.
**Warning**: The property `rate` was deprecated on version `v2.1.0` of the schema. Use `rates`
object instead. `rate` will be removed on version `v3.0.0` of the schema.
x-apiture-deprecated:
since: 2.1.0
removeOn: 3.0.0
replacement: '`rates` object'
allOf:
- $ref: '#/components/schemas/rate'
_id:
description: The unique identifier for this product resource. This is an immutable opaque string.
readOnly: true
type: string
type:
description: 'The product type name, which is derived from the linked product type.'
type: string
readOnly: true
subtype:
description: 'The product subtype name, which is derived from the linked product subtype. This is a derived, immutable property.'
type: string
readOnly: true
timeDeposit:
description: >-
Properties of time deposit products, primarily Certificate of Deposit products.
**Warning**: The property `timeDeposit` was deprecated
on version `v2.5.0` of the schema. Use `timeDeposit` on `product` schema instead. `timeDeposit` will be removed on version `v3.0.0` of the
schema.
allOf:
- $ref: '#/components/schemas/timeDeposit'
x-apiture-deprecated:
since: 2.5.0
removeOn: 3.0.0
replacement: '`timeDeposit` on `product` schema'
constraints:
$ref: '#/components/schemas/constraints'
paymentsEnabled:
description: >-
If `true`, active accounts of this banking product _may_ be eligible for payment features such as bill pay. This is merely the _default_;
clients should check the `paymentsEnabled` property on the account service to ensure payment services are available for the authenticated
account user.
The property `paymentsEnabled` was added on version `2.3.0` of the schema.
type: boolean
readOnly: true
x-apiture-since: 2.3.0
checkOrderingEnabled:
description: >-
If `true`, active accounts derived from this banking product may allow ordering checks through the Check Orders API. Accounts inherit this
value from their product. The financial institution may disable check ordering on individual accounts, so clients should reference the
`checkOrderingEnabled` property on the account.
The property `checkOrderingEnabled` was added on version `2.3.0` of the schema.
type: boolean
readOnly: true
default: false
x-apiture-since: 2.3.0
type: object
x-apiture-flattened: true
productDetails:
title: Product Details (v1.1.0)
description: Additional fields for a product which are not in the summary representation.
x-apiture-version: 1.1.0
x-apiture-fragment: true
type: object
properties:
institutionName:
description: The name of the financial institution.
type: string
maxLength: 128
minLength: 1
coreType:
description: Identifies the underlying bank core system.
type: string
onlineBankingEnabled:
description: '`true` if this product is enabled and eligible for online banking.'
type: boolean
default: false
currency:
description: 'The [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217) for this product.'
type: string
minLength: 3
maxLength: 3
example: USD
fees:
description: 'Zero or more fees for accounts of this product. If the array is empty or not present, there are no fees.'
type: array
items:
$ref: '#/components/schemas/fee'
statementFrequency:
description: >-
The frequency with which statements are issued for accounts of this product. This is expressed as an [ISO 8601
duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) duration; only day and month periods are allowed, and the only allowed
fractional value for months is 0.5, as in `P5D` or `P14D` or `P1M` or `P0.5M`.
type: string
format: period
timeDeposit:
$ref: '#/components/schemas/timeDeposit'
x-apiture-flattened: true
timeDeposit:
title: Time Deposit Products (v1.1.0)
x-apiture-version: 1.1.0
description: 'Properties of time deposit products, primarily Certificate of Deposit products.'
properties:
maturityPolicy:
$ref: '#/components/schemas/maturityPolicy'
minimumTerm:
description: >-
The minimum maturity term offered by this product, for products such as certificates of deposits. See also `maximumTerm` For example, Some
CD products may be opened with a flexible term such as 31 to 181 days, expressed as `minimumTerm: P31D, maximumTerm: P181D` For fixed-term
products, `minimumTerm` and `maximumTerm` should be the same.
This value is an [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) string of the form `P[n]Y[n]M[n]D` to specify the
term in the number of years/months/days. For example, the values `P30D`, `P6M`, `P2Y` indicate a term of 30 days, six months, and two
years, respectively.
type: string
format: period
example: P31D
maximumTerm:
description: >-
The maximum maturity term offered by this product, for products such as certificates of deposits. If omitted, there is no fixed term (not
all product types impose a term). For example, Some CD products may be opened with a flexible term such as 31 to 181 days, expressed as
`minimumTerm: P31D, maximumTerm: P181D`. For fixed-term products, `minimumTerm` and `maximumTerm` are the same.
This value is an [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) string of the form `P[n]Y[n]M[n]D` to specify the
term in the number of years/months/days. For example, the values `P30D`, `P6M`, `P2Y` indicate a term of 30 days, six months, and two
years, respectively.
type: string
format: period
example: P31D
fees:
description: >-
The time period in which additional deposits may be made to a CD after it has rolled over after maturity. This value applies only if the
`depositsAllowed` is `duringGracePeriod`. This value is an [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) string of
the form `P[n]Y[n]M[n]D` to specify the term in the number of years/months/days.
**Warning**: The property `fees` was deprecated on
version `v1.1.0` of the schema. Use `gracePeriod` property in [`constraints`](#schema-constraints) instead. `fees` will be removed on
version `v2.0.0` of the schema.
x-apiture-deprecated:
replacement: '`gracePeriod` property in [`constraints`](#schema-constraints)'
since: 1.1.0
removeOn: 2.0.0
type: string
maturesAt:
description: >-
The earliest future date an account will mature if opened today, based on the `timeDeposot.minimumTerm` of the product. This [RCF
3339](https://tools.ietf.org/html/rfc3339) date-time value is included in responses only if `maturesAt` is included in the
[`getProduct`](#op-getProduct) request's `?calculate=` query parameter. This value is ignored in updates to the product.
type: string
readOnly: true
format: date-time
example: '2021-02-04T09:23:56.375Z'
example:
maturityPolicy: rolloverPrincipalAndInterest
minimumTerm: P6M
maximumTerm: P6M
maturesAt: '2021-02-04T09:23:56.375Z'
type: object
x-apiture-flattened: true
constraints:
title: Product Constraints (v1.0.0)
description: 'Product constraints, such as minimum and maximum balances.'
type: object
properties:
transactionTypes:
description: The types of transactions permitted for this account. Values which appear in this array are permitted.
allOf:
- $ref: '#/components/schemas/transactionTypes'
minimumBalance:
description: >-
The minimum balance for accounts of this product. The numeric value is represented as a string so that it can be exact with no loss of
precision. This balance is in the `currency` for the product.
type: string
example: '500.00'
minimumFundingAmount:
description: >-
The minimum monetary value when funding a new account of this product. The numeric value is represented as a string so that it can be
exact with no loss of precision. This balance is in the `currency` for the product.
type: string
example: '500.00'
maximumFundingAmount:
description: >-
The maximum monetary value when funding a new account of this product. The numeric value is represented as a string so that it can be
exact with no loss of precision. This balance is in the `currency` for the product.
type: string
example: '2500.00'
minimumTransferAmount:
description: >-
The minimum monetary value for new transfers from accounts of this product. The numeric value is represented as a string so that it can be
exact with no loss of precision. This balance is in the `currency` for the product.
type: string
example: '25.00'
maximumTransferAmount:
description: >-
The maximum monetary value for new transfers from accounts of this product. The numeric value is represented as a string so that it can be
exact with no loss of precision. This balance is in the `currency` for the product.
type: string
example: '10000.00'
maximumWithdrawalCount:
description: 'The maximum number of withdrawals allowed per cycle. If not present, there is no hard limit.'
type: integer
example: 6
fundingTerm:
description: >-
The time limit within which account opening funding must occur after account creation. This is expressed as an [ISO 8601
duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) duration; only day and month periods are allowed, and the only allowed
fractional value for months is 0.5, as in `P5D` or `P14D` or `P1M` or `P0.5M`.
type: string
format: period
example: P30D
depositsRestrictedAfterGracePeriod:
description: 'If true, deposits are not allowed after the rollover grace period (see `gracePeriod`). This applies to time deposit products only.'
type: boolean
default: true
depositsRestrictedAfterFunding:
description: 'If true, deposits are not allowed after the initial account funding has completed. This typically applies to time deposit products.'
type: boolean
default: true
gracePeriod:
description: >-
A period of time after account rollover when additional deposits are allowed. This is an [ISO 8601
duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) duration; only day and month periods are allowed, and the only allowed
fractional value for months is 0.5, as in `P5D` or `P14D` or `P1M` or `P0.5M`.
type: string
format: period
example: P14D
x-apiture-version: 1.0.0
x-apiture-flattened: true
maturityPolicy:
title: Maturity Policy (v1.0.0)
description: >-
Indicates how the principal and interest are processed upon maturity. The values indicate whether to rollover (to a time deposit account of
the same rate and term), transfer funds to another (possibly new) deposit account, or simply hold the funds in the current account (which may
no longer accrue interest). Labels and descriptions for the enumeration values are in the `maturityPolicy` key in the response of the
`getLabels` operation.
maturityPolicy
strings may have one of the following
[enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):
Value | Description |
rolloverPrincipalAndInterest | Rollover principal and interest to a new CD of the same product: Upon maturity, both principal and interest rollover into a specified banking product, such as a savings, checking, or other deposit account. |
transferPrincipalAndInterest | Transfer principal and interest to a deposit account: Upon maturity, the principal an interest are both transferred to an existing or new deposit account. |
rolloverPrincipalAndTransferInterest | Transfer interest to a new deposit account an rollover principal to a new CD of the same product: Upon maturity, the principal rolls over into a specified banking product and the interest is transferred to an existing deposit account. |
holdPrincipalAndInterest | Hold principal and accued interest in the CD account until withdrawal: Upon maturity, the principal and interest are held in the current time deposit account. The account may or may not accrue further interest, depending on the terms of the time deposit product. Funds may be withdrawn or transferred. |
partialTransfer | Partial Transfer: Upon maturity, any funds greater than the maturity threshold is transfered to an existing deposit account and the rest remains on deposit. The account may or may not accrue further interest, depending on the terms of the time deposit product. Funds may be withdrawn or transferred. |
These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)
named `maturityPolicy` in the response from the [`getLabels`](#op-getLabels) operation.
type: string
enum:
- rolloverPrincipalAndInterest
- transferPrincipalAndInterest
- rolloverPrincipalAndTransferInterest
- holdPrincipalAndInterest
- partialTransfer
x-apiture-enum: maturityPolicy
x-apiture-version: 1.0.0
x-apiture-flattened: true
createProduct:
title: Create Product (v2.4.0)
description: >
Representation used to create a new product. The request *must* include links in the `_links` object which refer to the product subtype. (The
product's type will be the parent type of the named subtype).
Links
Response and request bodies using this createProduct
schema may contain
the following links:
x-apiture-version: 2.4.0
required:
- name
- label
- description
- code
example:
_profile: 'https://api.apiture.com/schemas/products/createProduct/v2.4.0/profile.json'
name: Business Checking
label: Business Checking
description: A demand deposit checking account for business use.
code: B2001
category: Checking
rates:
apy: '1.41'
compoundPeriod: P1D
accrualType: compounding
card:
provider:
id: DDA_203389
images:
- height: 1024
width: 833
uri: 'http://cdn.3rdparty.bank/images/products/CD-3892/debit-card-large.png'
activationExpiration: 30
expeditedShippingAllowed:
forNew: true
forReplacements: true
autoOrder:
forDigitalAccountOpening: true
forJointOwners: true
forAuthorizedSigners: true
_links:
'apiture:productSubtype':
href: /products/productTypes/b2134f56-3645-490d-a788-79e974635ae8
x-apiture-links:
- rel: 'apiture:productSubtype'
operationId: getProductType
x-apiture-composition:
- $ref: '#/components/schemas/abstractResource'
- $ref: '#/components/schemas/productFields'
- $ref: '#/components/schemas/productDetails'
- properties:
- card
- attributes
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
type: object
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
state:
description: >-
The state of this product or product type. New resources are `pending` by default and must be activated before they may be used.
The `state` property is immutable and derived and may not be changed via the `PUT` or `PATCH` operations. To change the state of a product
or product type, use the `POST` operation using the `apiture:activate`, `apiture:deactivate` or `apiture:remove` links on the resource.
allOf:
- $ref: '#/components/schemas/prodState'
name:
description: The name of this product.
type: string
maxLength: 128
minLength: 1
label:
description: The text label for this product. This field may be localized.
type: string
maxLength: 128
minLength: 1
description:
description: >-
A fuller description of this product. This field may be localized. The content is processed as [Github Flavored
Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) and thus supports rich text.
type: string
maxLength: 4096
minLength: 1
format: markdown
code:
description: >-
The unique product code for this product, normally defined by the underlying banking core. The `code` cannot be changed once the `state`
is beyond `pending`.
type: string
maxLength: 64
newAccountAvailability:
description: >-
Indicates if the product is available for opening new accounts.
* *`available`* means the product may be selected for a new account application.
* *`notAvailable`* means the product may *not* be selected for a new account application.
The default is `available`. Note that clients must check both the product `state` and the `newAccountAvailability` when listing products
for new account opening. The `?openable=true` query parameter on [`getProducts`](#op-getProducts) combines these.
(Labels and descriptions for the enumeration values are in the `newAccountAvailability` key in the response of the
[`getLabels`](#op-getLabels) operation.) Upate this property with the [`unlockProduct`](#op-unlockProduct) or
[`unlockProduct`](#op-unlockProduct) operations
readOnly: true
allOf:
- $ref: '#/components/schemas/newAccountAvailability'
category:
description: The product category name. This is a more readable form of the product's `type`.
type: string
example: Savings
ifxType:
description: The product IFX Account Type.
allOf:
- $ref: '#/components/schemas/ifxType'
target:
description: >-
Describes the target audience or consumer of the accounts, `personal` or `business`. Labels and descriptions for the enumeration values
are in the `productTarget` key in the response of the `getLabels` operation.
allOf:
- $ref: '#/components/schemas/productTarget'
rates:
description: The interest rates for this product.
allOf:
- $ref: '#/components/schemas/productInterestRates'
rate:
description: >-
The interest rate for this product.
**Warning**: The property `rate` was deprecated on version `v2.1.0` of the schema. Use `rates`
object instead. `rate` will be removed on version `v3.0.0` of the schema.
x-apiture-deprecated:
since: 2.1.0
removeOn: 3.0.0
replacement: '`rates` object'
allOf:
- $ref: '#/components/schemas/rate'
institutionName:
description: The name of the financial institution.
type: string
maxLength: 128
minLength: 1
coreType:
description: Identifies the underlying bank core system.
type: string
onlineBankingEnabled:
description: '`true` if this product is enabled and eligible for online banking.'
type: boolean
default: false
currency:
description: 'The [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217) for this product.'
type: string
minLength: 3
maxLength: 3
example: USD
fees:
description: 'Zero or more fees for accounts of this product. If the array is empty or not present, there are no fees.'
type: array
items:
$ref: '#/components/schemas/fee'
statementFrequency:
description: >-
The frequency with which statements are issued for accounts of this product. This is expressed as an [ISO 8601
duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) duration; only day and month periods are allowed, and the only allowed
fractional value for months is 0.5, as in `P5D` or `P14D` or `P1M` or `P0.5M`.
type: string
format: period
timeDeposit:
$ref: '#/components/schemas/timeDeposit'
card:
description: Debit card details associated with this product.
allOf:
- $ref: '#/components/schemas/productCard'
attributes:
type: object
description: An optional map of name/value pairs which provide additional metadata about the product.
type: object
x-apiture-flattened: true
product:
title: Product (v2.4.0)
x-apiture-version: 2.4.0
description: >
Representation of product resources. The `_links` in a product may contain the following (which may be passed when creating a product via the
`POST /products` operation or in `PATCH` operations to this product instance): The representation contains the product type and subtype in the
`_embedded` objects.
Links
Response and request bodies using this product
schema may contain
the following links:
Rel | Summary | Method |
self | Fetch a representation of this
product | GET |
apiture:productType | Fetch a representation of this product
type. | GET |
apiture:productSubtype | Fetch a representation of this product
type. | GET |
apiture:activate | Activate a product | POST |
apiture:deactivate | Deactivate a
product | POST |
apiture:remove | Remove a product | POST |
apiture:lock | Marks an active product as ineligible for new account
opening | POST |
apiture:unlock | Marks an active product as eligible for new account
opening | POST |
apiture:productTermsAndConditions |
The URL of the Terms and Conditions document for this product | GET |
apiture:electronicConsent |
The URL of the Electronic Use consent document for this product | GET |
x-apiture-links:
- rel: self
operationId: getProduct
- rel: 'apiture:productType'
operationId: getProductType
- rel: 'apiture:productSubtype'
operationId: getProductType
- rel: 'apiture:activate'
operationId: activateProduct
- rel: 'apiture:deactivate'
operationId: deactivateProduct
- rel: 'apiture:remove'
operationId: removeProduct
- rel: 'apiture:lock'
operationId: lockProduct
- rel: 'apiture:unlock'
operationId: unlockProduct
- rel: 'apiture:productTermsAndConditions'
method: get
title: The URL of the Terms and Conditions document for this product
- rel: 'apiture:electronicConsent'
method: get
title: The URL of the Electronic Use consent document for this product
example:
_id: a6459cdf-543e-46df-887b-ac5378ee9acd
_profile: 'https://api.apiture.com/schemas/products/product/v2.4.0/profile.json'
name: Premiere Checking
label: Premiere Checking
description: A premiere demand deposit checking account for business use.
state: active
type: Demand Deposit
subtype: Demand Deposit with Interest
target: business
newAccountAvailability: available
ifxType: DDA
rates:
apy: '1.45'
nominal: '1.455'
apye: '1.45'
compoundPeriod: P1D
accrualType: compounding
card:
provider:
id: DDA_203389
images:
- height: 1024
width: 833
uri: 'http://cdn.3rdparty.bank/images/products/CD-3892/debit-card-large.png'
activationExpiration: 30
expeditedShippingAllowed:
forNew: true
forReplacements: true
autoOrder:
forDigitalAccountOpening: true
forJointOwners: false
forAuthorizedSigners: true
highlights:
- FDIC Insurance
- No Monthly Maintenance Fees
- 'Minimum Deposit of $2,500'
coreBanking:
finxact:
productGroup: '1'
productSegments:
deptId: '350'
vertical: '01'
paymentsEnabled: true
checkOrderingEnabled: true
_links:
self:
href: /products/products/a6459cdf-543e-46df-887b-ac5378ee9acd
'apiture:productType':
href: /products/productTypes/4d4242ed-eb8d-46ca-bc3c-13e1f82337c8
'apiture:productSubtype':
href: /products/productTypes/b2134f56-3645-490d-a788-79e974635ae8
'apiture:deactivate':
href: /disabledProducts?product=a6459cdf-543e-46df-887b-ac5378ee9acd
'apiture:remove':
href: /removedProducts?product=a6459cdf-543e-46df-887b-ac5378ee9acd
_embedded:
productType:
_id: 4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
_profile: 'https://api.apiture.com/schemas/products/productType/v1.0.1/profile.json'
name: Demand Deposit
label: Demand Deposit
description: A demand deposit checking account.
state: active
subtype: false
subtypeCount: 1
_links:
self:
href: /products/productTypes/4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
productSubtype:
_id: eccb54ed-0f0a-443b-9f2e-32d5b8f4371c
_profile: 'https://api.apiture.com/schemas/products/productType/v1.0.1/profile.json'
name: Demand Deposit with Interest
label: Demand Deposit with Interest
description: A demand deposit checking account with interest.
state: active
subtype: true
subtypeCount: 0
_links:
self:
href: /products/productTypes/eccb54ed-0f0a-443b-9f2e-32d5b8f4371c
'apiture:parent':
href: /products/productTypes/4ea6fe4e-405c-4d71-93e3-ad637b5cab2d
x-apiture-composition:
- $ref: '#/components/schemas/summaryProduct'
- $ref: '#/components/schemas/productDetails'
- properties:
- _id
- attributes
- _embedded
- createdAt
- card
- highlights
- coreBanking
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: Embedded objects related to this product. A product contains summary representation of the product type and subtype.
allOf:
- $ref: '#/components/schemas/productEmbeddedObjects'
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
state:
description: >-
The state of this product or product type. New resources are `pending` by default and must be activated before they may be used.
The `state` property is immutable and derived and may not be changed via the `PUT` or `PATCH` operations. To change the state of a product
or product type, use the `POST` operation using the `apiture:activate`, `apiture:deactivate` or `apiture:remove` links on the resource.
allOf:
- $ref: '#/components/schemas/prodState'
name:
description: The name of this product.
type: string
maxLength: 128
minLength: 1
label:
description: The text label for this product. This field may be localized.
type: string
maxLength: 128
minLength: 1
description:
description: >-
A fuller description of this product. This field may be localized. The content is processed as [Github Flavored
Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) and thus supports rich text.
type: string
maxLength: 4096
minLength: 1
format: markdown
code:
description: >-
The unique product code for this product, normally defined by the underlying banking core. The `code` cannot be changed once the `state`
is beyond `pending`.
type: string
maxLength: 64
newAccountAvailability:
description: >-
Indicates if the product is available for opening new accounts.
* *`available`* means the product may be selected for a new account application.
* *`notAvailable`* means the product may *not* be selected for a new account application.
The default is `available`. Note that clients must check both the product `state` and the `newAccountAvailability` when listing products
for new account opening. The `?openable=true` query parameter on [`getProducts`](#op-getProducts) combines these.
(Labels and descriptions for the enumeration values are in the `newAccountAvailability` key in the response of the
[`getLabels`](#op-getLabels) operation.) Upate this property with the [`unlockProduct`](#op-unlockProduct) or
[`unlockProduct`](#op-unlockProduct) operations
readOnly: true
allOf:
- $ref: '#/components/schemas/newAccountAvailability'
category:
description: The product category name. This is a more readable form of the product's `type`.
type: string
example: Savings
ifxType:
description: The product IFX Account Type.
allOf:
- $ref: '#/components/schemas/ifxType'
target:
description: >-
Describes the target audience or consumer of the accounts, `personal` or `business`. Labels and descriptions for the enumeration values
are in the `productTarget` key in the response of the `getLabels` operation.
allOf:
- $ref: '#/components/schemas/productTarget'
rates:
description: The interest rates for this product.
allOf:
- $ref: '#/components/schemas/productInterestRates'
rate:
description: >-
The interest rate for this product.
**Warning**: The property `rate` was deprecated on version `v2.1.0` of the schema. Use `rates`
object instead. `rate` will be removed on version `v3.0.0` of the schema.
x-apiture-deprecated:
since: 2.1.0
removeOn: 3.0.0
replacement: '`rates` object'
allOf:
- $ref: '#/components/schemas/rate'
_id:
description: The unique identifier for this product resource. This is an immutable opaque string.
readOnly: true
type: string
type:
description: 'The product type name, which is derived from the linked product type.'
type: string
readOnly: true
subtype:
description: 'The product subtype name, which is derived from the linked product subtype. This is a derived, immutable property.'
type: string
readOnly: true
timeDeposit:
$ref: '#/components/schemas/timeDeposit'
constraints:
$ref: '#/components/schemas/constraints'
paymentsEnabled:
description: >-
If `true`, active accounts of this banking product _may_ be eligible for payment features such as bill pay. This is merely the _default_;
clients should check the `paymentsEnabled` property on the account service to ensure payment services are available for the authenticated
account user.
The property `paymentsEnabled` was added on version `2.3.0` of the schema.
type: boolean
readOnly: true
x-apiture-since: 2.3.0
checkOrderingEnabled:
description: >-
If `true`, active accounts derived from this banking product may allow ordering checks through the Check Orders API. Accounts inherit this
value from their product. The financial institution may disable check ordering on individual accounts, so clients should reference the
`checkOrderingEnabled` property on the account.
The property `checkOrderingEnabled` was added on version `2.3.0` of the schema.
type: boolean
readOnly: true
default: false
x-apiture-since: 2.3.0
institutionName:
description: The name of the financial institution.
type: string
maxLength: 128
minLength: 1
coreType:
description: Identifies the underlying bank core system.
type: string
onlineBankingEnabled:
description: '`true` if this product is enabled and eligible for online banking.'
type: boolean
default: false
currency:
description: 'The [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217) for this product.'
type: string
minLength: 3
maxLength: 3
example: USD
fees:
description: 'Zero or more fees for accounts of this product. If the array is empty or not present, there are no fees.'
type: array
items:
$ref: '#/components/schemas/fee'
statementFrequency:
description: >-
The frequency with which statements are issued for accounts of this product. This is expressed as an [ISO 8601
duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) duration; only day and month periods are allowed, and the only allowed
fractional value for months is 0.5, as in `P5D` or `P14D` or `P1M` or `P0.5M`.
type: string
format: period
attributes:
type: object
description: An optional map of name/value pairs which provide additional metadata about the product type.
createdAt:
description: The date-time when this product was created. This value is derived and immutable.
type: string
format: date-time
readOnly: true
card:
description: Debit card details associated with this product.
allOf:
- $ref: '#/components/schemas/productCard'
highlights:
description: >-
A list of end-user descriptive strings which highlight attributes of the product. These strings are presented to the end users in the
product details.
readOnly: true
type: array
items:
type: string
coreBanking:
description: Properties of a product that are specific to the banking core provider.
allOf:
- $ref: '#/components/schemas/productCoreBanking'
readOnly: true
type: object
x-apiture-flattened: true
productEmbeddedObjects:
title: Product Embedded Objects (v1.0.0)
description: Related objects embedded within a product resource.
type: object
properties:
productType:
description: The product type resource.
allOf:
- $ref: '#/components/schemas/summaryProductType'
productSubtype:
description: The product subtype resource.
allOf:
- $ref: '#/components/schemas/summaryProductType'
x-apiture-version: 1.0.0
x-apiture-flattened: true
productCoreBanking:
title: Product Core Banking Properties (v1.0.0)
description: >-
Product properties that are specific to the banking core provider. The actual banking core in which the Apiture platfiorm is executing
determines what data appears. The sub-object for each banking core is present on a product only if the Apiture system is connected to the
corresponding core banking provider. The name of each sub-object is the name of that provider.
type: object
properties:
finxact:
description: >-
Product properties that are specific to the Finxact banking core system. This object is present only if the Apiture platform is connected
to a Finxact system.
allOf:
- $ref: '#/components/schemas/productFinxactCoreBanking'
readOnly: true
example:
finxact:
productGroup: '1'
productSegments:
deptId: '350'
vertical: '01'
x-apiture-version: 1.0.0
x-apiture-flattened: true
productFinxactCoreBanking:
title: Product Core Banking Properties (v1.0.0)
description: Product properties that are specific to the Finxact banking core system.
type: object
properties:
productGroup:
description: >
Each product in Finxact belongs to a product group. This property is Finxact identifier of the customer group that this product belongs
to.
type: string
readOnly: true
productSegments:
description: >-
An object which maps marketing segment names to the value for that named segment. The financial institution sets the names and values when
configuring their banking products in Finxact.
x-apiture-key: marketingSegmentName
additionalProperties:
description: The value for this marking segment name.
type: string
readOnly: true
example:
productGroup: '1'
productSegments:
deptId: '350'
vertical: '01'
x-apiture-version: 1.0.0
x-apiture-flattened: true
productsEmbeddedObjects:
title: Products Embedded Objects (v2.3.0)
description: 'Objects embedded in the [`products`](#schema-products) schema''s `items` array.'
type: object
x-apiture-version: 2.3.0
properties:
items:
description: An array containing a page of product items.
type: array
items:
$ref: '#/components/schemas/summaryProduct'
x-apiture-flattened: true
products:
title: Product Collection (v2.4.0)
description: >-
A collection of [product summaries](#schema-summaryProduct) in the `_embedded.items` array. The top-level `_links` object may contain
pagination links (`self`, `next`, `prev`, `first`, `last`, `collection`).
x-apiture-version: 2.4.0
example:
_profile: 'https://api.apiture.com/schemas/products/products/v2.4.0/profile.json'
start: 0
limit: 10
count: 42
name: products
_links:
self:
href: /products?start=0&limit=10
first:
href: /products?start=10&limit=10
next:
href: /products?start=10&limit=10
collection:
href: /products
_embedded:
items:
- _id: a6459cdf-543e-46df-887b-ac5378ee9acd
name: Premiere Checking
label: Premiere Checking
description: A premiere demand deposit checking account for business use.
state: active
newAccountAvailability: available
category: Checking
rate:
value: '1.40'
type: apy
rates:
apy: '1.40'
compoundPeriod: P1D
_profile: 'https://api.apiture.com/schemas/products/summaryProduct/v2.4.0/profile.json'
_links:
'apiture:productType':
href: /products/productTypes/4d4242ed-eb8d-46ca-bc3c-13e1f82337c8
'apiture:productSubtype':
href: /products/productTypes/b2134f56-3645-490d-a788-79e974635ae8
self:
href: /products/products/a6459cdf-543e-46df-887b-ac5378ee9acd
x-apiture-composition:
- $ref: '#/components/schemas/collection'
- properties:
- _embedded
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: '`_embedded.items` is array of [product summaries](#schema-summaryProduct).'
allOf:
- $ref: '#/components/schemas/productsEmbeddedObjects'
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
count:
description: >-
The number of items in the collection. This value is _optional_ and may be omitted if the count is not computable efficiently. If a filter
is applied to the collection (either implicitly or explicitly), the count, if present, indicates the number of items that satisfy the
filter.
type: integer
start:
description: The start index of this page of items.
type: integer
limit:
description: The maximum number of items per page.
type: integer
name:
description: The name of the collection.
type: string
type: object
x-apiture-flattened: true
productCard:
title: Product Card Details (v1.0.0)
description: Debit card details associated with this product.
type: object
required:
- provider
- images
- activationExpiration
properties:
provider:
description: Details of the card provider.
allOf:
- $ref: '#/components/schemas/cardProvider'
images:
description: Image (JPEG or PNG) of a sample blank debit card for this product.
type: array
minItems: 1
items:
$ref: '#/components/schemas/cardImage'
activationExpiration:
description: 'After a card is issued, it must be activated before this many days before the card activation expires.'
type: integer
minimum: 7
example: 30
expeditedShippingAllowed:
description: Indicates if the bank customer can request expedited shipping for cards associated with the accounts for this product.
allOf:
- $ref: '#/components/schemas/expeditedShippingAllowed'
autoOrder:
description: Whether the financial institution will automatically order new debit cards for bank customers.
allOf:
- $ref: '#/components/schemas/autoOrderCards'
example:
provider:
id: DDA_203389
images:
- height: 1024
width: 833
uri: 'http://cdn.3rdparty.bank/images/products/CD-3892/debit-card-large.png'
activationExpiration: 30
expeditedShippingAllowed:
forNew: true
forReplacements: true
autoOrder:
forDigitalAccountOpening: true
forJointOwners: true
forAuthorizedSigners: true
x-apiture-version: 1.0.0
x-apiture-flattened: true
autoOrderCards:
title: Automatically Order Cards (v1.0.0)
description: >-
Configuration for whether the financial institution automatically orders new debit cards for primary applicants or other account holders. New
cards are not ordered during user/account migration.
type: object
properties:
forDigitalAccountOpening:
description: >-
If `true`, the financial institution will automatically order a debit card for the primary applicant after opening a new account
associated with this product via the digital account opening process.
type: boolean
default: false
forJointOwners:
description: >-
If `true`, the financial institution will automatically order a debit card for new joint owners when they become an account holder on a
personal account associated with this product.
type: boolean
default: false
forAuthorizedSigners:
description: >-
If `true`, the financial institution will automatically order a debit card for the organization's existing authorized signers or when a
new authorized signer becomes an account holder on accounts associated with this product. If both `forDigitalAccountOpening` and
`forAuthorizedSigners` are true, the applicant receives only one card even though they may be listed in the organization's authorized
signers.
type: boolean
default: false
example:
forDigitalAccountOpening: true
forJointOwners: true
forAuthorizedSigners: true
x-apiture-version: 1.0.0
x-apiture-flattened: true
cardProvider:
title: Card Provider Details (v1.0.0)
description: Details of the debit card processor/provider.
type: object
required:
- id
properties:
id:
description: The unique identifier for this product within the card provider's environment.
type: string
readOnly: true
example: DDA_203389
example:
id: DDA_203389
x-apiture-version: 1.0.0
x-apiture-flattened: true
expeditedShippingAllowed:
title: Expedited Shipping Allowed (v1.0.0)
description: Indicates if the bank customer can request expedited shipping for cards associated with the accounts for this product.
properties:
forNew:
description: 'If `true`, expedited shipping is allowed for _new_ cards.'
type: boolean
default: false
forReplacements:
description: 'If `true`, expedited shipping is allowed for _replacement_ cards (reorders).'
type: boolean
default: false
example:
forNew: true
forReplacements: true
x-apiture-version: 1.0.0
type: object
x-apiture-flattened: true
cardImage:
title: Card Image Details (v1.0.0)
description: >-
Details of a debit card image for this product. The `height` and `width` are optional but should be provided if the `card.images` object
contains more than one image, so that clients can choose the most appropriate image size. The image may have portrait or landscape
orientation, but the maximum aspect ratio is 2:1 ([IEC 7810](https://en.wikipedia.org/wiki/ISO/IEC_7810#ID-1) is 85.60:53.98, approximately
1.6:1).
type: object
required:
- uri
properties:
height:
description: 'The image height, in pixels.'
type: integer
minimum: 64
maximum: 4096
width:
description: 'The image width, in pixels.'
type: integer
minimum: 64
maximum: 4096
uri:
description: >-
The image URI which a client can fetch in order to render the sample card image in the client. This resource does not require
authentication.
type: string
format: uri
maxLength: 2048
example:
height: 1024
width: 833
uri: 'http://cdn.3rdparty.bank/images/products/DDA_203389/debit-card-large.png'
x-apiture-version: 1.0.0
x-apiture-flattened: true
productState:
title: State of a Product or Product Type (v1.0.0)
description: The state of a product or type.
x-apiture-fragment: true
properties:
state:
description: >-
The state of this product or product type. New resources are `pending` by default and must be activated before they may be used.
The `state` property is immutable and derived and may not be changed via the `PUT` or `PATCH` operations. To change the state of a product
or product type, use the `POST` operation using the `apiture:activate`, `apiture:deactivate` or `apiture:remove` links on the resource.
allOf:
- $ref: '#/components/schemas/prodState'
x-apiture-version: 1.0.0
type: object
x-apiture-flattened: true
prodState:
title: Product or Product Type State (v1.0.0)
description: >-
The state of this product or product type. New resources are `pending` by default and must be activated before they may be used.
The `state` property is immutable and derived and may not be changed via the `PUT` or `PATCH` operations. To change the state of a product or
product type, use the `POST` operation using the `apiture:activate`, `apiture:deactivate` or `apiture:remove` links on the resource.
prodState
strings may have one of the following
[enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):
Value | Description |
pending | This product has been created in draft form but is not yet available |
active | This product is active and available for use |
inactive | This product is temporarily not available for use |
removed | This product has been removed and is permanently not available for use |
These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)
named `prodState` in the response from the [`getLabels`](#op-getLabels) operation.
type: string
enum:
- pending
- active
- inactive
- removed
default: pending
x-apiture-enum: prodState
x-apiture-version: 1.0.0
x-apiture-flattened: true
rate:
title: Interest Rate (v1.1.0)
x-apiture-version: 1.1.0
x-apiture-deprecated:
since: 0.20.0
replacement: '`rates` object'
removeOn: 0.22.0
description: >-
The interest rate for accounts. For deposit accounts, this is the rate of return. For loan accounts, this is the interest rate charged on
balances. Rates can be fixed, such as "1.40" to indicate 1.4%, which is expressed as `{ "value" : "1.40" }`, or relative to a benchmark, such
as U.S. Prime Rate + 0.5% which is expressed as `{ "benchmark" : "prime", "value" : "0.50" }`.
**Warning**: The schema `rate` was
deprecated on version `v0.20.0` of the API. Use `rates` object instead. `rate` will be removed on version `v0.22.0` of the API.
properties:
value:
description: >-
The rate, expressed as an decimal percentage string in order to represent the rate exactly. This number must have leading digits before
the decimal point an two to threee decimal points, such as `2.00` or `0.50` or `1.015`, but not `2` or `.5`.
type: string
example: '1.40'
pattern: '^-?\d{1,2}\.\d{2,3}$'
benchmark:
description: >-
An optional base benchmark that the rate is relative to. If omitted, the rate is fixed. Otherwise the rate is added to the benchmark rate.
Values may be (but are not limited to):
* *`primeUS`* - the [U.S. Prime rate](https://en.wikipedia.org/wiki/Prime_rate)
* *`treasuryUS`* - The [U.S. Treasury rate](https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yieldAll)
* *`libor`* - the [London Inter-bank Offered Rates](https://en.wikipedia.org/wiki/Libor) rate
type: string
example: prime
compoundPeriod:
description: >-
The period at which interest compounds.
This value is an [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) string of the form `P[n]Y[n]M[n]D` to specify the
term in the number of years/months/days. The default is `"P0D"` (continuous).
type: string
example: P7D
accrualType:
description: Indicates how interest is accrued according to the `compoundPeriod`.
allOf:
- $ref: '#/components/schemas/accrualType'
adjustmentPeriod:
description: >-
The period at which the rate is adjusted or recomputed to account for differences in the benchmark rate.
This value is an [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) string of the form `P[n]Y[n]M[n]D` to specify the
term in the number of years/months/days; The default is `"P1D"` (daily).
type: string
format: period
example: P1D
type:
description: The interest rate type.
type: string
allOf:
- $ref: '#/components/schemas/interestRateType'
example:
value: '1.40'
type: apr
type: object
x-apiture-flattened: true
productInterestRates:
x-apiture-version: 1.0.0
title: Product Interest Rates (v1.0.0)
description: >-
The interest rates for accounts based on this product. For deposit products, the rates describe the rate of return. For loan products, this
includes the interest rate charged on balances. The `apy`, `apye`, `nominal` and `apr` values are a decimal percentage, coded as strings in
order to represent the rate exactly. Rates are coded to two or three decimal places. Rates can be fixed, such `{ "apy" : "1.40" }` for _1.4%
APY_. Rates (usually only on loan accounts) may relative to a benchmark, such as `{ "benchmark" : "primeUs", "apr" : "0.50" }` to express
_U.S. Prime Rate + 0.5%_.
properties:
apy:
description: >-
The annual percentage yield (APY): the effective yield from interest, including compounding, as a percentage. Used on deposit account
products.
type: string
format: decimal
readOnly: true
example: '1.40'
pattern: '^-?\d{1,2}\.\d{2}$'
apye:
description: >-
The annualized rate based on the amount of interest actually earned, including compounding, as a percentage of the account's average daily
balance. Used on deposit account products.
type: string
format: decimal
readOnly: true
example: '1.45'
pattern: '^-?\d{1,2}\.\d{2}$'
nominal:
description: The effective interest rate before accounting for inflation. Used on deposit and loan account products.
type: string
format: decimal
readOnly: true
example: '1.445'
pattern: '^-?\d{1,2}\.\d{2,3}$'
apr:
description: >-
The base annual percentage rate (APR) charged on loan accounts. If `benchmark` is set, the current APR is _relative_ to that benchark: For
example, a rate of `{ 'apr': '1.00', 'benchmark': 'primeUS' }` means the APR is "Prime plus 1.00%": if the current Prime rate is 1.10%,
the actual APR is 2.10%. A negative rate means a rate below the benchmark.
type: string
format: decimal
readOnly: true
example: '1.450'
pattern: '^-?\d{1,2}\.\d{2,3}$'
benchmark:
description: >-
An optional base benchmark that the rate is relative to. This typically only applie to loan products. If omitted, the rate is fixed.
Otherwise the rate is added to the benchmark rate. Values may be (but are not limited to):
* *`primeUS`* - the [U.S. Prime rate](https://en.wikipedia.org/wiki/Prime_rate)
* *`treasuryUS`* - The [U.S. Treasury rate](https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yieldAll)
* *`libor`* - the [London Inter-bank Offered Rates](https://en.wikipedia.org/wiki/Libor) rate
type: string
example: prime
compoundPeriod:
description: >-
The period at which interest compounds. This value is an [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) string of
the form `P[n]Y[n]M[n]D` to specify the compounding in the number of years/months/days. `P1D` mean compounded daily and `P1M` mean
compounded monthly. The default is `"P0D"` (continuous).
type: string
example: P7D
accrualType:
description: Indicates how interest is accrued according to the `compoundPeriod`.
allOf:
- $ref: '#/components/schemas/accrualType'
adjustmentPeriod:
description: >-
The period at which the rate is adjusted or recomputed to account for changes in the benchmark rate. This value is an [ISO 8601
duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) string of the form `P[n]Y[n]M[n]D` to specify the term in the number of
years/months/days; The default is `"P1D"` (daily).
type: string
format: period
example: P1D
example:
apy: '1.40'
nominal: '1.405'
apye: '1.40'
compoundPeriod: P1D
accrualType: compounding
type: object
x-apiture-flattened: true
accrualType:
title: Accrual Type (v1.0.0)
description: |-
Indicates how interest is accrued according to the `compoundPeriod`.
accrualType
strings may have one of the following
[enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):
Value | Description |
compounding | Compounding interest |
simple | Simple interest |
These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)
named `accrualType` in the response from the [`getLabels`](#op-getLabels) operation.
type: string
enum:
- compounding
- simple
x-apiture-enum: accrualType
x-apiture-version: 1.0.0
x-apiture-flattened: true
interestRateType:
title: Interest Rate Type (v1.0.0)
x-apiture-verion: 1.1.0
x-apiture-deprecated:
since: 0.20.0
removeOn: 0.22.0
replacement: '`apy` and `apr` properties in `productInterestRates`'
description: |-
The rate type. The rate type may not be changed once it is set at product creation. Rate types are:
* *`apr`* - annual percentage rate
* *`apy`* - annual percentage yield
**Warning**: The schema `interestRateType` was deprecated on version `v0.20.0` of the API. Use `apy` and `apr` properties in `productInterestRates` instead. `interestRateType` will be removed on version `v0.22.0` of the API.
type: string
enum:
- apr
- apy
example: apr
x-apiture-version: 1.0.0
x-apiture-flattened: true
errorResponse:
x-apiture-version: 2.0.0
title: Error Response (v2.0.0)
description: |-
Describes an error response, typically returned on 4xx or 5xx errors from API operations. The `_error` object contains the error details.
This schema was resolved from [`common/errorResponse`](https://production.api.apiture.com/schemas/common/errorResponse/v2.0.0/model.json).
example:
_profile: 'https://api.apiture.com/schemas/common/errorResponse/v2.0.0/profile.json'
_error:
_id: 2eae46e1-575c-4d69-8a8f-0a7b0115a4b3
message: The value for deposit must be greater than 0.
statusCode: 422
type: positiveNumberRequired
attributes:
value: -125.5
remediation: Provide a value which is greater than 0
occurredAt: '2018-01-25T05:50:52.375Z'
_links:
describedby:
href: 'https://api.apiture.com/errors/positiveNumberRequired'
_embedded:
errors: []
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/errorResponse/v2.0.0/model.json'
x-apiture-namespace: common
x-apiture-composition:
- $ref: '#/components/schemas/abstractResource'
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
type: object
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
type: object
x-apiture-flattened: true
root:
x-apiture-version: 2.0.0
title: API Root (v2.0.0)
description: |-
A HAL response, with hypermedia `_links` for the top-level resources and operations in API.
This schema was resolved from [`common/root`](https://production.api.apiture.com/schemas/common/root/v2.0.0/model.json).
example:
id: apiName
name: API name
apiVersion: 1.0.0
_profile: 'https://production.api.apiture.com/schemas/common/root/v2.0.0/profile.json'
_links: {}
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/root/v2.0.0/model.json'
x-apiture-namespace: common
x-apiture-composition:
- $ref: '#/components/schemas/abstractResource'
- properties:
- _id
- name
- apiVersion
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
type: object
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
_id:
description: This API's unique ID.
readOnly: true
type: string
name:
type: string
description: This API's name.
apiVersion:
type: string
description: This API's version.
type: object
x-apiture-flattened: true
labelGroups:
title: Label Groups (v1.0.1)
description: >-
A set of named groups of labels, each of which contains multiple item labels.
The abbreviated example shows two groups, one named `structure` and one named `estimatedAnnualRevenue`. The first has items with names such as
`corporation`, `llc` and `soleProprietorship`, with text labels for each in the default and in French. The second has items for estimated
revenue *ranges* but no localized labels. For example, the item named `from1to10Million` has the `label` "$1M to $10M" and the range
`[1000000.00,10000000.00)`.
This schema was resolved from [`common/labelGroups`](https://production.api.apiture.com/schemas/common/labelGroups/v1.0.1/model.json).
x-apiture-version: 1.0.1
example:
_profile: 'https://api.apiture.com/schemas/common/labelGroups/v1.0.1/profile.json'
groups:
structure:
unknown:
label: Unknown
code: '0'
hidden: true
corporation:
label: Corporation
code: '1'
variants:
fr:
label: Soci\u00e9t\u00e9
partnership:
label: Partnership
code: '2'
variants:
fr:
label: Partenariat
llc:
label: Limited Liability Company
code: '2'
variants:
fr:
label: Soci\u00e9t\u00e9 \u00e9 Responsabilit\u00e9 Limit\u00e9e
nonProfit:
label: Non Profit
code: '4'
variants:
fr:
label: Non Lucratif
financialInstitution:
label: Financial Institution
code: '8'
variants:
fr:
label: Institution financi\u00e8re
soleProprietorship:
label: Sole Proprietorship
code: '11'
variants:
fr:
label: Entreprise individuelle
other:
label: Other
code: '254'
variants:
fr:
label: Autre
estimatedAnnualRevenue:
unknown:
label: Unknown
code: '0'
under1Million:
label: Under $1M
code: '1'
range: '[0,1000000.00)'
from1to10Million:
label: $1M to $10M
code: '2'
range: '[1000000.00,10000000.00)'
from10to100Million:
label: $10M to $100M
code: '3'
range: '[10000000.00,100000000.00)'
over100Million:
label: 'Over $100,000,000.00'
code: '4'
range: '[100000000.00,]'
other:
label: Other
code: '254'
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/labelGroups/v1.0.1/model.json'
x-apiture-namespace: common
x-apiture-composition:
- $ref: '#/components/schemas/abstractResource'
- properties:
- groups
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
type: object
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
groups:
description: 'Groups of localized labels. This maps *group names* → [*a group of labels*](#schema-labelgroup) within that group.'
x-apiture-key: groupName
additionalProperties:
$ref: '#/components/schemas/labelGroup'
type: object
x-apiture-flattened: true
abstractResource:
x-apiture-version: 2.0.0
title: Abstract Resource (v2.0.0)
description: >-
An abstract schema used to define other schemas for request and response bodies. This is a
[HAL](https://tools.ietf.org/html/draft-kelly-json-hal-08) resource representation. This model contains hypermedia `_links`, and either
optional domain object data with `_profile` and optional `_embedded` objects, or an `_error` object. In responses, if the operation was
successful, this object will not include the `_error`, but if the operation was a 4xx or 5xx error, this object will not include `_embedded`
or any data fields, only `_error` and optionally `_links`.
This schema was resolved from
[`common/abstractResource`](https://production.api.apiture.com/schemas/common/abstractResource/v2.0.0/model.json).
example:
_profile: 'https://production.api.apiture.com/schemas/common/abstractResource/v2.0.0/profile.json'
_links:
self:
href: 'https://api.devbank.apiture.com/applications/application/328f6bf6-d762-422f-a077-ab91ca4d0b6f'
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/abstractResource/v2.0.0/model.json'
x-apiture-namespace: common
x-apiture-composition:
- $ref: '#/components/schemas/abstractRequest'
- properties:
- _error
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
type: object
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
type: object
x-apiture-flattened: true
collection:
x-apiture-version: 2.0.0
title: Collection (v2.0.0)
description: |-
A collection of resources. This is an abstract model schema which is extended to define specific resource collections.
This schema was resolved from [`common/collection`](https://production.api.apiture.com/schemas/common/collection/v2.0.0/model.json).
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/collection/v2.0.0/model.json'
x-apiture-namespace: common
x-apiture-composition:
- $ref: '#/components/schemas/abstractResource'
- properties:
- count
- start
- limit
- name
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
type: object
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
_error:
description: An object which describes an error. This value is omitted if the operation succeeded without error.
type: object
allOf:
- $ref: '#/components/schemas/error'
count:
description: >-
The number of items in the collection. This value is _optional_ and may be omitted if the count is not computable efficiently. If a filter
is applied to the collection (either implicitly or explicitly), the count, if present, indicates the number of items that satisfy the
filter.
type: integer
start:
description: The start index of this page of items.
type: integer
limit:
description: The maximum number of items per page.
type: integer
name:
description: The name of the collection.
type: string
type: object
x-apiture-flattened: true
abstractRequest:
x-apiture-version: 2.0.0
title: Abstract Request (v2.0.0)
description: >-
An abstract schema used to define other request-only schemas. This is a [HAL](https://tools.ietf.org/html/draft-kelly-json-hal-08) resource
representation, minus the `_error` defined in `abstractResource`.
This schema was resolved from [`common/abstractRequest`](https://production.api.apiture.com/schemas/common/abstractRequest/v2.0.0/model.json).
properties:
_links:
description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
allOf:
- $ref: '#/components/schemas/links'
_embedded:
description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
type: object
_profile:
description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
type: string
format: uri
example:
_profile: 'https://api.apiture.com/schemas/common/abstractRequest/v2.0.0/profile.json'
_links:
self:
href: 'https://api.devbank.apiture.com/applications/'
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/abstractRequest/v2.0.0/model.json'
x-apiture-namespace: common
type: object
x-apiture-flattened: true
error:
x-apiture-version: 2.0.0
title: Error (v2.0.0)
description: |-
Describes an error in an API request or in a service called via the API.
This schema was resolved from [`common/error`](https://production.api.apiture.com/schemas/common/error/v2.0.0/model.json).
required:
- message
properties:
message:
type: string
description: A localized message string describing the error condition.
_id:
description: >-
A unique identifier for this error instance. This may be used as a correlation ID with the root cause error (i.e. this ID may be logged at
the source of the error). This is is an opaque string.
readOnly: true
type: string
statusCode:
description: The HTTP status code associate with this error.
type: integer
minimum: 100
maximum: 599
example: 422
type:
type: string
description: >-
An error identifier which indicates the category of error and associate it with API support documentation or which the UI tier can use to
render an appropriate message or hint. This provides a finer level of granularity than the `statusCode`. For example, instead of just 400
Bad Request, the `type` may be much more specific. such as `integerValueNotInAllowedRange` or `numericValueExceedsMaximum` or
`stringValueNotInAllowedSet`.
occurredAt:
type: string
format: date-time
description: 'An [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC time stamp indicating when the error occurred.'
example: '2018-02-02T03:37:15.375Z'
attributes:
description: >-
Informative values or constraints which describe the error. For example, for a value out of range error, the attributes may specify the
`minimum` and `maximum` values. This allows clients to present error messages as they see fit (the API does not assume the
client/presentation tier). The set of attributes varies by error `type`.
allOf:
- $ref: '#/components/schemas/attributes'
remediation:
type: string
description: An optional localized string which provides hints for how the user or client can resolve the error.
errors:
description: An optional array of nested error objects. This property is not always present.
type: array
items:
$ref: '#/components/schemas/error'
_links:
$ref: '#/components/schemas/links'
example:
_id: 2eae46e1575c0a7b0115a4b3
message: Descriptive error message...
statusCode: 422
type: errorType1
remediation: Remediation string...
occurredAt: '2018-01-25T05:50:52.375Z'
errors:
- _id: ccdbe2c5c938a230667b3827
message: An optional embedded error
- _id: dbe9088dcfe2460f229338a3
message: Another optional embedded error
_links:
describedby:
href: 'https://developer.apiture.com/errors/errorType1'
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/error/v2.0.0/model.json'
x-apiture-namespace: common
type: object
x-apiture-flattened: true
labelGroup:
title: Label Group (v1.0.0)
description: >-
A map that defines labels for the items in a group. This is a map from each item *name* → *a [`labelItem`](#schema-labelitem) object*.
For example, consider a JSON response that includes a property named `revenueEstimate`; the values for `revenueEstimate` must be one of the
items in the group named `estimatedAnnualRevenue`, with options ranging `under1Million`, to `over100Million`. The item name is used as the
selected value in an Apiture representation, such as `{ ..., "revenueEstimate" : "from10to100Million" , ...}`, and the item with the name
`from10to100Million` defines the presentation labels for that item, as well as other metadata about that choice: this is the range
`[10000000.00,100000000.00)`.
This allows the client to let the user select a value from a list, such as the following derivde from the labels in the example:
* Unknown
* Under $1M
* $1M to $10M
* $10M to $100M
* $100M or more
Note that the `other` item is hidden from the selection list, as that item is marked as `hidden`. For items which define numeric ranges, a
client may instead let the customer *directly* enter their estimated annual revenue as a number, such as 4,500,000.00. The client can then
match that number to one of ranges in the items and set the `revenueEstimate` to the corresponding item's name: `{ ..., "revenueEstimate" :
"from1to10Million", ... }`.
This schema was resolved from [`common/labelGroup`](https://production.api.apiture.com/schemas/common/labelGroup/v1.0.0/model.json).
x-apiture-key: labelName
x-apiture-version: 1.0.0
additionalProperties:
$ref: '#/components/schemas/labelItem'
example:
unknown:
label: Unknown
code: '0'
hidden: true
under1Million:
label: Under $1M
code: '1'
range: '[0,1000000.00)'
variants:
fr:
label: Moins de $1M
from1to10Million:
label: $1M to $10M
code: '2'
range: '[1000000.00,10000000.00)'
variants:
fr:
label: $1M \u00e0 $10M
from10to100Million:
label: $10M to $100M
code: '3'
range: '[10000000.00,100000000.00)'
variants:
fr:
- label $10M \u00e0 $100M
over100Million:
label: 'Over $100,000,000.00'
code: '4'
range: '[100000000.00,]'
variants:
fr:
label: Plus de $10M
other:
label: Other
code: 254
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/labelGroup/v1.0.0/model.json'
x-apiture-namespace: common
type: object
properties: {}
x-apiture-flattened: true
attributes:
x-apiture-version: 2.0.0
title: Attributes (v2.0.0)
description: |-
An optional map of name/value pairs which contains additional dynamic data about the resource.
This schema was resolved from [`common/attributes`](https://production.api.apiture.com/schemas/common/attributes/v2.0.0/model.json).
type: object
x-apiture-key: attributeName
additionalProperties:
$ref: '#/components/schemas/attributeValue'
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/attributes/v2.0.0/model.json'
x-apiture-namespace: common
properties: {}
x-apiture-flattened: true
links:
title: Links (v1.0.0)
x-apiture-version: 1.0.0
description: |-
An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.
This schema was resolved from [`common/links`](https://production.api.apiture.com/schemas/common/links/v1.0.0/model.json).
type: object
x-apiture-key: linkRelationName
additionalProperties:
$ref: '#/components/schemas/link'
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/links/v1.0.0/model.json'
x-apiture-namespace: common
properties: {}
x-apiture-flattened: true
labelItem:
title: Label Item (v1.0.0)
description: >-
An item in a [`labelGroup`](#schema-labelgroup), with a set of `variants` which contains different localized labels for the item. Each
([`simpleLabel`](#schema-simpleLabel)) variant defines the presentation text label and optional description for a language. Items may also
have a lookup `code` to map to external syststems, a numeric range, and a `hidden` boolean to indicate the item is normally hidden in the UI.
This schema was resolved from [`common/labelItem`](https://production.api.apiture.com/schemas/common/labelItem/v1.0.0/model.json).
x-apiture-version: 1.0.0
example:
over100Million:
label: 'Over $100,000,000.00'
code: '4'
range: '[100000000.00,]'
variants:
fr:
label: Plus de $10M
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/labelItem/v1.0.0/model.json'
x-apiture-namespace: common
x-apiture-composition:
- $ref: '#/components/schemas/simpleLabel'
- properties:
- variants
- code
- hidden
- range
properties:
label:
type: string
description: A label or title which may be used as labels or other UI controls which present a value.
example: Board of Directors
description:
type: string
description: A more detailed localized description of a localizable label.
variants:
description: >-
The language-specific variants of this label. The keys in this object are [RFC 7231](https://tools.ietf.org/html/rfc7231#section-3.1.3.1)
language codes.
x-apiture-key: languageCode
type: object
additionalProperties:
$ref: '#/components/schemas/simpleLabel'
example:
en:
label: More then $10M
es:
label: Mas de $10M
fr:
label: Plus de $10M
code:
type: string
description: 'If the localized value is associated with an external standard or definition, this is a lookup code or key or URI for that value.'
example: '3'
minLength: 1
hidden:
type: boolean
description: 'If `true`, this item is normally hidden from the User Interface.'
range:
description: >-
The range of values, if the item describes a bounded numeric value. This is range notation such as `[min,max]`, `(exclusiveMin,max]`,
`[min,exclusiveMax)`, or `(exclusiveMin,exclusiveMax)`. For example, `[0,100)` is the range greater than or equal to 0 and less than 100.
If the *min* or *max* value are omitted, that end of the range is unbounded. For example, `(,1000.00)` means less than 1000.00 and
`[20000.00,]` means 20000.00 or more. The ranges do not overlap or have gaps.
type: string
pattern: '^[\[\(](-?(0|[1-9][0-9]*)(\.[0-9]+)?)?,(-?(0|[1-9][0-9]*)(\.[0-9]+)?)?[\]\)]$'
type: object
x-apiture-flattened: true
link:
x-apiture-version: 1.0.0
title: Link (v1.0.0)
description: >-
Describes a hypermedia link within a `_links` object in HAL representations. In Apiture APIs, links are [HAL
links](https://developer.apiture.com/docs/concepts/links), but Apiture APIs do not use the `name` or `hreflang` properties of HAL. Apiture
links _may_ include a `method` property.
This schema was resolved from [`common/link`](https://production.api.apiture.com/schemas/common/link/v1.0.0/model.json).
required:
- href
properties:
href:
type: string
format: uri
description: The URI or URI template for the resource/operation this link refers to.
type:
type: string
description: The media type for the resource.
templated:
type: boolean
description: 'If true, the link''s href is a [URI template](https://tools.ietf.org/html/rfc6570).'
title:
type: string
description: An optional human-readable localized title for the link.
deprecation:
type: string
format: uri
description: 'If present, the containing link is deprecated and the value is a URI which provides human-readable text information about the deprecation.'
profile:
type: string
format: uri
description: 'The URI of a profile document, a JSON document which describes the target resource/operation.'
example:
href: 'https://api.devbank.apiture.com/applications/application/328f6bf6-d762-422f-a077-ab91ca4d0b6f'
title: Application
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/link/v1.0.0/model.json'
x-apiture-namespace: common
type: object
x-apiture-flattened: true
simpleLabel:
title: Simple Label (v1.0.0)
description: |-
A text label and optional description.
This schema was resolved from [`common/simpleLabel`](https://production.api.apiture.com/schemas/common/simpleLabel/v1.0.0/model.json).
x-apiture-version: 1.0.0
type: object
required:
- label
properties:
label:
type: string
description: A label or title which may be used as labels or other UI controls which present a value.
example: Board of Directors
description:
type: string
description: A more detailed localized description of a localizable label.
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/simpleLabel/v1.0.0/model.json'
x-apiture-namespace: common
x-apiture-flattened: true
attributeValue:
x-apiture-version: 2.0.0
title: Attribute Value (v2.0.0)
description: |-
The data associated with this attribute.
This schema was resolved from [`common/attributeValue`](https://production.api.apiture.com/schemas/common/attributeValue/v2.0.0/model.json).
x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/attributeValue/v2.0.0/model.json'
x-apiture-namespace: common
type: object
properties: {}
x-apiture-flattened: true
x-apiture-annotated-at: '2020-10-23T17:10:25.823Z'