Shell HTTP JavaScript Node.JS Ruby Python Java Go

Banking Products v0.13.5

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

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. When the terms and conditions of a product changes, this constititutes a new revision of the product. Business rules (which are not part of this service) dictate whether all accounts which are attached to the product remain attached to the previous revision of the product or are attached to the newer revision or when and how this occurs. Similarly, business rules and other services may provide notification to users of changes in terms of use, etc. Products and product types each have a name, a description a label, and a state.

The state may be one of the following:

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:

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. **TODO** The `newAccountAvailability` in the product resource is currently mutable but it will become immutable and derived only. The value is derived from the existence of the product in the `unlockedProducts` collection.

This resource is a copy of the banking product resources in the bank core. In some cases, the Apiture platform does not have programmatic access to that core, so when when a financial institution updates the banking products in the core, they must *also* use this API to update the Apiture copy.

Download OpenAPI Definition (YAML)

Base URLs:

Terms of service

Email: Apiture Web: Apiture

Authentication

Scope Scope Description
data/read Read access to non-account, non-profile data.
data/write Write (update) access to non-account, non-profile data.
data/delete Delete access to non-account, non-profile data.
data/full Full access to non-account, non-profile data.
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.

API

Endpoints which describe this API.

getApi

Code samples

# You can also use wget
curl -X GET /products/ \
  -H 'Accept: application/hal+json' \
  -H 'API-Key: API_KEY'

GET /products/ HTTP/1.1

Accept: application/hal+json

var headers = {
  'Accept':'application/hal+json',
  'API-Key':'API_KEY'

};

$.ajax({
  url: '/products/',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'API-Key':'API_KEY'

};

fetch('/products/',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'API-Key' => 'API_KEY'
}

result = RestClient.get '/products/',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'API-Key': 'API_KEY'
}

r = requests.get('/products/', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "API-Key": []string{"API_KEY"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/products/", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Top-level resources and operations in this API

GET /

Return links to the top-level resources and operations in this API. This API returns the following links:

Example responses

OK

{
  "id": "products",
  "name": "Banking Products",
  "apiVersion": "0.1.0",
  "_profile": "https://api.apiture.com/schemas/common/root/v1.0.0/profile.json",
  "_links": {
    "apiture:products": {
      "href": "/products/products"
    },
    "apiture:productTypes": {
      "href": "/products/productTypes"
    }
  }
}

200 Response

{
  "id": "apiName",
  "name": "API name",
  "apiVersion": "1.0.0",
  "_profile": "https://api.apiture.com/schemas/common/root/v1.0.0/profile.json",
  "_links": {}
}

Responses

StatusDescription
200 OK
OK
Schema: root

getApiDoc

Code samples

# You can also use wget
curl -X GET /products/apiDoc \
  -H 'Accept: application/json' \
  -H 'API-Key: API_KEY'

GET /products/apiDoc HTTP/1.1

Accept: application/json

var headers = {
  'Accept':'application/json',
  'API-Key':'API_KEY'

};

$.ajax({
  url: '/products/apiDoc',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'API-Key':'API_KEY'

};

fetch('/products/apiDoc',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'API-Key' => 'API_KEY'
}

result = RestClient.get '/products/apiDoc',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'API-Key': 'API_KEY'
}

r = requests.get('/products/apiDoc', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/apiDoc");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "API-Key": []string{"API_KEY"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/products/apiDoc", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Return API definition document

GET /apiDoc

Return the OpenAPI document that describes this API.

Example responses

200 Response

{}

Responses

StatusDescription
200 OK
OK
Schema: Inline

Response Schema

getLabels

Code samples

# You can also use wget
curl -X GET /products/labels \
  -H 'Accept: application/hal+json' \
  -H 'Accept-Language: string' \
  -H 'API-Key: API_KEY'

GET /products/labels HTTP/1.1

Accept: application/hal+json
Accept-Language: string

var headers = {
  'Accept':'application/hal+json',
  'Accept-Language':'string',
  'API-Key':'API_KEY'

};

$.ajax({
  url: '/products/labels',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'Accept-Language':'string',
  'API-Key':'API_KEY'

};

fetch('/products/labels',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'Accept-Language' => 'string',
  'API-Key' => 'API_KEY'
}

result = RestClient.get '/products/labels',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'Accept-Language': 'string',
  'API-Key': 'API_KEY'
}

r = requests.get('/products/labels', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/labels");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "Accept-Language": []string{"string"},
        "API-Key": []string{"API_KEY"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/products/labels", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Localized Labels

GET /labels

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).

Parameters

Parameter Description
Accept-Language
(header)
string
The weighted language tags which indicate the user's preferred natural language for the localized labels in the response, as per RFC 7231.

Example responses

200 Response

{
  "property1": {
    "label": "Limited Liability Corporation",
    "description": "string",
    "language": "en-us",
    "code": "31"
  },
  "property2": {
    "label": "Limited Liability Corporation",
    "description": "string",
    "language": "en-us",
    "code": "31"
  }
}

Responses

StatusDescription
200 OK
OK
Schema: localizedLabels

Product

Banking Products

getProducts

Code samples

# You can also use wget
curl -X GET /products/products \
  -H 'Accept: application/hal+json' \
  -H 'API-Key: API_KEY'

GET /products/products HTTP/1.1

Accept: application/hal+json

var headers = {
  'Accept':'application/hal+json',
  'API-Key':'API_KEY'

};

$.ajax({
  url: '/products/products',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'API-Key':'API_KEY'

};

fetch('/products/products',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'API-Key' => 'API_KEY'
}

result = RestClient.get '/products/products',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'API-Key': 'API_KEY'
}

r = requests.get('/products/products', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/products");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "API-Key": []string{"API_KEY"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/products/products", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Return a collection of products

GET /products

Return a paginated sortable filterable searchable collection of products. The links in the response include pagination links.

Parameters

Parameter Description
start
(query)
integer(int64)
The zero-based index of the first product in this page. The default, 0, represents the first page of the collection.
limit
(query)
integer(int32)
The maximum number of product representations to return in this page.
sortBy
(query)
string
Optional sort criteria. See sort criteria format, such as ?sortBy=field1,-field2.
name
(query)
string
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.
type
(query)
string
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.
code
(query)
string
Subset the products or product types collection to those whose code matches this value. Use | to separate multiple values. For example, ?type=B2001 will match only items whose type is B2001, but ?type=B2001|B3002 will match items whose type is B2001 or B3002. This is combined with an implicit and with ?state ?filter if they are used. See filtering.
category
(query)
string
Subset the products or product types collection to those whose category matches this value. Use | to separate multiple values. For example, ?category=Savings will match only items whose category is Savings, but ?category=Savings|Checking will match items whose type is Savings or Checking. This is combined with an implicit and with other filters if they are used. See filtering.
state
(query)
string
Subset the products or product types collection to those whose state matches this value. Use | to separate multiple values. For example, ?state=pending will match only items whose state is pending; ?state=removed|inactive will match items whose state is removed or inactive. This is combined with an implicit and with other filters if they are used. See filtering.
Enumerated values:
pending
active
inactive
removed
target
(query)
string
Subset the products or product types collection to those whose target matches this value (personal or business). For example, ?target=personal will match only items whose target is personal. This is combined with an implicit and with other filters if they are used. See filtering.
Enumerated values:
personal
business
ifxType
(query)
string
Subset the products collection to those whose ifxType
matches this value. Use | to separate multiple values. For example,

?ifxType=SDA will match only items whose ifxType is SDA; ?ifxType=SDA|DDA will match items whose ifxType is SDA or DDA. This is combined with an implicit and with other filters if they are used. See filtering. | |filter
(query) | string
Optional filter criteria. See filtering. | |q
(query) | string
Optional search string. See searching. | |openable
(query) | boolean
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 . | |newAccountAvailability
(query) | string
Subset the result to only those whose newAccountAvailability property matches this value.
Enumerated values:
available
notAvailable| |productType
(query) | string
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.) |

Example responses

200 Response

{
  "_profile": "https://api.apiture.com/schemas/products/products/v1.0.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",
        "revision": {},
        "rate": {
          "value": "1.40",
          "type": "apr"
        },
        "_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"
          }
        }
      }
    ]
  }
}

Responses

StatusDescription
200 OK
OK
Schema: products
400 Bad Request
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.
Schema: errorResponse
409 Conflict
Conflict. Query parameters are in conflict. Do not use both ?orderable= and ?state= query parameters.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

createProduct

Code samples

# You can also use wget
curl -X POST /products/products \
  -H 'Content-Type: application/hal+json' \
  -H 'Accept: application/hal+json' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

POST /products/products HTTP/1.1

Content-Type: application/hal+json
Accept: application/hal+json

var headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/products',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "name": "Business Checking",
  "label": "Business Checking",
  "description": "A demand deposit checking account for business use.",
  "code": "B2001",
  "category": "Checking",
  "rate": {
    "value": "1.40",
    "type": "apr"
  },
  "_links": {
    "apiture:productSubtype": {
      "href": "/products/productTypes/b2134f56-3645-490d-a788-79e974635ae8"
    }
  }
}';
const headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/products',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/hal+json',
  'Accept' => 'application/hal+json',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/products/products',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/hal+json',
  'Accept': 'application/hal+json',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/products/products', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/products");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/hal+json"},
        "Accept": []string{"application/hal+json"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/products/products", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Create a new product

POST /products

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.

Body parameter

{
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "name": "Business Checking",
  "label": "Business Checking",
  "description": "A demand deposit checking account for business use.",
  "code": "B2001",
  "category": "Checking",
  "rate": {
    "value": "1.40",
    "type": "apr"
  },
  "_links": {
    "apiture:productSubtype": {
      "href": "/products/productTypes/b2134f56-3645-490d-a788-79e974635ae8"
    }
  }
}

Parameters

Parameter Description
copyOf
(query)
string(uri)
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.
body
(body)
createProduct (required)
The data necessary to create a new product.

Example responses

201 Response

{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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.0/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.0/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"
        }
      }
    }
  },
  "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",
  "ifxType": "DDA"
}

Responses

StatusDescription
201 Created
Created
Schema: product
400 Bad Request
Bad Request. One of the request parameters to create a product was not valid. See _error for more information
Schema: errorResponse
409 Conflict

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.
Schema: errorResponse

Response Headers

StatusDescription
201 Location string uri
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 .
201 Content-Location string
The Content-Location will contain the URI of the specific revision corresponding to this new product resource.
201 ETag string
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.

getProduct

Code samples

# You can also use wget
curl -X GET /products/products/{productId} \
  -H 'Accept: application/hal+json' \
  -H 'If-None-Match: string' \
  -H 'API-Key: API_KEY'

GET /products/products/{productId} HTTP/1.1

Accept: application/hal+json
If-None-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-None-Match':'string',
  'API-Key':'API_KEY'

};

$.ajax({
  url: '/products/products/{productId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-None-Match':'string',
  'API-Key':'API_KEY'

};

fetch('/products/products/{productId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-None-Match' => 'string',
  'API-Key' => 'API_KEY'
}

result = RestClient.get '/products/products/{productId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-None-Match': 'string',
  'API-Key': 'API_KEY'
}

r = requests.get('/products/products/{productId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/products/{productId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-None-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/products/products/{productId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Fetch a representation of this product

GET /products/{productId}

Return a HAL representation of this product resource.

This resource also maintains immutable revisions; see the getProductRevisions and getProductRevision operations. The Content-Location response header, if present, identifies the equivalent revision.

Parameters

Parameter Description
productId
(path)
string (required)
The unique identifier of this product. This is an opaque string.
If-None-Match
(header)
string
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.

Example responses

200 Response

{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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.0/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.0/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"
        }
      }
    }
  },
  "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",
  "ifxType": "DDA"
}

Responses

StatusDescription
200 OK
OK
Schema: product
304 Not Modified
Not Modified. The resource has not been modified since it was last fetched.
404 Not Found
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.
Schema: errorResponse
412 Precondition Failed
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.
Schema: errorResponse

Response Headers

StatusDescription
200 ETag string
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.
200 Content-Location string
The Content-Location will contain the URI of the specific revision corresponding to this product resource.

updateProduct

Code samples

# You can also use wget
curl -X PUT /products/products/{productId} \
  -H 'Content-Type: application/hal+json' \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

PUT /products/products/{productId} HTTP/1.1

Content-Type: application/hal+json
Accept: application/hal+json
If-Match: string

var headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/products/{productId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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.0/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.0/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"
        }
      }
    }
  },
  "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",
  "ifxType": "DDA"
}';
const headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/products/{productId}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/hal+json',
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/products/products/{productId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/hal+json',
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/products/products/{productId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/products/{productId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/hal+json"},
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/products/products/{productId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Update this product

PUT /products/{productId}

Perform a complete replacement of this product. This creates a new product revision. 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.

Body parameter

{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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.0/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.0/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"
        }
      }
    }
  },
  "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",
  "ifxType": "DDA"
}

Parameters

Parameter Description
productId
(path)
string (required)
The unique identifier of this product. This is an opaque string.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.
body
(body)
product (required)

Example responses

200 Response

{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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.0/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.0/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"
        }
      }
    }
  },
  "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",
  "ifxType": "DDA"
}

Responses

StatusDescription
200 OK
OK
Schema: product
400 Bad Request
Bad Request. One of the request parameters to update a product was not valid. See _error for more information
Schema: errorResponse
404 Not Found
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.
Schema: errorResponse
412 Precondition Failed
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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

Response Headers

StatusDescription
200 Content-Location string
The Content-Location will contain the URI of the specific revision corresponding to this product resource.
200 ETag string
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.

patchProduct

Code samples

# You can also use wget
curl -X PATCH /products/products/{productId} \
  -H 'Content-Type: application/hal+json' \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

PATCH /products/products/{productId} HTTP/1.1

Content-Type: application/hal+json
Accept: application/hal+json
If-Match: string

var headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/products/{productId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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.0/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.0/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"
        }
      }
    }
  },
  "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",
  "ifxType": "DDA"
}';
const headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/products/{productId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/hal+json',
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/products/products/{productId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/hal+json',
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/products/products/{productId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/products/{productId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/hal+json"},
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/products/products/{productId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Update this product

PATCH /products/{productId}

Perform a partial update of this product. This creates a new product revision. 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.

Body parameter

{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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.0/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.0/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"
        }
      }
    }
  },
  "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",
  "ifxType": "DDA"
}

Parameters

Parameter Description
productId
(path)
string (required)
The unique identifier of this product. This is an opaque string.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.
body
(body)
product (required)

Example responses

200 Response

{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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.0/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.0/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"
        }
      }
    }
  },
  "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",
  "ifxType": "DDA"
}

Responses

StatusDescription
200 OK
OK
Schema: product
400 Bad Request
Bad Request. One of the request parameters to patch a product was not valid. See _error for more information
Schema: errorResponse
404 Not Found
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.
Schema: errorResponse
409 Conflict

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.
Schema: errorResponse
412 Precondition Failed
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.
Schema: errorResponse
422 Unprocessable Entity
unprocessableEntity. The _id and newAccountAvailability cannot be changed
Schema: errorResponse

Response Headers

StatusDescription
200 Content-Location string
The Content-Location will contain the URI of the specific revision corresponding to this product resource.
200 ETag string
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.

deleteProduct

Code samples

# You can also use wget
curl -X DELETE /products/products/{productId} \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

DELETE /products/products/{productId} HTTP/1.1

Accept: application/hal+json
If-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/products/{productId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/products/{productId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/products/products/{productId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/products/products/{productId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/products/{productId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/products/products/{productId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Delete this product resource

DELETE /products/{productId}

Delete this product resource and any resources that are owned by it. A product may only be deleted if its state is pending.

Parameters

Parameter Description
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.
productId
(path)
string (required)
The unique identifier of this product. This is an opaque string.

Example responses

400 Response

{
  "_profile": "https://api.apiture.com/schemas/common/errorResponse/v1.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": []
    }
  }
}

Responses

StatusDescription
204 No Content
No Content. The resource was deleted successfully.
400 Bad Request
Bad Request. One of the request parameters to delete a product was not valid. See _error for more information
Schema: errorResponse
409 Conflict
Conflict. A product may not be deleted if the state is anything other than pending.
Schema: errorResponse
412 Precondition Failed
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.
Schema: errorResponse

getProductRevisions

Code samples

# You can also use wget
curl -X GET /products/products/{productId}/revisions \
  -H 'Accept: application/hal+json' \
  -H 'API-Key: API_KEY'

GET /products/products/{productId}/revisions HTTP/1.1

Accept: application/hal+json

var headers = {
  'Accept':'application/hal+json',
  'API-Key':'API_KEY'

};

$.ajax({
  url: '/products/products/{productId}/revisions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'API-Key':'API_KEY'

};

fetch('/products/products/{productId}/revisions',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'API-Key' => 'API_KEY'
}

result = RestClient.get '/products/products/{productId}/revisions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'API-Key': 'API_KEY'
}

r = requests.get('/products/products/{productId}/revisions', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/products/{productId}/revisions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "API-Key": []string{"API_KEY"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/products/products/{productId}/revisions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Return a collection of product revisions

GET /products/{productId}/revisions

Return a paginated sortable filterable searchable collection of product revisions. The links in the response include pagination links.

Parameters

Parameter Description
productId
(path)
string (required)
The unique identifier of this product. This is an opaque string.
start
(query)
integer(int64)
The zero-based index of the first product revision item to include in this page. The default 0 denotes the beginning of the collection.
limit
(query)
integer(int32)
The maximum number of product representations to return in this page.
sortBy
(query)
string
Optional sort criteria. Revision collections are sorted by default in reverse chronological order (most recent revision first). See sort criteria format, such as ?sortBy=field1,-field2.
filter
(query)
string
Optional filter criteria. See filtering.
q
(query)
string
Optional search string. See searching.

Example responses

200 Response

{
  "_profile": "https://api.apiture.com/schemas/products/products/v1.0.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",
        "revision": {},
        "rate": {
          "value": "1.40",
          "type": "apr"
        },
        "_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"
          }
        }
      }
    ]
  }
}

Responses

StatusDescription
200 OK
OK
Schema: products
400 Bad Request
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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

getProductRevision

Code samples

# You can also use wget
curl -X GET /products/products/{productId}/revisions/{revisionId} \
  -H 'Accept: application/hal+json' \
  -H 'If-None-Match: string' \
  -H 'API-Key: API_KEY'

GET /products/products/{productId}/revisions/{revisionId} HTTP/1.1

Accept: application/hal+json
If-None-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-None-Match':'string',
  'API-Key':'API_KEY'

};

$.ajax({
  url: '/products/products/{productId}/revisions/{revisionId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-None-Match':'string',
  'API-Key':'API_KEY'

};

fetch('/products/products/{productId}/revisions/{revisionId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-None-Match' => 'string',
  'API-Key' => 'API_KEY'
}

result = RestClient.get '/products/products/{productId}/revisions/{revisionId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-None-Match': 'string',
  'API-Key': 'API_KEY'
}

r = requests.get('/products/products/{productId}/revisions/{revisionId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/products/{productId}/revisions/{revisionId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-None-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/products/products/{productId}/revisions/{revisionId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Fetch a representation of an immutable revision of this product

GET /products/{productId}/revisions/{revisionId}

Return an immutable HAL representation of this revision of this product resource. The revision may also have prev and next links to previous and/or next revisions, if they exist.

Parameters

Parameter Description
productId
(path)
string (required)
The unique identifier of this product. This is an opaque string.
revisionId
(path)
string (required)
The identifier for a revision of this resource. Revision identifiers are strings in RFC 3339 format: YYYY-MM-DDThh:mm:ss.sssZ.
If-None-Match
(header)
string
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.

Example responses

200 Response

{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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.0/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.0/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"
        }
      }
    }
  },
  "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",
  "ifxType": "DDA"
}

Responses

StatusDescription
200 OK
OK
Schema: product
304 Not Modified
Not Modified. The resource has not been modified since it was last fetched.
404 Not Found
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.
Schema: errorResponse
412 Precondition Failed
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.
Schema: errorResponse

Response Headers

StatusDescription
200 ETag string
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.

unlockProduct

Code samples

# You can also use wget
curl -X POST /products/unlockedProducts?product=string \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

POST /products/unlockedProducts?product=string HTTP/1.1

Accept: application/hal+json
If-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/unlockedProducts',
  method: 'post',
  data: '?product=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/unlockedProducts?product=string',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/products/unlockedProducts',
  params: {
  'product' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/products/unlockedProducts', params={
  'product': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("/products/unlockedProducts?product=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/products/unlockedProducts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Marks an active product as eligible for new account opening

POST /unlockedProducts

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.

Parameters

Parameter Description
product
(query)
string (required)
A server-supplied value which identifies the product instance.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
400 Bad Request
Bad Request. The product was malformed or does not refer to a product.
409 Conflict

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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

lockProduct

Code samples

# You can also use wget
curl -X POST /products/lockedProducts?product=string \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

POST /products/lockedProducts?product=string HTTP/1.1

Accept: application/hal+json
If-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/lockedProducts',
  method: 'post',
  data: '?product=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/lockedProducts?product=string',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/products/lockedProducts',
  params: {
  'product' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/products/lockedProducts', params={
  'product': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("/products/lockedProducts?product=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/products/lockedProducts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Marks an active product as ineligible for new account opening

POST /lockedProducts

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.

Parameters

Parameter Description
product
(query)
string (required)
A server-supplied value which identifies the product instance.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
400 Bad Request
Bad Request. The product was malformed or does not refer to a product.
409 Conflict

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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

activateProduct

Code samples

# You can also use wget
curl -X POST /products/activeProducts?product=string \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

POST /products/activeProducts?product=string HTTP/1.1

Accept: application/hal+json
If-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/activeProducts',
  method: 'post',
  data: '?product=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/activeProducts?product=string',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/products/activeProducts',
  params: {
  'product' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/products/activeProducts', params={
  'product': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("/products/activeProducts?product=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/products/activeProducts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Activate a product

POST /activeProducts

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.

Parameters

Parameter Description
product
(query)
string (required)
A server-supplied value which identifies the product instance.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
400 Bad Request
Bad Request. The product was malformed or does not refer to a product.
409 Conflict

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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

deactivateProduct

Code samples

# You can also use wget
curl -X POST /products/inactiveProducts?product=string \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

POST /products/inactiveProducts?product=string HTTP/1.1

Accept: application/hal+json
If-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/inactiveProducts',
  method: 'post',
  data: '?product=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/inactiveProducts?product=string',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/products/inactiveProducts',
  params: {
  'product' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/products/inactiveProducts', params={
  'product': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("/products/inactiveProducts?product=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/products/inactiveProducts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Deactivate a product

POST /inactiveProducts

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.

Parameters

Parameter Description
product
(query)
string (required)
A server-supplied value which identifies the product instance.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
400 Bad Request
Bad Request. The product was malformed or does not refer to a product.
409 Conflict

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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

removeProduct

Code samples

# You can also use wget
curl -X POST /products/removedProducts?product=string \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

POST /products/removedProducts?product=string HTTP/1.1

Accept: application/hal+json
If-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/removedProducts',
  method: 'post',
  data: '?product=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/removedProducts?product=string',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/products/removedProducts',
  params: {
  'product' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/products/removedProducts', params={
  'product': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("/products/removedProducts?product=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/products/removedProducts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Remove a product

POST /removedProducts

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.

Parameters

Parameter Description
product
(query)
string (required)
A server-supplied value which identifies the product instance.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
400 Bad Request
Bad Request. The product was malformed or does not refer to a product.
409 Conflict

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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

Product Type

Banking Product Types

getProductTypes

Code samples

# You can also use wget
curl -X GET /products/productTypes \
  -H 'Accept: application/hal+json' \
  -H 'API-Key: API_KEY'

GET /products/productTypes HTTP/1.1

Accept: application/hal+json

var headers = {
  'Accept':'application/hal+json',
  'API-Key':'API_KEY'

};

$.ajax({
  url: '/products/productTypes',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'API-Key':'API_KEY'

};

fetch('/products/productTypes',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'API-Key' => 'API_KEY'
}

result = RestClient.get '/products/productTypes',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'API-Key': 'API_KEY'
}

r = requests.get('/products/productTypes', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/productTypes");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "API-Key": []string{"API_KEY"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/products/productTypes", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Return a collection of product types

GET /productTypes

Return a paginated sortable filterable searchable collection of product types. The links in the response include pagination links.

Parameters

Parameter Description
start
(query)
integer(int64)
The zero-based index of the first product type in this page. The default, 0, represents the first page of the collection.
limit
(query)
integer(int32)
The maximum number of product type representations to return in this page.
sortBy
(query)
string
Optional sort criteria. See sort criteria format, such as ?sortBy=field1,-field2.
name
(query)
string
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.
type
(query)
string
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.
subtype
(query)
boolean
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.
state
(query)
string
Subset the products or product types collection to those whose state matches this value. Use | to separate multiple values. For example, ?state=pending will match only items whose state is pending; ?state=removed|inactive will match items whose state is removed or inactive. This is combined with an implicit and with other filters if they are used. See filtering.
Enumerated values:
pending
active
inactive
removed
filter
(query)
string
Optional filter criteria. See filtering.
q
(query)
string
Optional search string. See searching.
parent
(query)
string
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.

Example responses

200 Response

{
  "_profile": "https://api.apiture.com/schemas/products/productsTypes/v1.0.0/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.0/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.0/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"
          }
        }
      }
    ]
  }
}

Responses

StatusDescription
200 OK
OK
Schema: productTypes
400 Bad Request
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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

createProductType

Code samples

# You can also use wget
curl -X POST /products/productTypes \
  -H 'Content-Type: application/hal+json' \
  -H 'Accept: application/hal+json' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

POST /products/productTypes HTTP/1.1

Content-Type: application/hal+json
Accept: application/hal+json

var headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/productTypes',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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"
    }
  }
}';
const headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/productTypes',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/hal+json',
  'Accept' => 'application/hal+json',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/products/productTypes',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/hal+json',
  'Accept': 'application/hal+json',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/products/productTypes', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/productTypes");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/hal+json"},
        "Accept": []string{"application/hal+json"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/products/productTypes", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Create a new product type

POST /productTypes

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.

Body parameter

{
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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"
    }
  }
}

Parameters

Parameter Description
copyOf
(query)
string(uri)
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.
body
(body)
createProductType (required)
The data necessary to create a new product type.

Example responses

201 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
201 Created
Created
Schema: productType
400 Bad Request
Bad Request. One of the request parameters to create a productType was not valid. See _error for more information
Schema: errorResponse
409 Conflict

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.
Schema: errorResponse

Response Headers

StatusDescription
201 Location string uri
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 .
201 ETag string
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.

getProductType

Code samples

# You can also use wget
curl -X GET /products/productTypes/{productTypeId} \
  -H 'Accept: application/hal+json' \
  -H 'If-None-Match: string' \
  -H 'API-Key: API_KEY'

GET /products/productTypes/{productTypeId} HTTP/1.1

Accept: application/hal+json
If-None-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-None-Match':'string',
  'API-Key':'API_KEY'

};

$.ajax({
  url: '/products/productTypes/{productTypeId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-None-Match':'string',
  'API-Key':'API_KEY'

};

fetch('/products/productTypes/{productTypeId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-None-Match' => 'string',
  'API-Key' => 'API_KEY'
}

result = RestClient.get '/products/productTypes/{productTypeId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-None-Match': 'string',
  'API-Key': 'API_KEY'
}

r = requests.get('/products/productTypes/{productTypeId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/productTypes/{productTypeId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-None-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/products/productTypes/{productTypeId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Fetch a representation of this product type.

GET /productTypes/{productTypeId}

Return a 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.

Parameters

Parameter Description
productTypeId
(path)
string (required)
The unique identifier of this product type. This is an opaque string.
If-None-Match
(header)
string
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.

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
304 Not Modified
Not Modified. The resource has not been modified since it was last fetched.
404 Not Found
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.
Schema: errorResponse

Response Headers

StatusDescription
200 ETag string
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.

updateProductType

Code samples

# You can also use wget
curl -X PUT /products/productTypes/{productTypeId} \
  -H 'Content-Type: application/hal+json' \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

PUT /products/productTypes/{productTypeId} HTTP/1.1

Content-Type: application/hal+json
Accept: application/hal+json
If-Match: string

var headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/productTypes/{productTypeId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}';
const headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/productTypes/{productTypeId}',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/hal+json',
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/products/productTypes/{productTypeId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/hal+json',
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/products/productTypes/{productTypeId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/productTypes/{productTypeId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/hal+json"},
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/products/productTypes/{productTypeId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Update this product type

PUT /productTypes/{productTypeId}

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.

Body parameter

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Parameters

Parameter Description
productTypeId
(path)
string (required)
The unique identifier of this product type. This is an opaque string.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.
body
(body)
productType (required)

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
400 Bad Request
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.
Schema: errorResponse
404 Not Found
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.
Schema: errorResponse
409 Conflict

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.
Schema: errorResponse
412 Precondition Failed
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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

Response Headers

StatusDescription
200 ETag string
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.

patchProductType

Code samples

# You can also use wget
curl -X PATCH /products/productTypes/{productTypeId} \
  -H 'Content-Type: application/hal+json' \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

PATCH /products/productTypes/{productTypeId} HTTP/1.1

Content-Type: application/hal+json
Accept: application/hal+json
If-Match: string

var headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/productTypes/{productTypeId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = '{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}';
const headers = {
  'Content-Type':'application/hal+json',
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/productTypes/{productTypeId}',
{
  method: 'PATCH',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/hal+json',
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.patch '/products/productTypes/{productTypeId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/hal+json',
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('/products/productTypes/{productTypeId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/productTypes/{productTypeId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/hal+json"},
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/products/productTypes/{productTypeId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Update this product type

PATCH /productTypes/{productTypeId}

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.

Body parameter

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Parameters

Parameter Description
productTypeId
(path)
string (required)
The unique identifier of this product type. This is an opaque string.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.
body
(body)
productType (required)

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
400 Bad Request
Bad Request. One of the request parameters to patch a productType was not valid. See _error for more information
Schema: errorResponse
404 Not Found
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.
Schema: errorResponse
409 Conflict

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.
Schema: errorResponse
412 Precondition Failed
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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

Response Headers

StatusDescription
200 ETag string
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.

deleteProductType

Code samples

# You can also use wget
curl -X DELETE /products/productTypes/{productTypeId} \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

DELETE /products/productTypes/{productTypeId} HTTP/1.1

Accept: application/hal+json
If-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/productTypes/{productTypeId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/productTypes/{productTypeId}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.delete '/products/productTypes/{productTypeId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('/products/productTypes/{productTypeId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/productTypes/{productTypeId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/products/productTypes/{productTypeId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Delete this product type resource

DELETE /productTypes/{productTypeId}

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.

Parameters

Parameter Description
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.
productTypeId
(path)
string (required)
The unique identifier of this product type. This is an opaque string.

Example responses

409 Response

{
  "_profile": "https://api.apiture.com/schemas/common/errorResponse/v1.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": []
    }
  }
}

Responses

StatusDescription
204 No Content
No Content. The resource was deleted successfully.
409 Conflict
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.
Schema: errorResponse
412 Precondition Failed
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.
Schema: errorResponse

activateProductType

Code samples

# You can also use wget
curl -X POST /products/activeProductTypes?productType=string \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

POST /products/activeProductTypes?productType=string HTTP/1.1

Accept: application/hal+json
If-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/activeProductTypes',
  method: 'post',
  data: '?productType=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/activeProductTypes?productType=string',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/products/activeProductTypes',
  params: {
  'productType' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/products/activeProductTypes', params={
  'productType': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("/products/activeProductTypes?productType=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/products/activeProductTypes", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Activate a product type

POST /activeProductTypes

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.

Parameters

Parameter Description
productType
(query)
string (required)
A server-supplied value which identifies the product type instance.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
400 Bad Request
Bad Request. The productType was malformed or does not refer to a product type.
409 Conflict

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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

deactivateProductType

Code samples

# You can also use wget
curl -X POST /products/inactiveProductTypes?productType=string \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

POST /products/inactiveProductTypes?productType=string HTTP/1.1

Accept: application/hal+json
If-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/inactiveProductTypes',
  method: 'post',
  data: '?productType=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/inactiveProductTypes?productType=string',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/products/inactiveProductTypes',
  params: {
  'productType' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/products/inactiveProductTypes', params={
  'productType': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("/products/inactiveProductTypes?productType=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/products/inactiveProductTypes", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Deactivate a product type

POST /inactiveProductTypes

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.

Parameters

Parameter Description
productType
(query)
string (required)
A server-supplied value which identifies the product type instance.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
400 Bad Request
Bad Request. The productType was malformed or does not refer to a product type.
409 Conflict

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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

removeProductType

Code samples

# You can also use wget
curl -X POST /products/removedProductTypes?productType=string \
  -H 'Accept: application/hal+json' \
  -H 'If-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

POST /products/removedProductTypes?productType=string HTTP/1.1

Accept: application/hal+json
If-Match: string

var headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/removedProductTypes',
  method: 'post',
  data: '?productType=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/hal+json',
  'If-Match':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/removedProductTypes?productType=string',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/hal+json',
  'If-Match' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/products/removedProductTypes',
  params: {
  'productType' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/hal+json',
  'If-Match': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('/products/removedProductTypes', params={
  'productType': 'string'
}, headers = headers)

print r.json()

URL obj = new URL("/products/removedProductTypes?productType=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/hal+json"},
        "If-Match": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/products/removedProductTypes", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Remove a product type

POST /removedProductTypes

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.

Parameters

Parameter Description
productType
(query)
string (required)
A server-supplied value which identifies the product type instance.
If-Match
(header)
string
The entity tag that was returned in the ETag response. This must match the current entity tag of the resource.

Example responses

200 Response

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Responses

StatusDescription
200 OK
OK
Schema: productType
400 Bad Request
Bad Request. The productType was malformed or does not refer to a product type.
409 Conflict

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.
Schema: errorResponse
422 Unprocessable Entity
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.
Schema: errorResponse

Account Verification Letter Template

getVerificationLetterTemplate

Code samples

# You can also use wget
curl -X GET /products/products/{productId}/verificationLetterTemplate \
  -H 'Accept: text/markdown' \
  -H 'Accept: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

GET /products/products/{productId}/verificationLetterTemplate HTTP/1.1

Accept: text/markdown
Accept: string

var headers = {
  'Accept':'text/markdown',
  'Accept':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/products/{productId}/verificationLetterTemplate',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');

const headers = {
  'Accept':'text/markdown',
  'Accept':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/products/{productId}/verificationLetterTemplate',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'text/markdown',
  'Accept' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/products/products/{productId}/verificationLetterTemplate',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'text/markdown',
  'Accept': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('/products/products/{productId}/verificationLetterTemplate', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/products/{productId}/verificationLetterTemplate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"text/markdown"},
        "Accept": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/products/products/{productId}/verificationLetterTemplate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Fetch an account verification letter template

GET /products/{productId}/verificationLetterTemplate

Return a representation of account verification letter template for this product. This is a Mustache template. The content is Github Flavored Markdown with Mustache template variables for replaceable text.

The variables in the template are:

This template is used to format the account verification letter in the createVerificationLetter operation in the Accounts API.

Parameters

Parameter Description
productId
(path)
string (required)
The unique identifier of this product. This is an opaque string.
Accept
(header)
string
The media type of the desired response representation. Only text/markdown is currently supported.

Example responses

200 Response

404 Response

{
  "_profile": "https://api.apiture.com/schemas/common/errorResponse/v1.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": []
    }
  }
}

Responses

StatusDescription
200 OK
Markdown template for the account verifications letter template.
Schema: string
404 Not Found
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.
Schema: errorResponse
406 Not Acceptable
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)
Schema: errorResponse

Response Headers

StatusDescription
200 Content-Type string
The media type of the response representation. The Content-Type will be text/markdown.

updateVerificationLetterTemplate

Code samples

# You can also use wget
curl -X PUT /products/products/{productId}/verificationLetterTemplate \
  -H 'Content-Type: text/markdown' \
  -H 'Accept: text/markdown' \
  -H 'Accept: string' \
  -H 'Content-Type: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

PUT /products/products/{productId}/verificationLetterTemplate HTTP/1.1

Content-Type: text/markdown
Accept: text/markdown
Accept: string
Content-Type: string

var headers = {
  'Content-Type':'text/markdown',
  'Accept':'text/markdown',
  'Accept':'string',
  'Content-Type':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

$.ajax({
  url: '/products/products/{productId}/verificationLetterTemplate',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

const fetch = require('node-fetch');
const inputBody = 'string';
const headers = {
  'Content-Type':'text/markdown',
  'Accept':'text/markdown',
  'Accept':'string',
  'Content-Type':'string',
  'API-Key':'API_KEY',
  'Authorization':'Bearer {access-token}'

};

fetch('/products/products/{productId}/verificationLetterTemplate',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'text/markdown',
  'Accept' => 'text/markdown',
  'Accept' => 'string',
  'Content-Type' => 'string',
  'API-Key' => 'API_KEY',
  'Authorization' => 'Bearer {access-token}'
}

result = RestClient.put '/products/products/{productId}/verificationLetterTemplate',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'text/markdown',
  'Accept': 'text/markdown',
  'Accept': 'string',
  'Content-Type': 'string',
  'API-Key': 'API_KEY',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('/products/products/{productId}/verificationLetterTemplate', params={

}, headers = headers)

print r.json()

URL obj = new URL("/products/products/{productId}/verificationLetterTemplate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"text/markdown"},
        "Accept": []string{"text/markdown"},
        "Accept": []string{"string"},
        "Content-Type": []string{"string"},
        "API-Key": []string{"API_KEY"},
        "Authorization": []string{"Bearer {access-token}"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/products/products/{productId}/verificationLetterTemplate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Update this account verification letter template

PUT /products/{productId}/verificationLetterTemplate

Set or replace the account verification letter template for this product.

Body parameter

Parameters

Parameter Description
productId
(path)
string (required)
The unique identifier of this product. This is an opaque string.
Accept
(header)
string
The media type of the desired response representation. Only text/markdown is currently supported.
Content-Type
(header)
string
The media type of the request body representation. Only text/markdown is currently supported.
body
(body)
string (required)
The Github Flavored Markdown text (with Mustache variables) defining the template for the verification letter.

Example responses

200 Response

404 Response

{
  "_profile": "https://api.apiture.com/schemas/common/errorResponse/v1.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": []
    }
  }
}

Responses

StatusDescription
200 OK
OK
Schema: string
404 Not Found
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.
Schema: errorResponse

Response Headers

StatusDescription
200 Content-Type string
The media type of the response representation. The Content-Type will be text/markdown.

Schemas

productTypeFields

{
  "state": "pending",
  "name": "string",
  "label": "string",
  "description": "string",
  "subtype": true
}

Product Type Fields

Common fields of the product type resource.

Properties

NameDescription
state string
The state of this product or product type. New resources are pending by default and must be activated before they may be used.

  • pending is a new product or type that is not yet active. Only pending items may be deleted. This is the default state. Products and product types must be activated before they may be used. POST to the apiture:activate link on a resource to activate it. * active is an item that is in use or available for use. * inactive is an item that is no longer in use or available for use. An item cannot be changed to inactive if any other resource is using it. For example, a product type may not be set to inactive if any active product is of that type; a product may not be set to inactive if there are any active accounts for that product. * removed Removed and archived. Removed items are not eligible to be activated. When an account is removed, it's name is changed so that the name may be used for new products or product types.

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.


Enumerated values:
pending
active
inactive
removed

name string
The name of this product type.
minLength: 1
maxLength: 128
label string
The text label for this product type. This field may be localized.
minLength: 1
maxLength: 128
description string(markdown)
A fuller description of this product type. This field may be localized. The content is processed as Github Flavored Markdown and thus supports rich text.
minLength: 1
maxLength: 4096
subtype boolean
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.

ifxType

"CCA"

IFX Account Type

A code which identifies the product type. This is one of the IFX AcctType values.

Type: string
Enumerated values:
CCA
CDA
CLA
CMA
DDA
EQU
GLA
ILA
INV
IRA
IRL
LOC
MLA
MMA
PBA
PPA
RWD
SDA

summaryProductType

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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
}

Product Type Summary

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.

Properties

NameDescription
state string
The state of this product or product type. New resources are pending by default and must be activated before they may be used.

  • pending is a new product or type that is not yet active. Only pending items may be deleted. This is the default state. Products and product types must be activated before they may be used. POST to the apiture:activate link on a resource to activate it. * active is an item that is in use or available for use. * inactive is an item that is no longer in use or available for use. An item cannot be changed to inactive if any other resource is using it. For example, a product type may not be set to inactive if any active product is of that type; a product may not be set to inactive if there are any active accounts for that product. * removed Removed and archived. Removed items are not eligible to be activated. When an account is removed, it's name is changed so that the name may be used for new products or product types.

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.


Enumerated values:
pending
active
inactive
removed

name string
The name of this product type.
minLength: 1
maxLength: 128
label string
The text label for this product type. This field may be localized.
minLength: 1
maxLength: 128
description string(markdown)
A fuller description of this product type. This field may be localized. The content is processed as Github Flavored Markdown and thus supports rich text.
minLength: 1
maxLength: 4096
subtype boolean
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.
_links object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
» additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.
_embedded object
An optional map of nested resources, mapping each nested resource name to a nested resource representation.
_profile string(uri)
The URI of a resource profile which describes the representation.
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
_id string
The unique identifier for this product type resource. This is an opaque string.

createProductType

{
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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"
    }
  }
}

Create Product Type

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. * apiture:productType A link to the product type resource for this product.

Properties

NameDescription
_links object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
» additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.
_embedded object
An optional map of nested resources, mapping each nested resource name to a nested resource representation.
_profile string(uri)
The URI of a resource profile which describes the representation.
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
state string
The state of this product or product type. New resources are pending by default and must be activated before they may be used.

  • pending is a new product or type that is not yet active. Only pending items may be deleted. This is the default state. Products and product types must be activated before they may be used. POST to the apiture:activate link on a resource to activate it. * active is an item that is in use or available for use. * inactive is an item that is no longer in use or available for use. An item cannot be changed to inactive if any other resource is using it. For example, a product type may not be set to inactive if any active product is of that type; a product may not be set to inactive if there are any active accounts for that product. * removed Removed and archived. Removed items are not eligible to be activated. When an account is removed, it's name is changed so that the name may be used for new products or product types.

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.


Enumerated values:
pending
active
inactive
removed

name string (required)
The name of this product type.
minLength: 1
maxLength: 128
label string (required)
The text label for this product type. This field may be localized.
minLength: 1
maxLength: 128
description string(markdown) (required)
A fuller description of this product type. This field may be localized. The content is processed as Github Flavored Markdown and thus supports rich text.
minLength: 1
maxLength: 4096
subtype boolean
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.
attributes object
An optional map of name/value pairs which provide additional metadata about the product type.

productType

{
  "_id": "eccb54ed-0f0a-443b-9f2e-32d5b8f4371c",
  "_profile": "https://api.apiture.com/schemas/products/productType/v1.0.0/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.0/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
}

Product Type

Representation of a product type resource. The response may include links to related resources, in addition to the normal self link:

Properties

NameDescription
state string
The state of this product or product type. New resources are pending by default and must be activated before they may be used.

  • pending is a new product or type that is not yet active. Only pending items may be deleted. This is the default state. Products and product types must be activated before they may be used. POST to the apiture:activate link on a resource to activate it. * active is an item that is in use or available for use. * inactive is an item that is no longer in use or available for use. An item cannot be changed to inactive if any other resource is using it. For example, a product type may not be set to inactive if any active product is of that type; a product may not be set to inactive if there are any active accounts for that product. * removed Removed and archived. Removed items are not eligible to be activated. When an account is removed, it's name is changed so that the name may be used for new products or product types.

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.


Enumerated values:
pending
active
inactive
removed

name string
The name of this product type.
minLength: 1
maxLength: 128
label string
The text label for this product type. This field may be localized.
minLength: 1
maxLength: 128
description string(markdown)
A fuller description of this product type. This field may be localized. The content is processed as Github Flavored Markdown and thus supports rich text.
minLength: 1
maxLength: 4096
subtype boolean
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.
_links object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
» additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.
_embedded object
Embedded resources for this product type. This may contain the parent type, if any. _embedded may not appear if there are no embedded resources.
» parent productType
In subtypes, this is the parent type.
_profile string(uri)
The URI of a resource profile which describes the representation.
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
_id string
The unique identifier for this product type resource. This is an opaque string.
subtypeCount number(integer)
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.
read-only
createdAt string(date-time)
The date-time when this product type was created. This value is derived and immutable.
read-only
attributes object
An optional map of name/value pairs which provide additional metadata about the product type.

productTypes

{
  "_profile": "https://api.apiture.com/schemas/products/productsTypes/v1.0.0/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.0/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.0/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"
          }
        }
      }
    ]
  }
}

Product Type Collection

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).

Properties

NameDescription
_links object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
» additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.
_embedded object
Embedded objects.
» items [summaryProductType]
An array containing a page of product type items.
_profile string(uri)
The URI of a resource profile which describes the representation.
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
count integer
The number of items in the collection. This value is optional and my 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.
start integer
The start index of this page of items.
limit integer
The maximum number of items per page.
name string
The name of the collection.

fee

{
  "type": "service",
  "period": "P1M",
  "description": "string",
  "structure": "unknown",
  "amount": "1.00"
}

Fee

Fees that are attached to accounts of this product.

Properties

NameDescription
type string

The fee type.

  • service - servicing fee
  • minimumBalance - average monthly account balance is less than the product's constraints.minimumBalance
  • overdraft - fee assessed if user overdrafts (balance drops below the minimum balance)
  • returnedCheck - check is presented when the account has insufficient funds.
  • statementHardCopy - administration and postage to send physical copy of statement
  • atm - fee for Automatic Teller Machine (ATM) use outside of the financial institutions ATM network
  • foreignTransactions - fee due to foreign transactions
  • earlyClosing - if the acct is closed early as determined by the financial institution.
  • earlyWithdrawal - if a user withdraws funds from CD before the maturity date
  • other - Other fees, as described in the fee description


Enumerated values:
service
minimumBalance
overdraft
returnedCheck
statementHardCopy
atm
foreignTransactions
earlyClosing
earlyWithdrawal
other

period string
The period at which the fee is assessed. If omitted, the fee is assessed per transaction.

This value is an ISO 8601 duration 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).

description string
A description of the fee and its structure and period.
structure string
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.


Enumerated values:
unknown
variable
fixed

amount string
The amount of the (fixed) fee, in the product's currency.

transactionTypes

{}

Transaction Types

An array which lists which transaction types are allowed for an account.

Properties

transactionType

"debit"

Transaction Type

A string which defines a transaction type allowed for an account.

Type: string
Enumerated values:
debit
credit

summaryProduct

{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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"
    }
  },
  "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",
  "revision": "2018-04-25T07:56:46.375Z",
  "_embedded": {},
  "ifxType": "DDA"
}

Product Summary

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.

Properties

NameDescription
_links object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
» additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.
_embedded object
An optional map of nested resources, mapping each nested resource name to a nested resource representation.
_profile string(uri)
The URI of a resource profile which describes the representation.
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
state string
The state of this product or product type. New resources are pending by default and must be activated before they may be used.

  • pending is a new product or type that is not yet active. Only pending items may be deleted. This is the default state. Products and product types must be activated before they may be used. POST to the apiture:activate link on a resource to activate it. * active is an item that is in use or available for use. * inactive is an item that is no longer in use or available for use. An item cannot be changed to inactive if any other resource is using it. For example, a product type may not be set to inactive if any active product is of that type; a product may not be set to inactive if there are any active accounts for that product. * removed Removed and archived. Removed items are not eligible to be activated. When an account is removed, it's name is changed so that the name may be used for new products or product types.

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.


Enumerated values:
pending
active
inactive
removed

name string
The name of this product.
minLength: 1
maxLength: 128
label string
The text label for this product. This field may be localized.
minLength: 1
maxLength: 128
description string(markdown)
A fuller description of this product. This field may be localized. The content is processed as Github Flavored Markdown and thus supports rich text.
minLength: 1
maxLength: 4096
code string
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.
maxLength: 64
newAccountAvailability string

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 /accounts combines these.


Enumerated values:
available
notAvailable

category string
The product category name. This is a more readable form of the product's type.
rate rate
The interest rate for this product.
revision string
The revision string for this product. This property derived and immutable.
ifxType ifxType
The product IFX Account Type.
target string
Describes the target audience or consumer of the accounts, personal or business.


Enumerated values:
personal
business

effectiveStartAt string(date-time)
The date-time when this revision was created and became effective. This is an RFC 3339 formatted date-time string YYYY-MM-DDThh:mm:ss.sssZ. This field is derived and immutable.
effectiveEndAt string(date-time)
The date-time when the another revision became effective and this revision ceased being effective. This is an RFC 3339 formatted date-time string YYYY-MM-DDThh:mm:ss.sssZ. This field is derived and immutable and is not present until the revision is no longer active.
_id string
The unique identifier for this product resource. This is an immutable opaque string.
read-only
type string
The product type name, which is derived from the linked product type.
read-only
subtype string
The product subtype name, which is derived from the linked product subtype. This is a derived, immutable property.
read-only

timeDeposit

{
  "maturityPolicy": "rolloverPrincipalAndInterest",
  "minimumTerm": "P31D",
  "maximumTerm": {},
  "fees": "string"
}

Time Deposit Products

Properties of time deposit products, primarily Certificate of Deposit products.

Properties

NameDescription
maturityPolicy maturityPolicy
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).
minimumTerm string(period)
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, minimmumTerm and maximumTerm should be the same.

This value is an ISO 8601 duration 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.

maximumTerm string(date-time)
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, minimmumTerm and maximumTerm should be the same.

This value is an ISO 8601 duration 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.

fees string(period)
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 string of the form P[n]Y[n]M[n]D to specify the term in the number of years/months/days.

maturityPolicy

"rolloverPrincipalAndInterest"

Maturity Policy

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).

Type: string
Enumerated values:
rolloverPrincipalAndInterest
transferPrincipalAndInterest
rolloverPrincipalAndTransferInterest
holdPrincipalAndInterest
partialTransfer

createProduct

{
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "name": "Business Checking",
  "label": "Business Checking",
  "description": "A demand deposit checking account for business use.",
  "code": "B2001",
  "category": "Checking",
  "rate": {
    "value": "1.40",
    "type": "apr"
  },
  "_links": {
    "apiture:productSubtype": {
      "href": "/products/productTypes/b2134f56-3645-490d-a788-79e974635ae8"
    }
  }
}

Create Product

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).

Properties

NameDescription
_links object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
» additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.
_embedded object
An optional map of nested resources, mapping each nested resource name to a nested resource representation.
_profile string(uri)
The URI of a resource profile which describes the representation.
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
state string
The state of this product or product type. New resources are pending by default and must be activated before they may be used.

  • pending is a new product or type that is not yet active. Only pending items may be deleted. This is the default state. Products and product types must be activated before they may be used. POST to the apiture:activate link on a resource to activate it. * active is an item that is in use or available for use. * inactive is an item that is no longer in use or available for use. An item cannot be changed to inactive if any other resource is using it. For example, a product type may not be set to inactive if any active product is of that type; a product may not be set to inactive if there are any active accounts for that product. * removed Removed and archived. Removed items are not eligible to be activated. When an account is removed, it's name is changed so that the name may be used for new products or product types.

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.


Enumerated values:
pending
active
inactive
removed

name string (required)
The name of this product.
minLength: 1
maxLength: 128
label string (required)
The text label for this product. This field may be localized.
minLength: 1
maxLength: 128
description string(markdown) (required)
A fuller description of this product. This field may be localized. The content is processed as Github Flavored Markdown and thus supports rich text.
minLength: 1
maxLength: 4096
code string (required)
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.
maxLength: 64
newAccountAvailability string

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 /accounts combines these.


Enumerated values:
available
notAvailable

category string
The product category name. This is a more readable form of the product's type.
rate rate
The interest rate for this product.
revision string
The revision string for this product. This property derived and immutable.
ifxType ifxType
The product IFX Account Type.
target string
Describes the target audience or consumer of the accounts, personal or business.


Enumerated values:
personal
business

institutionName string
The name of the financial institution
minLength: 1
maxLength: 128
coreType string
Identifies the underlying bank core system.
onlineBankingEnabled boolean
true if this product is enabled and eligible for online banking.
currency string
The ISO 4217 currency code for this product.
minLength: 3
maxLength: 3
constraints object
Product constraints, such as minimum and maximum balances.
» transactionTypes transactionTypes
The types of transactions permitted for this account. Values which appear in this array are permitted.
» minimumBalance string
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.
» minimumFundingAmount string
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.
» maximumFundingAmount string
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.
» minimumTransferAmount string
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.
» maximumTransferAmount string
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.
» maximumWithdrawalCount number(integer)
The maximum number of withdrawals allowed per cycle. If not present, there is no hard limit.
» fundingTerm string(period)
The time limit within which account opening funding must occur after account creation. This is expressed as an ISO 8601 duration 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.
» depositsRestrictedAfterGracePeriod boolean
If true, deposits are not allowed after the rollover grace period (see gracePeriod). This applies to time deposit products only.
» depositsRestrictedAfterFunding boolean
If true, deposits are not allowed after the initial account funding has completed. This typically applies to time deposit products.
» gracePeriod any
A period of time after account rollover when additional deposits are allowed. This is an ISO 8601 duration 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
fees [fee]
Zero or more fees for accounts of this product. If the array is empty or not present, there are no fees.
statementFrequency string(period)
The frequency with which statememts are issued for accounts of this product. This is expressed as an ISO 8601 duration 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.
timeDeposit timeDeposit
Properties of time deposit products, primarily Certificate of Deposit products.
attributes object
An optional map of name/value pairs which provide additional metadata about the product.

product

{
  "_id": "a6459cdf-543e-46df-887b-ac5378ee9acd",
  "_profile": "https://api.apiture.com/schemas/products/product/v1.0.0/profile.json",
  "_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.0/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.0/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"
        }
      }
    }
  },
  "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",
  "ifxType": "DDA"
}

Product

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):

Properties

NameDescription
_links object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
» additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.
_embedded object
An optional map of nested resources, mapping each nested resource name to a nested resource representation. A product contains summary representation of the product type and subtype.
» productType summaryProductType
The product type resource.
» productSubtype summaryProductType
The product subtype resource.
_profile string(uri)
The URI of a resource profile which describes the representation.
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
state string
The state of this product or product type. New resources are pending by default and must be activated before they may be used.

  • pending is a new product or type that is not yet active. Only pending items may be deleted. This is the default state. Products and product types must be activated before they may be used. POST to the apiture:activate link on a resource to activate it. * active is an item that is in use or available for use. * inactive is an item that is no longer in use or available for use. An item cannot be changed to inactive if any other resource is using it. For example, a product type may not be set to inactive if any active product is of that type; a product may not be set to inactive if there are any active accounts for that product. * removed Removed and archived. Removed items are not eligible to be activated. When an account is removed, it's name is changed so that the name may be used for new products or product types.

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.


Enumerated values:
pending
active
inactive
removed

name string
The name of this product.
minLength: 1
maxLength: 128
label string
The text label for this product. This field may be localized.
minLength: 1
maxLength: 128
description string(markdown)
A fuller description of this product. This field may be localized. The content is processed as Github Flavored Markdown and thus supports rich text.
minLength: 1
maxLength: 4096
code string
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.
maxLength: 64
newAccountAvailability string

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 /accounts combines these.


Enumerated values:
available
notAvailable

category string
The product category name. This is a more readable form of the product's type.
rate rate
The interest rate for this product.
revision string
The revision string for this product. This property derived and immutable.
ifxType ifxType
The product IFX Account Type.
target string
Describes the target audience or consumer of the accounts, personal or business.


Enumerated values:
personal
business

effectiveStartAt string(date-time)
The date-time when this revision was created and became effective. This is an RFC 3339 formatted date-time string YYYY-MM-DDThh:mm:ss.sssZ. This field is derived and immutable.
effectiveEndAt string(date-time)
The date-time when the another revision became effective and this revision ceased being effective. This is an RFC 3339 formatted date-time string YYYY-MM-DDThh:mm:ss.sssZ. This field is derived and immutable and is not present until the revision is no longer active.
_id string
The unique identifier for this product resource. This is an immutable opaque string.
read-only
type string
The product type name, which is derived from the linked product type.
read-only
subtype string
The product subtype name, which is derived from the linked product subtype. This is a derived, immutable property.
read-only
institutionName string
The name of the financial institution
minLength: 1
maxLength: 128
coreType string
Identifies the underlying bank core system.
onlineBankingEnabled boolean
true if this product is enabled and eligible for online banking.
currency string
The ISO 4217 currency code for this product.
minLength: 3
maxLength: 3
constraints object
Product constraints, such as minimum and maximum balances.
» transactionTypes transactionTypes
The types of transactions permitted for this account. Values which appear in this array are permitted.
» minimumBalance string
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.
» minimumFundingAmount string
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.
» maximumFundingAmount string
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.
» minimumTransferAmount string
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.
» maximumTransferAmount string
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.
» maximumWithdrawalCount number(integer)
The maximum number of withdrawals allowed per cycle. If not present, there is no hard limit.
» fundingTerm string(period)
The time limit within which account opening funding must occur after account creation. This is expressed as an ISO 8601 duration 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.
» depositsRestrictedAfterGracePeriod boolean
If true, deposits are not allowed after the rollover grace period (see gracePeriod). This applies to time deposit products only.
» depositsRestrictedAfterFunding boolean
If true, deposits are not allowed after the initial account funding has completed. This typically applies to time deposit products.
» gracePeriod any
A period of time after account rollover when additional deposits are allowed. This is an ISO 8601 duration 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
fees [fee]
Zero or more fees for accounts of this product. If the array is empty or not present, there are no fees.
statementFrequency string(period)
The frequency with which statememts are issued for accounts of this product. This is expressed as an ISO 8601 duration 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.
timeDeposit timeDeposit
Properties of time deposit products, primarily Certificate of Deposit products.
attributes object
An optional map of name/value pairs which provide additional metadata about the product type.
createdAt string(date-time)
The date-time when this product was created. This value is derived and immutable.
read-only

products

{
  "_profile": "https://api.apiture.com/schemas/products/products/v1.0.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",
        "revision": {},
        "rate": {
          "value": "1.40",
          "type": "apr"
        },
        "_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"
          }
        }
      }
    ]
  }
}

Product Collection

Collection of products. 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).

Properties

NameDescription
_links object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
» additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.
_embedded object
Embedded objects
» items [summaryProduct]
An array containing a page of product items.
_profile string(uri)
The URI of a resource profile which describes the representation.
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
count integer
The number of items in the collection. This value is optional and my 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.
start integer
The start index of this page of items.
limit integer
The maximum number of items per page.
name string
The name of the collection.

rate

{
  "value": "1.40",
  "type": "apr"
}

Interest Rate

The interest rate of the account. For deposit accounts, this is the rate of return; for loan accounts, this is the interest rate charged on balances. Rates can be absolute, such as "1.40" to indicate 1.4%, which is expressed as { "rate" : "1.40" }. or relative to a benchmark, such as U.S. Prime Rate + 0.5% which is expressed as { "benchmark" : "prime", "rate" : "0.50" }.

Properties

NameDescription
value string
The rate, expressed as an decimal percentage string in order to represent the rate exactly. This number must have 2 to four decimal points, i.e. '2.00' or '0.50' or '1.015', but not 2 or .5. (Regular expression pattern: -?\d{1,3}+\.\d{2,4})
benchmark string

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):

compoundPeriod string
The period at which interest compounds.

This value is an ISO 8601 duration 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).

accrualType string
Indicates how interest is accrued according to the compoundPeriod.


Enumerated values:
compounding
simple

adjustmentPeriod string
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 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 interestRateType
The interest rate type.

interestRateType

"apr"

Interest Rate Type

The rate type. The rate type may not be changed once it is set at product creation. Rate types are:

Type: string
Enumerated values:
apr
apy

attributes

{}

Attributes

An optional map of name/value pairs which contains additional dynamic data about the resource.

Properties

errorResponse

{
  "_profile": "https://api.apiture.com/schemas/common/errorResponse/v1.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": []
    }
  }
}

Error Response

Describes an error response, typically returned on 4xx or 5xx errors from API operations. The _error object contains the error details.

Properties

NameDescription
_links object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
» additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.
_embedded object
An optional map of nested resources, mapping each nested resource name to a nested resource representation.
_profile string(uri)
The URI of a resource profile which describes the representation.
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.

root

{
  "id": "apiName",
  "name": "API name",
  "apiVersion": "1.0.0",
  "_profile": "https://api.apiture.com/schemas/common/root/v1.0.0/profile.json",
  "_links": {}
}

API Root

A HAL response, with hypermedia _links for the top-level resources and operations in API.

Properties

NameDescription
_links object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
» additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.
_embedded object
An optional map of nested resources, mapping each nested resource name to a nested resource representation.
_profile string(uri)
The URI of a resource profile which describes the representation.
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
_id string
This API's unique ID.
name string
This API's name.
apiVersion string
This API's version.

localizedLabels

{
  "property1": {
    "label": "Limited Liability Corporation",
    "description": "string",
    "language": "en-us",
    "code": "31"
  },
  "property2": {
    "label": "Limited Liability Corporation",
    "description": "string",
    "language": "en-us",
    "code": "31"
  }
}

Localized Labels

A map that defines lables for an enumeration or other item in a JSON schema. This is a map which maps enumeration schema names to an localizedLabel object.

Properties

NameDescription
additionalProperties localizedLabel
A localized label and optional description for localizable content defined in this API.

revisionEffectiveInterval

{
  "effectiveStartAt": "2019-10-29T18:22:18Z",
  "effectiveEndAt": "2019-10-29T18:22:18Z"
}

Revision Effective Time Interval

Time interval when a resource revision was effective and in use. This schema is used when composing other schemas.

Properties

NameDescription
effectiveStartAt string(date-time)
The date-time when this revision was created and became effective. This is an RFC 3339 formatted date-time string YYYY-MM-DDThh:mm:ss.sssZ. This field is derived and immutable.
effectiveEndAt string(date-time)
The date-time when the another revision became effective and this revision ceased being effective. This is an RFC 3339 formatted date-time string YYYY-MM-DDThh:mm:ss.sssZ. This field is derived and immutable and is not present until the revision is no longer active.

{
  "href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
  "title": "Applicant"
}

Link

Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.

Properties

NameDescription
href string(uri) (required)
The URI or URI template for the resource/operation this link refers to.
type string
The media type for the resource.
templated boolean
If true, the link's href is a URI template.
title string
An optional human-readable localized title for the link.
deprecation string(uri)
If present, the containing link is deprecated and the value is a URI which provides human-readable text information about the deprecation.
profile string(uri)
The URI of a profile document, a JSON document which describes the target resource/operation.

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://developer.apiture.com/errors/positiveNumberRequired"
    }
  },
  "_embedded": {
    "errors": []
  }
}

Error

Describes an error in an API request or in a service called via the API.

Properties

NameDescription
message string (required)
A localized message string describing the error condition.
_id string
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.
statusCode integer
The HTTP status code associate with this error.
minimum: 100
maximum: 599
type string
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 string(date-time)
An RFC 3339 UTC time stamp indicating when the error occurred.
attributes attributes
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.
remediation string
An optional localized string which provides hints for how the user or client can resolve the error.
errors [error]
An optional array of nested error objects. This property is not always present.
_links links
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
_embedded object
Embedded objects. An error object may contain nested errors. For example, an API which validates its request body may find multiple errors in the request, which are returned with an error response with nested errors. These are held in an items array of errorResponse objects. _embedded or _embedded.items may not exist if the error does not have nested errors. This property is deprecated; use see error.errors instead.
» items [errorResponse]
An array of error objects.

localizedLabel

{
  "label": "Limited Liability Corporation",
  "description": "string",
  "language": "en-us",
  "code": "31"
}

Localized Label

A localized label and optional description for localizable content defined in this API.

Properties

NameDescription
label string
A localized label or title which may be used labels or other UI controls which present a value.
description string
A more detailed localized description of a localizable label.
language string
The actual natural language tag to which this localized label is associated, as per RFC 7231
code string
If the localized value is associated with an external standard, this is a lookup code or key or URI for that value.

{
  "property1": {
    "href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
    "title": "Applicant"
  },
  "property2": {
    "href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
    "title": "Applicant"
  }
}

Links

An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.

Properties

NameDescription
additionalProperties link
Describes a hypermedia link within a _links object in HAL representations. In Apiture APIs, links are HAL links, but Apiture APIs do not use the name or hreflang properties of HAL. Apiture links may include a method property.