Transfers v0.8.3
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
With the Transfers API, clients can schedule transfer requests to move funds from one account to another. To schedule a new transfer, use the POST
operation at /scheduledTransfers
path. The GET
operation there returns a paginated collection of scheduled transfers. Scheduled transfers which have been processed are automatically removed from /scheduledTransfers
. The /pastTransfers
collection contains processed (or canceled) transfers.
This differs from the Payments API which allows scheduling bill or other payments to external payees.
Download OpenAPI Definition (YAML)
Base URLs:
Authentication
- API Key (
apiKey
)- header parameter: API-Key
- API Key based authentication. Each client application must pass its private, unique API key, allocated in the developer portal, via the
API-Key: {api-key}
request header.
- OAuth2 authentication (
accessToken
)- OAuth2 client access token authentication. The client authenticates against the server at
authorizationUrl
, passing the client's privateclientId
(and optionalclientSecret
) as part of this flow. The client obtains an access token from the server attokenUrl
. It then passes the received access token via theAuthorization: Bearer {access-token}
header in subsequent API calls. The authorization process also returns a refresh token which the client should use to renew the access token before it expires. - Flow:
authorizationCode
- Authorization URL = https://auth.apiture.com/oauth2/authorize
- Token URL = http://auth.apiture.com/auth/oauth2/token
- OAuth2 client access token authentication. The client authenticates against the server at
Scope | Scope Description |
---|---|
banking/read |
Read access to accounts and account-related resources such as transfers and transactions. |
banking/write |
Write (update) access to accounts and account-related resources such as transfers and transactions. |
banking/delete |
Delete access to deletable accounts and account-related resources such as transfers. |
banking/readBalance |
Read access to account balances. This must be granted in addition to the banking/read scope in order to view balances, but is included in the banking/full scope. |
banking/full |
Full access to accounts and account-related resources such as transfers and transactions. |
admin/read |
Read access to system configuration. |
admin/write |
Write (update) access to system configuration. |
admin/full |
Full access to system configuration. |
API
Endpoints which describe this API.
getApi
Code samples
# You can also use wget
curl -X GET /transfers/ \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY'
GET /transfers/ HTTP/1.1
Accept: application/hal+json
var headers = {
'Accept':'application/hal+json',
'API-Key':'API_KEY'
};
$.ajax({
url: '/transfers/',
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('/transfers/',
{
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 '/transfers/',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'API-Key': 'API_KEY'
}
r = requests.get('/transfers/', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/");
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", "/transfers/", 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.
Example responses
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
Status | Description |
---|---|
200 | OK |
OK | |
Schema: root |
getApiDoc
Code samples
# You can also use wget
curl -X GET /transfers/apiDoc \
-H 'Accept: application/json' \
-H 'API-Key: API_KEY'
GET /transfers/apiDoc HTTP/1.1
Accept: application/json
var headers = {
'Accept':'application/json',
'API-Key':'API_KEY'
};
$.ajax({
url: '/transfers/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('/transfers/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 '/transfers/apiDoc',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'API-Key': 'API_KEY'
}
r = requests.get('/transfers/apiDoc', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/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", "/transfers/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
Status | Description |
---|---|
200 | OK |
OK | |
Schema: Inline |
Response Schema
Scheduled Transfer
Scheduled transfers from a source account to a target account
getScheduledTransfers
Code samples
# You can also use wget
curl -X GET /transfers/scheduledTransfers \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /transfers/scheduledTransfers HTTP/1.1
Accept: application/hal+json
var headers = {
'Accept':'application/hal+json',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/transfers/scheduledTransfers',
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',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/scheduledTransfers',
{
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',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/transfers/scheduledTransfers',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'API-Key': 'API_KEY',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/transfers/scheduledTransfers', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/scheduledTransfers");
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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/transfers/scheduledTransfers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Return a collection of scheduled transfers
GET /scheduledTransfers
Return a paginated sortable filterable searchable collection of transfers. The links in the response include pagination links.
Parameters
Parameter | Description |
---|---|
start (query) |
integer(int64) The zero-based index of the first transfer item to include in this page. The default 0 denotes the beginning of the collection. |
limit (query) |
integer(int32) The maximum number of transfer representations to return in this page. |
sortBy (query) |
string Optional sort criteria. 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. |
state (query) |
string Subset the accounts or external accounts 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: scheduled recurring processing suspended completed canceled failed |
name (query) |
string Subset the accounts or external accounts collection to those with this name value. Use |
Example responses
200 Response
{
"_profile": "https://api.apiture.com/schemas/transfers/transfers/v1.0.0/profile.json",
"start": 10,
"limit": 10,
"count": 67,
"name": "transfers",
"_links": {
"self": {
"href": "/transfers/scheduledTransfers?start=10&limit=10"
},
"first": {
"href": "/transfers/scheduledTransfers?start=0&limit=10"
},
"next": {
"href": "/transfers/scheduledTransfers?start=20&limit=10"
},
"collection": {
"href": "/transfers/scheduledTransfers"
}
},
"_embedded": {
"items": [
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/summaryScheduledTransfer/v1.0.0/profile.json",
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"state": "recurring",
"schedule": {
"start": "2018-02-05",
"count": 3,
"every": "P1M",
"end": "2021-04-05"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
}
},
{
"_id": "a3bbba3c-d26b-497d-87b7-09eb47b24d77",
"_profile": "https://api.apiture.com/schemas/transfers/summaryScheduledTransfer/v1.0.0/profile.json",
"amount": {
"value": "120.0",
"currency": "USD"
},
"description": "Monthly allowance for Suzy's college expenses and meals",
"state": "recurring",
"schedule": {
"start": "2018-08-01",
"count": 24,
"every": "P1M",
"end": "2020-05-15"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/4fda6275-0a3b-49ad-ad12-5ebcd7013362"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77"
},
"self": {
"href": "/transfers/scheduledTransfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77"
}
}
}
]
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: scheduledTransfers | |
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 |
createScheduledTransfer
Code samples
# You can also use wget
curl -X POST /transfers/scheduledTransfers \
-H 'Content-Type: application/hal+json' \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
POST /transfers/scheduledTransfers 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: '/transfers/scheduledTransfers',
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/transfers/createScheduledTransfer/v1.0.0/profile.json",
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"initialFunding": false,
"schedule": {
"start": "2018-02-05",
"maximumCount": 36,
"every": "P1M",
"end": "2021-04-05"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:creator": {
"href": "/users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6"
}
}
}';
const headers = {
'Content-Type':'application/hal+json',
'Accept':'application/hal+json',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/scheduledTransfers',
{
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 '/transfers/scheduledTransfers',
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('/transfers/scheduledTransfers', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/scheduledTransfers");
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", "/transfers/scheduledTransfers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Create a new scheduled transfer request
POST /scheduledTransfers
This operation adds either a new one-time or a recurring transfer, depending on the content of the embedded schedule
. The request includes the amount of the transfer in the body, and the source and target accounts in the request's _links
via the link relations apiture:source
and apiture:target
. The accounts must be active and available for transfers and the amount must be in the allowed transfer range.
If the request's transfer date (schedule.start
) is the current day, the financial institution is processing transfers on that day, and the time is before the financial institution's transfer processing cutoff time, internal transfers will be processed as soon as possible and the transfer state
will change to processing
and then completed
. If the request's transfer date (schedule.start
) is the current day and the time is past the cutoff time, the transfer will be processed on the next processing day. The cutoff time is available as cutoffTime
via this service's basic
configuration values GET /transfers/configurations/groups/basic/values
; those values are defined by the JSON schema GET /transfers/configurations/groups/basic/schema
.
If the transfer is scheduled for a future date that is not a valid transfer processing day, the request fails with a 400 error. The holidays and other non-processing days are available via this service's calendar
configuration values GET /transfers/configurations/groups/calendar/values
; those values are defined by the JSON schema GET /transfers/configurations/groups/calendar/schema
.
The service will reject duplicate requests, defined by a request that exactly matches an existing transfer (same amount
, schedule
, description
, source and target accounts), returning a 409 Conflict status. To schedule a duplicate transfer with the same amount, schedule, and accounts, change at least the description
.
Scheduled transfers will be deleted automatically at some point after they have completed (typically 7 days), up until which they are available with a state
of completed
if successful or failed
if not.
Body parameter
{
"_profile": "https://api.apiture.com/schemas/transfers/createScheduledTransfer/v1.0.0/profile.json",
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"initialFunding": false,
"schedule": {
"start": "2018-02-05",
"maximumCount": 36,
"every": "P1M",
"end": "2021-04-05"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:creator": {
"href": "/users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6"
}
}
}
Parameters
Parameter | Description |
---|---|
body (body) |
createScheduledTransfer (required) The data necessary to create a new transfer. |
Example responses
201 Response
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/scheduledTransfer/v1.0.0/profile.json",
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"_links": {
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:creator": {
"href": "/users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
},
"_embedded": {
"transactions": {
"start": 0,
"count": 3,
"items": [
{
"_id": "da8682e3-cc0b-4a1a-b8d2-8ce4dc45bf36",
"occurredAt": "2018-02-05T11:10:00.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "a847c5c7-4a34-4464-b514-5ca1680cc00d",
"occurredAt": "2018-03-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "d9ab0002-2cbb-4a4c-a01f-c3ce3ad20782",
"occurredAt": "2018-04-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
}
]
},
"source": {
"_id": "34f8bec8-3939-4b7e-9ad5-10ee059ab250",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "Personal Savings",
"productName": "Basic Personal Savings",
"type": "Personal Savings",
"subtype": "Basic Personal Savings",
"state": "active",
"balance": {
"current": "3450.30",
"available": "3450.30",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/34f8bec8-3939-4b7e-9ad5-10ee059ab250"
}
}
},
"target": {
"_id": "c9839d60-73e5-47ba-9676-ca8138e9494d",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "My Basic Checking",
"productName": "Basic Personal Checking",
"type": "Personal Checking",
"subtype": "Basic Personal Checking",
"state": "active",
"balance": {
"current": "450.12",
"available": "450.12",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/c9839d60-73e5-47ba-9676-ca8138e9494d"
}
}
},
"_links": {
"self": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"state": "recurring",
"schedule": {
"start": "2018-02-05",
"count": 3,
"every": "P1M",
"end": "2021-04-05"
}
}
Responses
Status | Description |
---|---|
201 | Created |
Created | |
Schema: scheduledTransfer | |
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 resource at the specified {Id} The _error field in the response will contain details about the request error. | |
Schema: error | |
409 | Conflict |
Conflict. A conflict can occur for several reasons:
| |
Schema: error |
Response Headers
Status | Description |
---|---|
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. |
getScheduledTransfer
Code samples
# You can also use wget
curl -X GET /transfers/scheduledTransfers/{scheduledTransferId} \
-H 'Accept: application/hal+json' \
-H 'If-None-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /transfers/scheduledTransfers/{scheduledTransferId} 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',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/transfers/scheduledTransfers/{scheduledTransferId}',
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',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/scheduledTransfers/{scheduledTransferId}',
{
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',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/transfers/scheduledTransfers/{scheduledTransferId}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'If-None-Match': 'string',
'API-Key': 'API_KEY',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/transfers/scheduledTransfers/{scheduledTransferId}', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/scheduledTransfers/{scheduledTransferId}");
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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/transfers/scheduledTransfers/{scheduledTransferId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Fetch a representation of this transfer
GET /scheduledTransfers/{scheduledTransferId}
Return a HAL representation of this transfer resource.
To also receive the full account number when fetching an account, include the ?unmasked=true
option. When linking an external account, the full account number should be in the accountNumbers.full
property in the request.
Parameters
Parameter | Description |
---|---|
scheduledTransferId (path) |
string (required) The unique identifier of this scheduled transfer. 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. |
unmasked (query) |
boolean When requesting a transfer, the full account number of the source and target accounts is not included in the response by default, for security reasons. Include this query parameter, with a value of true , to request that the response body includes the full account number. Such requests are auditable. |
Example responses
200 Response
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/scheduledTransfer/v1.0.0/profile.json",
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"_links": {
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:creator": {
"href": "/users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
},
"_embedded": {
"transactions": {
"start": 0,
"count": 3,
"items": [
{
"_id": "da8682e3-cc0b-4a1a-b8d2-8ce4dc45bf36",
"occurredAt": "2018-02-05T11:10:00.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "a847c5c7-4a34-4464-b514-5ca1680cc00d",
"occurredAt": "2018-03-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "d9ab0002-2cbb-4a4c-a01f-c3ce3ad20782",
"occurredAt": "2018-04-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
}
]
},
"source": {
"_id": "34f8bec8-3939-4b7e-9ad5-10ee059ab250",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "Personal Savings",
"productName": "Basic Personal Savings",
"type": "Personal Savings",
"subtype": "Basic Personal Savings",
"state": "active",
"balance": {
"current": "3450.30",
"available": "3450.30",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/34f8bec8-3939-4b7e-9ad5-10ee059ab250"
}
}
},
"target": {
"_id": "c9839d60-73e5-47ba-9676-ca8138e9494d",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "My Basic Checking",
"productName": "Basic Personal Checking",
"type": "Personal Checking",
"subtype": "Basic Personal Checking",
"state": "active",
"balance": {
"current": "450.12",
"available": "450.12",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/c9839d60-73e5-47ba-9676-ca8138e9494d"
}
}
},
"_links": {
"self": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"state": "recurring",
"schedule": {
"start": "2018-02-05",
"count": 3,
"every": "P1M",
"end": "2021-04-05"
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: scheduledTransfer | |
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 resource at the specified {Id} The _error field in the response will contain details about the request error. | |
Schema: error |
Response Headers
Status | Description |
---|---|
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 transfer resource. |
deleteScheduledTransfer
Code samples
# You can also use wget
curl -X DELETE /transfers/scheduledTransfers/{scheduledTransferId} \
-H 'Accept: application/hal+json' \
-H 'If-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
DELETE /transfers/scheduledTransfers/{scheduledTransferId} 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: '/transfers/scheduledTransfers/{scheduledTransferId}',
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('/transfers/scheduledTransfers/{scheduledTransferId}',
{
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 '/transfers/scheduledTransfers/{scheduledTransferId}',
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('/transfers/scheduledTransfers/{scheduledTransferId}', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/scheduledTransfers/{scheduledTransferId}");
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", "/transfers/scheduledTransfers/{scheduledTransferId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Delete this scheduled transfer
DELETE /scheduledTransfers/{scheduledTransferId}
Delete this transfer. Any processing transfers may complete; future scheduled transfers, if this is a recurring transfer, will be canceled. After deleting a transfer, there is no direct access to the transactions or transaction errors.
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. |
scheduledTransferId (path) |
string (required) The unique identifier of this scheduled transfer. This is an opaque string. |
Example responses
404 Response
{
"_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": []
}
}
Responses
Status | Description |
---|---|
204 | No Content |
No Content | |
404 | Not Found |
Not Found. There is no such resource at the specified {Id} The _error field in the response will contain details about the request error. | |
Schema: error | |
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 |
patchScheduledTransfer
Code samples
# You can also use wget
curl -X PATCH /transfers/scheduledTransfers/{scheduledTransferId} \
-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 /transfers/scheduledTransfers/{scheduledTransferId} 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: '/transfers/scheduledTransfers/{scheduledTransferId}',
method: 'patch',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
const fetch = require('node-fetch');
const inputBody = '{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/scheduledTransfer/v1.0.0/profile.json",
"state": "recurring",
"amount": {
"value": "356.40",
"currency": "USD"
},
"description": "Car payment",
"initialFunding": false,
"schedule": {
"start": "2018-02-05",
"maximumCount": 36,
"count": 11,
"every": "P1M",
"end": "2021-04-05"
},
"_links": {
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
}
}
}';
const headers = {
'Content-Type':'application/hal+json',
'Accept':'application/hal+json',
'If-Match':'string',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/scheduledTransfers/{scheduledTransferId}',
{
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 '/transfers/scheduledTransfers/{scheduledTransferId}',
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('/transfers/scheduledTransfers/{scheduledTransferId}', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/scheduledTransfers/{scheduledTransferId}");
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", "/transfers/scheduledTransfers/{scheduledTransferId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Update this scheduled transfer
PATCH /scheduledTransfers/{scheduledTransferId}
Perform a partial update of this transfer. Fields which are omitted are not updated. Nested _embedded
and _links
are ignored if included. If the state
of the transfer allows, this operation may change the description
, amount
, and schedule
; the source and target accounts and _embedded
objects may not be changed. In the schedule, the user may not changed the count
. The user may not change the state
.
This update operation is subject to the same constraints defined in the createTransfer
(POST /transfers/transfers
) operation.
Body parameter
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/scheduledTransfer/v1.0.0/profile.json",
"state": "recurring",
"amount": {
"value": "356.40",
"currency": "USD"
},
"description": "Car payment",
"initialFunding": false,
"schedule": {
"start": "2018-02-05",
"maximumCount": 36,
"count": 11,
"every": "P1M",
"end": "2021-04-05"
},
"_links": {
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
}
}
}
Parameters
Parameter | Description |
---|---|
scheduledTransferId (path) |
string (required) The unique identifier of this scheduled transfer. 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) |
updateScheduledTransfer (required) |
Example responses
200 Response
{
"_links": {
"property1": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
},
"property2": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
}
},
"_embedded": {},
"_profile": "http://example.com",
"_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": []
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"schedule": {
"start": "2018-06-10",
"every": "P14D",
"count": 5,
"first": true,
"last": false,
"maximumCount": 10,
"end": "2018-08-01"
},
"type": "internal",
"initialFunding": false,
"visibility": "visible",
"confirmationId": "4OehPba97q7----0-8--bk--",
"state": "scheduled",
"_id": "string",
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"sourceAccount": {
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
},
"targetAccount": {
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: transfer | |
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 resource at the specified {Id} The _error field in the response will contain details about the request error. | |
Schema: error | |
409 | Conflict |
Conflict. A conflict can occur if another existing transfer matches the request exactly. If similar transfers are desired, ensure at least the description is unique. | |
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
Status | Description |
---|---|
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 transfer resource. |
suspendScheduledTransfer
Code samples
# You can also use wget
curl -X POST /transfers/suspendedScheduledTransfers?scheduledTransfer=string \
-H 'Accept: application/hal+json' \
-H 'If-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
POST /transfers/suspendedScheduledTransfers?scheduledTransfer=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: '/transfers/suspendedScheduledTransfers',
method: 'post',
data: '?scheduledTransfer=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('/transfers/suspendedScheduledTransfers?scheduledTransfer=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 '/transfers/suspendedScheduledTransfers',
params: {
'scheduledTransfer' => '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('/transfers/suspendedScheduledTransfers', params={
'scheduledTransfer': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/suspendedScheduledTransfers?scheduledTransfer=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", "/transfers/suspendedScheduledTransfers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Suspend a scheduled transfer
POST /suspendedScheduledTransfers
POST
the URI of a scheduled transfer to suspend it. This disables future recurring transfers until the scheduled transfer is either resumed or canceled. Any transfers that would have occurred on dates that passed while suspended will not be processed on those dates. Use the apiture:resume
or apiture:cancel
links on the instance to resume or cancel the remaining transfers. This operation is only valid on scheduled transfers which are in the scheduled
or recurring
states.
This operation is invoked by submitting a POST
to the href
in the scheduled transfer's apiture:suspend
link, The link will be present if the transfer can be suspended.
Parameters
Parameter | Description |
---|---|
scheduledTransfer (query) |
string (required) A server-generated key which identifies a scheduled transfer resource. |
scheduledTransferUri (query) |
string The URI of a scheduled transfer resource. This parameter is deprecated and will be removed in the next version. Use ?scheduledTransfer= instead. |
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": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/scheduledTransfer/v1.0.0/profile.json",
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"_links": {
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:creator": {
"href": "/users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
},
"_embedded": {
"transactions": {
"start": 0,
"count": 3,
"items": [
{
"_id": "da8682e3-cc0b-4a1a-b8d2-8ce4dc45bf36",
"occurredAt": "2018-02-05T11:10:00.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "a847c5c7-4a34-4464-b514-5ca1680cc00d",
"occurredAt": "2018-03-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "d9ab0002-2cbb-4a4c-a01f-c3ce3ad20782",
"occurredAt": "2018-04-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
}
]
},
"source": {
"_id": "34f8bec8-3939-4b7e-9ad5-10ee059ab250",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "Personal Savings",
"productName": "Basic Personal Savings",
"type": "Personal Savings",
"subtype": "Basic Personal Savings",
"state": "active",
"balance": {
"current": "3450.30",
"available": "3450.30",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/34f8bec8-3939-4b7e-9ad5-10ee059ab250"
}
}
},
"target": {
"_id": "c9839d60-73e5-47ba-9676-ca8138e9494d",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "My Basic Checking",
"productName": "Basic Personal Checking",
"type": "Personal Checking",
"subtype": "Basic Personal Checking",
"state": "active",
"balance": {
"current": "450.12",
"available": "450.12",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/c9839d60-73e5-47ba-9676-ca8138e9494d"
}
}
},
"_links": {
"self": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"state": "recurring",
"schedule": {
"start": "2018-02-05",
"count": 3,
"every": "P1M",
"end": "2021-04-05"
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: scheduledTransfer | |
400 | Bad Request |
Bad Request. The scheduledTransferUri was malformed or does not refer to a scheduled transfer. | |
409 | Conflict |
Conflict. The specified scheduled transfer is in a state that does not allow suspending. | |
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 | |
500 | Internal Server Error |
Server Error. The server encountered an unexpected condition that prevented it from fulfilling the request. | |
Schema: errorResponse |
Response Headers
Status | Description |
---|---|
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 transfer resource. |
resumeScheduledTransfer
Code samples
# You can also use wget
curl -X POST /transfers/resumedScheduledTransfers?scheduledTransfer=string \
-H 'Accept: application/hal+json' \
-H 'If-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
POST /transfers/resumedScheduledTransfers?scheduledTransfer=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: '/transfers/resumedScheduledTransfers',
method: 'post',
data: '?scheduledTransfer=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('/transfers/resumedScheduledTransfers?scheduledTransfer=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 '/transfers/resumedScheduledTransfers',
params: {
'scheduledTransfer' => '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('/transfers/resumedScheduledTransfers', params={
'scheduledTransfer': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/resumedScheduledTransfers?scheduledTransfer=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", "/transfers/resumedScheduledTransfers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Resume a suspended scheduled transfer
POST /resumedScheduledTransfers
POST
the URI of a suspended scheduled transfer to resume it. This enables future recurring transfers. Any transfers that would have occurred on dates that passed while suspended will not be processed on those dates. See also the extendSchedule
query parameter on this operation. This operation is only valid on scheduled transfers which are in the suspended
state.
This operation is invoked by submitting a POST
to the href
in the scheduled transfer's apiture:resume
link, The link will be present if the transfer can be resumed.
Parameters
Parameter | Description |
---|---|
scheduledTransfer (query) |
string (required) A server-generated key which identifies a scheduled transfer resource. |
scheduledTransferUri (query) |
string The URI of a scheduled transfer resource. This parameter is deprecated and will be removed in the next version. Use ?scheduledTransfer= instead. |
If-Match (header) |
string The entity tag that was returned in the ETag response. This must match the current entity tag of the resource. |
extendSchedule (query) |
boolean If true, the schedule.end will be extended if necessary so that the maximumCount number of transfers will be made (based on the periods in every ). The default value (false ) prevents processing transfers that the user may not expect based on the original schedule. (The user may still update the schedule.end via PATCH to the scheduled transfer.) |
Example responses
200 Response
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/scheduledTransfer/v1.0.0/profile.json",
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"_links": {
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:creator": {
"href": "/users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
},
"_embedded": {
"transactions": {
"start": 0,
"count": 3,
"items": [
{
"_id": "da8682e3-cc0b-4a1a-b8d2-8ce4dc45bf36",
"occurredAt": "2018-02-05T11:10:00.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "a847c5c7-4a34-4464-b514-5ca1680cc00d",
"occurredAt": "2018-03-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "d9ab0002-2cbb-4a4c-a01f-c3ce3ad20782",
"occurredAt": "2018-04-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
}
]
},
"source": {
"_id": "34f8bec8-3939-4b7e-9ad5-10ee059ab250",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "Personal Savings",
"productName": "Basic Personal Savings",
"type": "Personal Savings",
"subtype": "Basic Personal Savings",
"state": "active",
"balance": {
"current": "3450.30",
"available": "3450.30",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/34f8bec8-3939-4b7e-9ad5-10ee059ab250"
}
}
},
"target": {
"_id": "c9839d60-73e5-47ba-9676-ca8138e9494d",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "My Basic Checking",
"productName": "Basic Personal Checking",
"type": "Personal Checking",
"subtype": "Basic Personal Checking",
"state": "active",
"balance": {
"current": "450.12",
"available": "450.12",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/c9839d60-73e5-47ba-9676-ca8138e9494d"
}
}
},
"_links": {
"self": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"state": "recurring",
"schedule": {
"start": "2018-02-05",
"count": 3,
"every": "P1M",
"end": "2021-04-05"
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: scheduledTransfer | |
400 | Bad Request |
Bad Request. The scheduledTransferUri was malformed or does not refer to a scheduled transfer. | |
409 | Conflict |
Conflict. The specified scheduled transfer is in a state that does not allow resuming. | |
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 | |
500 | Internal Server Error |
Server Error. The server encountered an unexpected condition that prevented it from fulfilling the request. | |
Schema: errorResponse |
Response Headers
Status | Description |
---|---|
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 transfer resource. |
cancelScheduledTransfer
Code samples
# You can also use wget
curl -X POST /transfers/canceledScheduledTransfers?scheduledTransfer=string \
-H 'Accept: application/hal+json' \
-H 'If-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
POST /transfers/canceledScheduledTransfers?scheduledTransfer=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: '/transfers/canceledScheduledTransfers',
method: 'post',
data: '?scheduledTransfer=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('/transfers/canceledScheduledTransfers?scheduledTransfer=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 '/transfers/canceledScheduledTransfers',
params: {
'scheduledTransfer' => '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('/transfers/canceledScheduledTransfers', params={
'scheduledTransfer': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/canceledScheduledTransfers?scheduledTransfer=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", "/transfers/canceledScheduledTransfers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Cancel a scheduled transfer
POST /canceledScheduledTransfers
POST
the URI of a scheduled transfer to cancel it. This cancels all future recurring transfers. Any transfers that would have occurred on future dates will be canceled. This operation is only valid on scheduled transfers which are in the scheduled
, recurring
, or suspended
state. It may also be allowed if the transfer state is processing
and the optional cutoff time has not passed.
This operation is invoked by submitting a POST
to the href
in the scheduled transfer's apiture:cancel
link, The link will be present if the transfer can be canceled.
Parameters
Parameter | Description |
---|---|
scheduledTransfer (query) |
string (required) A server-generated key which identifies a scheduled transfer resource. |
scheduledTransferUri (query) |
string The URI of a scheduled transfer resource. This parameter is deprecated and will be removed in the next version. Use ?scheduledTransfer= instead. |
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": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/scheduledTransfer/v1.0.0/profile.json",
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"_links": {
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:creator": {
"href": "/users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
},
"_embedded": {
"transactions": {
"start": 0,
"count": 3,
"items": [
{
"_id": "da8682e3-cc0b-4a1a-b8d2-8ce4dc45bf36",
"occurredAt": "2018-02-05T11:10:00.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "a847c5c7-4a34-4464-b514-5ca1680cc00d",
"occurredAt": "2018-03-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "d9ab0002-2cbb-4a4c-a01f-c3ce3ad20782",
"occurredAt": "2018-04-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
}
]
},
"source": {
"_id": "34f8bec8-3939-4b7e-9ad5-10ee059ab250",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "Personal Savings",
"productName": "Basic Personal Savings",
"type": "Personal Savings",
"subtype": "Basic Personal Savings",
"state": "active",
"balance": {
"current": "3450.30",
"available": "3450.30",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/34f8bec8-3939-4b7e-9ad5-10ee059ab250"
}
}
},
"target": {
"_id": "c9839d60-73e5-47ba-9676-ca8138e9494d",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "My Basic Checking",
"productName": "Basic Personal Checking",
"type": "Personal Checking",
"subtype": "Basic Personal Checking",
"state": "active",
"balance": {
"current": "450.12",
"available": "450.12",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/c9839d60-73e5-47ba-9676-ca8138e9494d"
}
}
},
"_links": {
"self": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"state": "recurring",
"schedule": {
"start": "2018-02-05",
"count": 3,
"every": "P1M",
"end": "2021-04-05"
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: scheduledTransfer | |
400 | Bad Request |
Bad Request. The scheduledTransferUri was malformed or does not refer to a scheduled transfer. | |
409 | Conflict |
Conflict. The specified scheduled transfer is in a state that does not allow cancellation. | |
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 | |
500 | Internal Server Error |
Server Error. The server encountered an unexpected condition that prevented it from fulfilling the request. | |
Schema: errorResponse |
Response Headers
Status | Description |
---|---|
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 transfer resource. |
Past Transfer
Processed transfers
getPastTransfers
Code samples
# You can also use wget
curl -X GET /transfers/pastTransfers \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /transfers/pastTransfers HTTP/1.1
Accept: application/hal+json
var headers = {
'Accept':'application/hal+json',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/transfers/pastTransfers',
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',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/pastTransfers',
{
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',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/transfers/pastTransfers',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'API-Key': 'API_KEY',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/transfers/pastTransfers', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/pastTransfers");
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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/transfers/pastTransfers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Return a collection of past transfers
GET /pastTransfers
Return a paginated sortable filterable searchable collection of past transfers. The links in the response include pagination links.
Past transfers are transfers which have been processed or canceled.
Parameters
Parameter | Description |
---|---|
start (query) |
integer(int64) The zero-based index of the first transfer item to include in this page. The default 0 denotes the beginning of the collection. |
limit (query) |
integer(int32) The maximum number of transfer representations to return in this page. |
sortBy (query) |
string Optional sort criteria. 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. |
state (query) |
string Subset the accounts or external accounts 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: scheduled recurring processing suspended completed canceled failed |
name (query) |
string Subset the accounts or external accounts collection to those with this name value. Use |
Example responses
200 Response
{
"_profile": "https://api.apiture.com/schemas/transfers/pastTransfers/v1.0.0/profile.json",
"start": 10,
"limit": 10,
"count": 67,
"name": "transfers",
"_links": {
"self": {
"href": "/transfers/pastTransfers?start=10&limit=10"
},
"first": {
"href": "/transfers/pastTransfers?start=0&limit=10"
},
"next": {
"href": "/transfers/pastTransfers?start=20&limit=10"
},
"collection": {
"href": "/transfers/pastTransfers"
}
},
"_embedded": {
"items": [
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/summaryPastTransfer/v1.0.0/profile.json",
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"state": "recurring",
"schedule": {
"start": "2018-02-05",
"count": 3,
"every": "P1M",
"end": "2021-04-05"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"self": {
"href": "/transfers/pastTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
}
},
{
"_id": "a3bbba3c-d26b-497d-87b7-09eb47b24d77",
"_profile": "https://api.apiture.com/schemas/transfers/summaryPastTransfer/v1.0.0/profile.json",
"amount": {
"value": "120.0",
"currency": "USD"
},
"description": "Monthly allowance for Suzy's college expenses and meals",
"state": "recurring",
"schedule": {
"start": "2018-08-01",
"count": 24,
"every": "P1M",
"end": "2020-05-15"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/4fda6275-0a3b-49ad-ad12-5ebcd7013362"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77"
},
"self": {
"href": "/transfers/pastTransfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77"
}
}
}
]
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: pastTransfers | |
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 |
getPastTransfer
Code samples
# You can also use wget
curl -X GET /transfers/pastTransfers/{pastTransferId} \
-H 'Accept: application/hal+json' \
-H 'If-None-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /transfers/pastTransfers/{pastTransferId} 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',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/transfers/pastTransfers/{pastTransferId}',
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',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/pastTransfers/{pastTransferId}',
{
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',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/transfers/pastTransfers/{pastTransferId}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'If-None-Match': 'string',
'API-Key': 'API_KEY',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/transfers/pastTransfers/{pastTransferId}', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/pastTransfers/{pastTransferId}");
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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/transfers/pastTransfers/{pastTransferId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Fetch a representation of this past transfer
GET /pastTransfers/{pastTransferId}
Return a HAL representation of this transfer resource.
Parameters
Parameter | Description |
---|---|
pastTransferId (path) |
string (required) The unique identifier of this scheduled transfer. 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. |
unmasked (query) |
boolean When requesting a transfer, the full account number of the source and target accounts is not included in the response by default, for security reasons. Include this query parameter, with a value of true , to request that the response body includes the full account number. Such requests are auditable. |
Example responses
200 Response
{
"_links": {
"property1": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
},
"property2": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
}
},
"_embedded": {},
"_profile": "http://example.com",
"_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": []
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"schedule": {
"start": "2018-06-10",
"every": "P14D",
"count": 5,
"first": true,
"last": false,
"maximumCount": 10,
"end": "2018-08-01"
},
"type": "internal",
"initialFunding": false,
"visibility": "visible",
"confirmationId": "6e5413df-9574-4568-b0c4-dfd96bbb454b",
"state": "scheduled",
"_id": "string",
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"sourceAccount": {
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
},
"targetAccount": {
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
},
"completedAt": "2018-05-08T14:08:50.375Z"
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: pastTransfer | |
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 past transfer resource at the specified {transferId} The _error field in the response will contain details about the request error. | |
Schema: error |
Response Headers
Status | Description |
---|---|
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 transfer resource. |
Configuration
A set of endpoints that allows for the creation and retrieval of configuration options specific to this service
getConfiguration
Code samples
# You can also use wget
curl -X GET /transfers/configurations \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /transfers/configurations HTTP/1.1
Accept: application/hal+json
var headers = {
'Accept':'application/hal+json',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/transfers/configurations',
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',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/configurations',
{
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',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/transfers/configurations',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'API-Key': 'API_KEY',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/transfers/configurations', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/configurations");
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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/transfers/configurations", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Configuration definition for this API
GET /configurations
Returns the configuration for this API
Example responses
200 Response
{
"_links": {
"self": {
"href": "/transfers/configurations/"
},
"apiture:groups": {
"href": "/transfers/configurations/groups"
}
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: configuration |
getConfigurationGroups
Code samples
# You can also use wget
curl -X GET /transfers/configurations/groups \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /transfers/configurations/groups HTTP/1.1
Accept: application/hal+json
var headers = {
'Accept':'application/hal+json',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/transfers/configurations/groups',
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',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/configurations/groups',
{
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',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/transfers/configurations/groups',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'API-Key': 'API_KEY',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/transfers/configurations/groups', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/configurations/groups");
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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/transfers/configurations/groups", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Return a collection of configuration groups
GET /configurations/groups
Return a paginated sortable filterable searchable collection of configuration groups. The links in the response include pagination links.
Parameters
Parameter | Description |
---|---|
start (query) |
integer(int64) The zero-based index of the first configuration group item to include in this page. The default 0 denotes the beginning of the collection. |
limit (query) |
integer(int32) The maximum number of configuration group representations to return in this page. |
sortBy (query) |
string Optional sort criteria. 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/configurations/configurationGroups/v1.0.0/profile.json",
"start": 10,
"limit": 10,
"count": 67,
"name": "configurationGroups",
"_links": {
"self": {
"href": "/transfers/configurations/groups?start=10&limit=10"
},
"first": {
"href": "/transfers/configurations/groups?start=0&limit=10"
},
"next": {
"href": "/transfers/configurations/groups?start=20&limit=10"
},
"collection": {
"href": "/transfers/configurations/groups"
}
},
"_embedded": {
"items": [
{
"_profile": "https://api.apiture.com/schemas/configurations/configurationGroup/v1.0.0/profile.json",
"_links": {
"self": {
"href": "/configurations/groups/basic"
},
"apiture:configuration": {
"href": "/configuration"
}
},
"name": "basic",
"label": "Basic Settings",
"description": "The basic settings for the Transfers API"
},
{
"_profile": "https://api.apiture.com/schemas/configurations/configurationGroup/v1.0.0/profile.json",
"_links": {
"self": {
"href": "/configurations/groups/calendar"
},
"apiture:configuration": {
"href": "/configuration"
}
},
"name": "calendar",
"label": "Calendar",
"description": "A calendar that specifies which dates are valid for performing transfers (e.g., weekdays excluding federal holidays)"
}
]
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: configurationGroups | |
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 |
getConfigurationGroup
Code samples
# You can also use wget
curl -X GET /transfers/configurations/groups/{groupName} \
-H 'Accept: application/hal+json' \
-H 'If-None-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /transfers/configurations/groups/{groupName} 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',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/transfers/configurations/groups/{groupName}',
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',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/configurations/groups/{groupName}',
{
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',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/transfers/configurations/groups/{groupName}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'If-None-Match': 'string',
'API-Key': 'API_KEY',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/transfers/configurations/groups/{groupName}', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/configurations/groups/{groupName}");
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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/transfers/configurations/groups/{groupName}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Fetch a representation of this configuration group
GET /configurations/groups/{groupName}
Return a HAL representation of this configuration group resource.
Parameters
Parameter | Description |
---|---|
groupName (path) |
string (required) The unique name of this configuration group. |
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
{
"_profile": "https://api.apiture.com/schemas/configurations/configurationGroup/v1.0.0/profile.json",
"_links": {
"self": {
"href": "/configurations/groups/basic"
},
"apiture:configuration": {
"href": "/configuration"
}
},
"name": "basic",
"label": "Basic Settings",
"description": "The basic settings for the Transfers API",
"schema": {
"type": "object",
"properties": {
"dailyLimit": {
"type": "number",
"description": "The daily limit for the number of transfers"
},
"cutoffTime": {
"type": "string",
"format": "time",
"description": "The cutoff time for scheduling transfers for the current day"
}
}
},
"values": {
"dailyLimit": 5,
"cutoffTime": "17:30:00"
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: configurationGroup | |
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 configuration group resource at the specified {groupName} The _error field in the response will contain details about the request error. | |
Schema: error |
Response Headers
Status | Description |
---|---|
200 | ETag string |
The ETag response header specifies an entity tag which may be provided in an If-None-Match request header for GET operations for this configuration group resource. |
getConfigurationGroupSchema
Code samples
# You can also use wget
curl -X GET /transfers/configurations/groups/{groupName}/schema \
-H 'Accept: application/hal+json' \
-H 'If-None-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /transfers/configurations/groups/{groupName}/schema 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',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/transfers/configurations/groups/{groupName}/schema',
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',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/configurations/groups/{groupName}/schema',
{
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',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/transfers/configurations/groups/{groupName}/schema',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'If-None-Match': 'string',
'API-Key': 'API_KEY',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/transfers/configurations/groups/{groupName}/schema', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/configurations/groups/{groupName}/schema");
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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/transfers/configurations/groups/{groupName}/schema", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Fetch the schema for this configuration group
GET /configurations/groups/{groupName}/schema
Return a HAL representation of this configuration group schema resource.
Parameters
Parameter | Description |
---|---|
groupName (path) |
string (required) The unique name of this configuration group. |
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
{
"type": "object",
"properties": {
"dailyLimit": {
"type": "number",
"description": "The daily limit for the number of transfers"
},
"cutoffTime": {
"type": "string",
"format": "time",
"description": "The cutoff time for scheduling transfers for the current day"
}
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: configurationSchema | |
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 configuration group resource at the specified {groupName} The _error field in the response will contain details about the request error. | |
Schema: error |
Response Headers
Status | Description |
---|---|
200 | ETag string |
The ETag response header specifies an entity tag which must be provided in an If-Match request header for PUT |
getConfigurationGroupValues
Code samples
# You can also use wget
curl -X GET /transfers/configurations/groups/{groupName}/values \
-H 'Accept: application/hal+json' \
-H 'If-None-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /transfers/configurations/groups/{groupName}/values 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',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/transfers/configurations/groups/{groupName}/values',
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',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/configurations/groups/{groupName}/values',
{
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',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/transfers/configurations/groups/{groupName}/values',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'If-None-Match': 'string',
'API-Key': 'API_KEY',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/transfers/configurations/groups/{groupName}/values', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/configurations/groups/{groupName}/values");
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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/transfers/configurations/groups/{groupName}/values", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Fetch the values for the specified configuration group
GET /configurations/groups/{groupName}/values
Return a representation of this configuration group values resource.
Parameters
Parameter | Description |
---|---|
groupName (path) |
string (required) The unique name of this configuration group. |
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
{
"dailyLimit": 5,
"cutoffTime": "17:30:00"
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: configurationValues | |
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 configuration group resource at the specified {groupName} The _error field in the response will contain details about the request error. | |
Schema: error |
Response Headers
Status | Description |
---|---|
200 | ETag string |
The ETag response header specifies an entity tag which must be provided in an If-Match request header for PUT |
updateConfigurationGroupValues
Code samples
# You can also use wget
curl -X PUT /transfers/configurations/groups/{groupName}/values \
-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 /transfers/configurations/groups/{groupName}/values 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: '/transfers/configurations/groups/{groupName}/values',
method: 'put',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
const fetch = require('node-fetch');
const inputBody = '{
"dailyLimit": 5,
"cutoffTime": "17:30:00"
}';
const headers = {
'Content-Type':'application/hal+json',
'Accept':'application/hal+json',
'If-Match':'string',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/configurations/groups/{groupName}/values',
{
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 '/transfers/configurations/groups/{groupName}/values',
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('/transfers/configurations/groups/{groupName}/values', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/configurations/groups/{groupName}/values");
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", "/transfers/configurations/groups/{groupName}/values", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Update the values for the specified configuration group
PUT /configurations/groups/{groupName}/values
Perform a complete replacement of this set of values. This operation is reserved for administrators.
Body parameter
{
"dailyLimit": 5,
"cutoffTime": "17:30:00"
}
Parameters
Parameter | Description |
---|---|
groupName (path) |
string (required) The unique name of this configuration group. |
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) |
configurationValues (required) |
Example responses
200 Response
{
"type": "object",
"properties": {
"dailyLimit": {
"type": "number",
"description": "The daily limit for the number of transfers"
},
"cutoffTime": {
"type": "string",
"format": "time",
"description": "The cutoff time for scheduling transfers for the current day"
}
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: configurationSchema | |
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 | |
403 | Forbidden |
Access denied. Only administrators may use this operation. | |
Schema: errorResponse | |
404 | Not Found |
Not Found. There is no such configuration group resource at the specified {groupName} The _error field in the response will contain details about the request error. | |
Schema: error | |
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. The input does not conform to the required schema. | |
Schema: errorResponse |
Response Headers
Status | Description |
---|---|
200 | ETag string |
The ETag response header specifies an entity tag which must be provided in an If-Match request header for PUT |
getConfigurationGroupValue
Code samples
# You can also use wget
curl -X GET /transfers/configurations/groups/{groupName}/values/{valueName} \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /transfers/configurations/groups/{groupName}/values/{valueName} HTTP/1.1
Accept: application/hal+json
var headers = {
'Accept':'application/hal+json',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/transfers/configurations/groups/{groupName}/values/{valueName}',
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',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/configurations/groups/{groupName}/values/{valueName}',
{
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',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/transfers/configurations/groups/{groupName}/values/{valueName}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'API-Key': 'API_KEY',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/transfers/configurations/groups/{groupName}/values/{valueName}', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/configurations/groups/{groupName}/values/{valueName}");
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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/transfers/configurations/groups/{groupName}/values/{valueName}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Fetch a single value associated with the specified configuration group
GET /configurations/groups/{groupName}/values/{valueName}
Fetch a single value associated with this configuration group. This provides convenient access to the individual values` of the configuration group.
The response is always a JSON value which can be parsed with a strict JSON parser. The response may be
- a primitive number, boolean, or quoted JSON string.
- a JSON array.
- a JSON object.
null
.
Examples:
"a string configuration value"
120
true
null
{ "borderWidth": 8, "foregroundColor": "blue" }
To update a specific value, use PUT /transfers/configurations/groups/{groupName}/values/{valueName}
(operation updateConfigurationGroupValue
).
Parameters
Parameter | Description |
---|---|
groupName (path) |
string (required) The unique name of this configuration group. |
valueName (path) |
string (required) The unique name of a value in a configuration group. This is the name of the value in the schema . A {valueName} must be a simple identifier following the pattern letter [letter | digit | '-' | '_']* |
Example responses
200 Response
{}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: Inline | |
404 | Not Found |
Not Found. There is either no such configuration group resource at the specified {groupName} or no such value at the specified {valueName} . The _error field in the response will contain details about the request error. | |
Schema: error |
Response Schema
Response Headers
Status | Description |
---|---|
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 configuration group resource. |
updateConfigurationGroupValue
Code samples
# You can also use wget
curl -X PUT /transfers/configurations/groups/{groupName}/values/{valueName} \
-H 'Content-Type: application/hal+json' \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
PUT /transfers/configurations/groups/{groupName}/values/{valueName} 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: '/transfers/configurations/groups/{groupName}/values/{valueName}',
method: 'put',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
const fetch = require('node-fetch');
const inputBody = 'string';
const headers = {
'Content-Type':'application/hal+json',
'Accept':'application/hal+json',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
fetch('/transfers/configurations/groups/{groupName}/values/{valueName}',
{
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',
'API-Key' => 'API_KEY',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.put '/transfers/configurations/groups/{groupName}/values/{valueName}',
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.put('/transfers/configurations/groups/{groupName}/values/{valueName}', params={
}, headers = headers)
print r.json()
URL obj = new URL("/transfers/configurations/groups/{groupName}/values/{valueName}");
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"},
"API-Key": []string{"API_KEY"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "/transfers/configurations/groups/{groupName}/values/{valueName}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Update a single value associated with the specified configuration group
PUT /configurations/groups/{groupName}/values/{valueName}
Update a single value associated with this configuration group. This provides convenient access to individual values
of the configuration group as defined in the configuration group's schema
. The request body must conform to the configuration group's schema for the named {valueName}
. This operation is idempotent.
The request body must be a JSON value which can be parsed with a strict JSON parser. The response may be
- a primitive number, boolean, or quoted JSON string.
- a JSON array.
- a JSON object.
null
.
Examples:
"a string configuration value"
120
true
null
{ "borderWidth": 8, "foregroundColor": "blue" }
To fetch specific value, use GET /transfers/configurations/groups/{groupName}/values/{valueName}
(operation getConfigurationGroupValue
).
This operation is reserved for administrators.
Body parameter
"string"
Parameters
Parameter | Description |
---|---|
groupName (path) |
string (required) The unique name of this configuration group. |
valueName (path) |
string (required) The unique name of a value in a configuration group. This is the name of the value in the schema . A {valueName} must be a simple identifier following the pattern letter [letter | digit | '-' | '_']* |
body (body) |
string (required) The request body must a valid JSON value and should be parsable with a JSON parser. The result may be a string, number, boolean, array, or object. |
Example responses
200 Response
"string"
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: string | |
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 | |
403 | Forbidden |
Access denied. Only administrators may use this operation. | |
Schema: errorResponse | |
422 | Unprocessable Entity |
Unprocessable Entity. The input does not conform to the required schema. | |
Schema: errorResponse |
Response Headers
Status | Description |
---|---|
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 configuration group resource. |
Schemas
transferFields
{
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"schedule": {
"start": "2018-06-10",
"every": "P14D",
"count": 5,
"first": true,
"last": false,
"maximumCount": 10,
"end": "2018-08-01"
},
"type": "internal",
"initialFunding": false,
"visibility": "visible",
"confirmationId": "4OehPba97q7----0-8--bk--"
}
Common Transfer Fields
Fields of the transfer resource, used to build other model schema.
Properties
Name | Description |
---|---|
amount | positiveMoney The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds. Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance. |
description | string A description of this transfer. maxLength: 4096
|
schedule | schedule Describes when the transfer is scheduled to occur. |
type | string The type of transfer. An This field is optional, but immutable after being set. The default is
|
initialFunding | boolean If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This field is immutable after creating a transfer. This must be false for recurring transfers. |
visibility | string The transfer may be visible or hidden. Some transfers are micro-deposit ACH transfers into a local account from an external account as part of external account verification. These transfers are hidden from the user: the user may only see the transfer amounts by viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the /scheduledTransfers and /pastTransfers collections. Financial institution administrators, however, can view hidden transfers.
|
confirmationId | string The confirmation id that the transfer request was received for processing. read-only maxLength: 32
|
createScheduledTransfer
{
"_profile": "https://api.apiture.com/schemas/transfers/createScheduledTransfer/v1.0.0/profile.json",
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"initialFunding": false,
"schedule": {
"start": "2018-02-05",
"maximumCount": 36,
"every": "P1M",
"end": "2021-04-05"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:creator": {
"href": "/users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6"
}
}
}
Create Scheduled Transfer
Representation used to schedule a new transfer. The request includes the amount of the transfer and the schedule in the body, and the source and target accounts in the request's _links
via the link relations apiture:source
and apiture:target
, and the user who scheduled the transfer in the request's _links
via the link relation apiture:creator
.
Properties
Name | Description |
---|---|
_links | object (required) 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. |
amount | positiveMoney (required) The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds. Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance. |
description | string A description of this transfer. maxLength: 4096
|
schedule | schedule (required) Describes when the transfer is scheduled to occur. |
type | string The type of transfer. An This field is optional, but immutable after being set. The default is
|
initialFunding | boolean If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This field is immutable after creating a transfer. This must be false for recurring transfers. |
visibility | string The transfer may be visible or hidden. Some transfers are micro-deposit ACH transfers into a local account from an external account as part of external account verification. These transfers are hidden from the user: the user may only see the transfer amounts by viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the /scheduledTransfers and /pastTransfers collections. Financial institution administrators, however, can view hidden transfers.
|
confirmationId | string The confirmation id that the transfer request was received for processing. read-only maxLength: 32
|
summaryScheduledTransfer
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/summaryScheduledTransfer/v1.0.0/profile.json",
"_links": {
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
}
},
"state": "recurring",
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"initialFunding": false,
"schedule": {
"start": "2018-02-05",
"maximumCount": 36,
"count": 11,
"every": "P1M",
"end": "2021-04-05"
}
}
Scheduled Transfer Summary
Summary representation of a scheduled transfer resource. The summary includes the transfer ID, description, amount, state, and schedule, and the _links
indicate the source and target accounts. 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. For transfers which have failed, the _error
object will describe the error circumstances.
Properties
Name | Description |
---|---|
_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. |
amount | positiveMoney The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds. Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance. |
description | string A description of this transfer. maxLength: 4096
|
schedule | schedule Describes when the transfer is scheduled to occur. |
type | string The type of transfer. An This field is optional, but immutable after being set. The default is
|
initialFunding | boolean If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This field is immutable after creating a transfer. This must be false for recurring transfers. |
visibility | string The transfer may be visible or hidden. Some transfers are micro-deposit ACH transfers into a local account from an external account as part of external account verification. These transfers are hidden from the user: the user may only see the transfer amounts by viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the /scheduledTransfers and /pastTransfers collections. Financial institution administrators, however, can view hidden transfers.
|
confirmationId | string The confirmation id that the transfer request was received for processing. read-only maxLength: 32
|
state | string The state of the transfer. This is a derived and immutable value. The Transfers service processing updates the state . The state can be one of the following:
The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via
|
_id | string The unique identifier for this transfer resource. This is an immutable opaque string. |
summaryPastTransfer
{
"_links": {
"property1": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
},
"property2": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
}
},
"_embedded": {},
"_profile": "http://example.com",
"_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": []
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"schedule": {
"start": "2018-06-10",
"every": "P14D",
"count": 5,
"first": true,
"last": false,
"maximumCount": 10,
"end": "2018-08-01"
},
"type": "internal",
"initialFunding": false,
"visibility": "visible",
"confirmationId": "4OehPba97q7----0-8--bk--",
"state": "scheduled",
"_id": "string"
}
Past Transfer Summary
Summary representation of a past transfer resource. The summary includes the transfer ID, description, amount, state, and schedule, and the _links
indicate the source and target accounts. 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. For transfers which have failed, the _error
object will describe the error circumstances.
Properties
Name | Description |
---|---|
_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. |
amount | positiveMoney The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds. Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance. |
description | string A description of this transfer. maxLength: 4096
|
schedule | schedule Describes when the transfer is scheduled to occur. |
type | string The type of transfer. An This field is optional, but immutable after being set. The default is
|
initialFunding | boolean If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This field is immutable after creating a transfer. This must be false for recurring transfers. |
visibility | string The transfer may be visible or hidden. Some transfers are micro-deposit ACH transfers into a local account from an external account as part of external account verification. These transfers are hidden from the user: the user may only see the transfer amounts by viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the /scheduledTransfers and /pastTransfers collections. Financial institution administrators, however, can view hidden transfers.
|
confirmationId | string The confirmation id that the transfer request was received for processing. read-only maxLength: 32
|
state | string The state of the transfer. This is a derived and immutable value. The Transfers service processing updates the state . The state can be one of the following:
The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via
|
_id | string The unique identifier for this transfer resource. This is an immutable opaque string. |
updateScheduledTransfer
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/scheduledTransfer/v1.0.0/profile.json",
"state": "recurring",
"amount": {
"value": "356.40",
"currency": "USD"
},
"description": "Car payment",
"initialFunding": false,
"schedule": {
"start": "2018-02-05",
"maximumCount": 36,
"count": 11,
"every": "P1M",
"end": "2021-04-05"
},
"_links": {
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
}
}
}
Update Scheduled Transfer
Representation used to update or patch an existing scheduled transfer. The representation includes the transfer ID, description, amount, state, and schedule, and the _links
indicate the source and target accounts. An update to a transfer ignores the _embedded
object.
Properties
Name | Description |
---|---|
_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. |
amount | positiveMoney The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds. Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance. |
description | string A description of this transfer. maxLength: 4096
|
schedule | schedule Describes when the transfer is scheduled to occur. |
type | string The type of transfer. An This field is optional, but immutable after being set. The default is
|
initialFunding | boolean If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This field is immutable after creating a transfer. This must be false for recurring transfers. |
visibility | string The transfer may be visible or hidden. Some transfers are micro-deposit ACH transfers into a local account from an external account as part of external account verification. These transfers are hidden from the user: the user may only see the transfer amounts by viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the /scheduledTransfers and /pastTransfers collections. Financial institution administrators, however, can view hidden transfers.
|
confirmationId | string The confirmation id that the transfer request was received for processing. read-only maxLength: 32
|
state | string The state of the transfer. This is a derived and immutable value. The Transfers service processing updates the state . The state can be one of the following:
The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via
|
_id | string The unique identifier for this transfer resource. This is an immutable opaque string. |
transferAccount
{
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
}
Transfer Account
Summary properties of the source and target account for a transfer.
Properties
Name | Description |
---|---|
accountTitle | string The title of the account. Traditionally, this is the name of the account holder. This field is deprecated and will be removed in a future release; use title instead.
maxLength: 512
|
title | string The title of the account. Traditionally, this is the name of the account holder. maxLength: 512
|
institutionName | string The name of the financial institution. read-only minLength: 2
maxLength: 128
|
routingNumber | string The account routing number which identifies the financial institution. The full routing number and full account number are required to fully identify the account. read-only minLength: 9
maxLength: 9
|
accountNumbers | accountNumbers The account numbers for this account read-only |
transferAttribution
{
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"sourceAccount": {
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
},
"targetAccount": {
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
}
}
Transfer Derived Fields
Fields of transfers which are derived, used to build other schemas.
Properties
Name | Description |
---|---|
createdBy | string The user who created/scheduled the transfer. |
createdAt | string(date-time) The RFC 3339 UTC date-time when the transfer was scheduled/created. |
modifiedBy | string The user who last modified the scheduled transfer. |
modifiedAt | string(date-time) The RFC 3339 UTC date-time when the transfer was last modified. |
sourceAccount | transferAccount Summary properties of the source account for a transfer |
targetAccount | transferAccount Summary properties of the target account for a transfer |
scheduledTransfer
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/scheduledTransfer/v1.0.0/profile.json",
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"_links": {
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:creator": {
"href": "/users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
},
"_embedded": {
"transactions": {
"start": 0,
"count": 3,
"items": [
{
"_id": "da8682e3-cc0b-4a1a-b8d2-8ce4dc45bf36",
"occurredAt": "2018-02-05T11:10:00.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "a847c5c7-4a34-4464-b514-5ca1680cc00d",
"occurredAt": "2018-03-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
},
{
"_id": "d9ab0002-2cbb-4a4c-a01f-c3ce3ad20782",
"occurredAt": "2018-04-05T11:11:17.375Z",
"amount": {
"value": "345.50",
"currency": "USD",
"description": "Car payment"
}
}
]
},
"source": {
"_id": "34f8bec8-3939-4b7e-9ad5-10ee059ab250",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "Personal Savings",
"productName": "Basic Personal Savings",
"type": "Personal Savings",
"subtype": "Basic Personal Savings",
"state": "active",
"balance": {
"current": "3450.30",
"available": "3450.30",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/34f8bec8-3939-4b7e-9ad5-10ee059ab250"
}
}
},
"target": {
"_id": "c9839d60-73e5-47ba-9676-ca8138e9494d",
"_profile": "https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json",
"name": "My Basic Checking",
"productName": "Basic Personal Checking",
"type": "Personal Checking",
"subtype": "Basic Personal Checking",
"state": "active",
"balance": {
"current": "450.12",
"available": "450.12",
"currency": "USD"
},
"_links": {
"self": {
"href": "https://api.apiture.com/accounts/c9839d60-73e5-47ba-9676-ca8138e9494d"
}
}
},
"_links": {
"self": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"state": "recurring",
"schedule": {
"start": "2018-02-05",
"count": 3,
"every": "P1M",
"end": "2021-04-05"
}
}
Scheduled Transfer
Representation of a transfer resource: a transfer of funds from one account to another. A transfer consists of an amount, a source account, a target account, and a schedule which specifies a one-time transfer or a recurring transfer. In addition to the normal self
link, The links for a transfer include:
apiture:transactions
- the collection of completed transactions associated with this transfer.apiture:source
- The source account where funds will be debited.apiture:target
- The target account where funds will be credited.apiture:cancel
- Cancel a transfer; this link is only available if the transfer may be canceled.apiture:suspend
- Suspend a transfer; this link is only available if the transfer may be suspended.apiture:suspend
- Resume a suspended transfer; this link is only available if the transfer is suspended.apiture:creator
- The user who scheduled the transfer
The _embedded
object contains transactions
, which contains the first page of transactions matching this transfer, and the summary representations of the source
and target
accounts.
Properties
Name | Description |
---|---|
_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. |
amount | positiveMoney The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds. Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance. |
description | string A description of this transfer. maxLength: 4096
|
schedule | schedule Describes when the transfer is scheduled to occur. |
type | string The type of transfer. An This field is optional, but immutable after being set. The default is
|
initialFunding | boolean If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This field is immutable after creating a transfer. This must be false for recurring transfers. |
visibility | string The transfer may be visible or hidden. Some transfers are micro-deposit ACH transfers into a local account from an external account as part of external account verification. These transfers are hidden from the user: the user may only see the transfer amounts by viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the /scheduledTransfers and /pastTransfers collections. Financial institution administrators, however, can view hidden transfers.
|
confirmationId | string The confirmation id that the transfer request was received for processing. read-only maxLength: 32
|
state | string The state of the transfer. This is a derived and immutable value. The Transfers service processing updates the state . The state can be one of the following:
The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via
|
_id | string The unique identifier for this transfer resource. This is an immutable opaque string. |
createdBy | string The user who created/scheduled the transfer. |
createdAt | string(date-time) The RFC 3339 UTC date-time when the transfer was scheduled/created. |
modifiedBy | string The user who last modified the scheduled transfer. |
modifiedAt | string(date-time) The RFC 3339 UTC date-time when the transfer was last modified. |
sourceAccount | transferAccount Summary properties of the source account for a transfer |
targetAccount | transferAccount Summary properties of the target account for a transfer |
configuration
{
"_links": {
"self": {
"href": "/transfers/configurations/"
},
"apiture:groups": {
"href": "/transfers/configurations/groups"
}
}
}
Configuration
Represents the configuration for the Transfers API.
Properties
Name | Description |
---|---|
_links | links An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.
|
configurationGroups
{
"_profile": "https://api.apiture.com/schemas/configurations/configurationGroups/v1.0.0/profile.json",
"start": 10,
"limit": 10,
"count": 67,
"name": "configurationGroups",
"_links": {
"self": {
"href": "/transfers/configurations/groups?start=10&limit=10"
},
"first": {
"href": "/transfers/configurations/groups?start=0&limit=10"
},
"next": {
"href": "/transfers/configurations/groups?start=20&limit=10"
},
"collection": {
"href": "/transfers/configurations/groups"
}
},
"_embedded": {
"items": [
{
"_profile": "https://api.apiture.com/schemas/configurations/configurationGroup/v1.0.0/profile.json",
"_links": {
"self": {
"href": "/configurations/groups/basic"
},
"apiture:configuration": {
"href": "/configuration"
}
},
"name": "basic",
"label": "Basic Settings",
"description": "The basic settings for the Transfers API"
},
{
"_profile": "https://api.apiture.com/schemas/configurations/configurationGroup/v1.0.0/profile.json",
"_links": {
"self": {
"href": "/configurations/groups/calendar"
},
"apiture:configuration": {
"href": "/configuration"
}
},
"name": "calendar",
"label": "Calendar",
"description": "A calendar that specifies which dates are valid for performing transfers (e.g., weekdays excluding federal holidays)"
}
]
}
}
Configuration Group Collection
Collection of configuration groups. 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
Name | Description |
---|---|
_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 | [configurationGroupSummary] An array containing a page of configuration group 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. |
configurationGroupSummary
{
"_links": {
"property1": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
},
"property2": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
}
},
"_embedded": {},
"_profile": "http://example.com",
"_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": []
}
},
"name": "transfers",
"label": "Transfers Configuration",
"description": "The configuration for the Transfers API."
}
Configuration Group Summary
A summary of the data contained within a configuration group resource.
Properties
Name | Description |
---|---|
_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. |
name | string The name of this configuration group, must be unique within the set of all resources of this type. minLength: 1
maxLength: 48
pattern: [a-zA-Z][-\w_]*
|
label | string The text label for this resource, suitable for presentation to the client. minLength: 1
maxLength: 128
|
description | string The full description for this resource, suitable for presentation to the client. minLength: 1
maxLength: 4096
|
configurationGroup
{
"_profile": "https://api.apiture.com/schemas/configurations/configurationGroup/v1.0.0/profile.json",
"_links": {
"self": {
"href": "/configurations/groups/basic"
},
"apiture:configuration": {
"href": "/configuration"
}
},
"name": "basic",
"label": "Basic Settings",
"description": "The basic settings for the Transfers API",
"schema": {
"type": "object",
"properties": {
"dailyLimit": {
"type": "number",
"description": "The daily limit for the number of transfers"
},
"cutoffTime": {
"type": "string",
"format": "time",
"description": "The cutoff time for scheduling transfers for the current day"
}
}
},
"values": {
"dailyLimit": 5,
"cutoffTime": "17:30:00"
}
}
Configuration Group
Represents a configuration group.
Properties
Name | Description |
---|---|
_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. |
name | string The name of this configuration group, must be unique within the set of all resources of this type. minLength: 1
maxLength: 48
pattern: [a-zA-Z][-\w_]*
|
label | string The text label for this resource, suitable for presentation to the client. minLength: 1
maxLength: 128
|
description | string The full description for this resource, suitable for presentation to the client. minLength: 1
maxLength: 4096
|
schema | configurationSchema The schema which defines the name and types of the variables that are part of this configuration definition. Property names must be simple identifiers consisting of alphanumeric characters, - , _ following the pattern letter [letter | digit | '-' | '_']* This is implicitly a schema for type: object and contains the properties. The |
values | configurationValues The data associated with this configuration: the resource's variable names and values. These values must conform to this item's schema . Note: the |
configurationSchema
{
"type": "object",
"properties": {
"dailyLimit": {
"type": "number",
"description": "The daily limit for the number of transfers"
},
"cutoffTime": {
"type": "string",
"format": "time",
"description": "The cutoff time for scheduling transfers for the current day"
}
}
}
Configuration Schema
The schema which defines the name and types of the variables that are part of this configuration definition. Property names must be simple identifiers consisting of alphanumeric characters, -
, following the pattern
letter [letter | digit | '-' | '
']* This is implicitly a schema for type: object
and contains the properties.
The values
in a configuration conform to the schema. The names and types are described with a subset of JSON Schema Core and JSON Schema Validation similar to that used to define schemas in OpenAPI Specification 2.0.
Properties
configurationValues
{
"dailyLimit": 5,
"cutoffTime": "17:30:00"
}
Configuration Values
The data associated with this configuration: the resource's variable names and values. These values must conform to this item's schema
.
Note: the schema
may also contain default
values which, if present, are used if a value is not set in the definition's values
. For example, multiple configurations may use the same schema that defines values a
, b
, and c
, but each configuration may have their own unique values for a
, b
, and c
which is separate from the schema.
Properties
pastTransfer
{
"_links": {
"property1": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
},
"property2": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
}
},
"_embedded": {},
"_profile": "http://example.com",
"_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": []
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"schedule": {
"start": "2018-06-10",
"every": "P14D",
"count": 5,
"first": true,
"last": false,
"maximumCount": 10,
"end": "2018-08-01"
},
"type": "internal",
"initialFunding": false,
"visibility": "visible",
"confirmationId": "6e5413df-9574-4568-b0c4-dfd96bbb454b",
"state": "scheduled",
"_id": "string",
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"sourceAccount": {
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
},
"targetAccount": {
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
},
"completedAt": "2018-05-08T14:08:50.375Z"
}
Past Transfer
Represents a transfer that has been processed or canceled (one that is no longer scheduled).
If the state
of the processed transfer is failed
, the _error
object will contain details of the failure, including a message
. The _error.type
field will be an identifier string, one of:
insufficientFunds
- the source account did not have sufficient funds at the time the transfer was processed.frozenAccount
- The source or target account was frozen at the time the transfer was processed. The_error.attributes.account
will indicate which account, one ofsource
ortarget
.amountOutOfRange
- The transfer amount was outside the account minimum and maximum at the time the transfer was processed. The_error.attributes.minimum
and_error.attributes.maximum
will indicate the allowed range (these values are positiveMoney/currency objects).inactiveAccount
- The source or target account was inactive at the time the transfer was processed. The_error.attributes.account
will indicate which account, one ofsource
ortarget
.invalidAccount
- The source or target account was invalid for some other reason at the time the transfer was processed. The_error.attributes.account
will indicate which account, one ofsource
ortarget
.inactiveUser
- The user account was inactive at the time the transfer was processed.missingAccountNumber
- The account number was missing for the source or target account at the time the transfer was processed. The_error.attributes.account
will indicate which account, one ofsource
ortarget
.
Properties
Name | Description |
---|---|
_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. |
amount | positiveMoney The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds. Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance. |
description | string A description of this transfer. maxLength: 4096
|
schedule | schedule Describes when the transfer is scheduled to occur. |
type | string The type of transfer. An This field is optional, but immutable after being set. The default is
|
initialFunding | boolean If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This field is immutable after creating a transfer. This must be false for recurring transfers. |
visibility | string The transfer may be visible or hidden. Some transfers are micro-deposit ACH transfers into a local account from an external account as part of external account verification. These transfers are hidden from the user: the user may only see the transfer amounts by viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the /scheduledTransfers and /pastTransfers collections. Financial institution administrators, however, can view hidden transfers.
|
confirmationId | string A unique transaction confirmation ID. |
state | string The state of the transfer. This is a derived and immutable value. The Transfers service processing updates the state . The state can be one of the following:
The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via
|
_id | string The unique identifier for this transfer resource. This is an immutable opaque string. |
createdBy | string The user who created/scheduled the transfer. |
createdAt | string(date-time) The RFC 3339 UTC date-time when the transfer was scheduled/created. |
modifiedBy | string The user who last modified the scheduled transfer. |
modifiedAt | string(date-time) The RFC 3339 UTC date-time when the transfer was last modified. |
sourceAccount | transferAccount Summary properties of the source account for a transfer |
targetAccount | transferAccount Summary properties of the target account for a transfer |
completedAt | string(date-time) The date/time when the transfer was completed. |
transfer
{
"_links": {
"property1": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
},
"property2": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
}
},
"_embedded": {},
"_profile": "http://example.com",
"_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": []
}
},
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"schedule": {
"start": "2018-06-10",
"every": "P14D",
"count": 5,
"first": true,
"last": false,
"maximumCount": 10,
"end": "2018-08-01"
},
"type": "internal",
"initialFunding": false,
"visibility": "visible",
"confirmationId": "4OehPba97q7----0-8--bk--",
"state": "scheduled",
"_id": "string",
"createdBy": "lucille-4700",
"createdAt": "2018-05-08T13:37:57.375Z",
"modifiedBy": "lucille-4700",
"modifiedAt": "2018-05-18T16:42:57.000Z",
"sourceAccount": {
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
},
"targetAccount": {
"accountTitle": "John Smith",
"title": "John Smith",
"institutionName": "3rd Party Bank",
"routingNumber": "021000021",
"accountNumbers": {
"masked": "*************3210",
"full": "9876543210"
}
}
}
Transfer
Note: This model schema is deprecated and only used by deprecated operations. See scheduledTransfer instead.
Representation of a transfer resource: a transfer of funds from one account to another.
Properties
Name | Description |
---|---|
_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. |
amount | positiveMoney The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds. Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance. |
description | string A description of this transfer. maxLength: 4096
|
schedule | schedule Describes when the transfer is scheduled to occur. |
type | string The type of transfer. An This field is optional, but immutable after being set. The default is
|
initialFunding | boolean If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This field is immutable after creating a transfer. This must be false for recurring transfers. |
visibility | string The transfer may be visible or hidden. Some transfers are micro-deposit ACH transfers into a local account from an external account as part of external account verification. These transfers are hidden from the user: the user may only see the transfer amounts by viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the /scheduledTransfers and /pastTransfers collections. Financial institution administrators, however, can view hidden transfers.
|
confirmationId | string The confirmation id that the transfer request was received for processing. read-only maxLength: 32
|
state | string The state of the transfer. This is a derived and immutable value. The Transfers service processing updates the state . The state can be one of the following:
The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via
|
_id | string The unique identifier for this transfer resource. This is an immutable opaque string. |
createdBy | string The user who created/scheduled the transfer. |
createdAt | string(date-time) The RFC 3339 UTC date-time when the transfer was scheduled/created. |
modifiedBy | string The user who last modified the scheduled transfer. |
modifiedAt | string(date-time) The RFC 3339 UTC date-time when the transfer was last modified. |
sourceAccount | transferAccount Summary properties of the source account for a transfer |
targetAccount | transferAccount Summary properties of the target account for a transfer |
scheduledTransfers
{
"_profile": "https://api.apiture.com/schemas/transfers/transfers/v1.0.0/profile.json",
"start": 10,
"limit": 10,
"count": 67,
"name": "transfers",
"_links": {
"self": {
"href": "/transfers/scheduledTransfers?start=10&limit=10"
},
"first": {
"href": "/transfers/scheduledTransfers?start=0&limit=10"
},
"next": {
"href": "/transfers/scheduledTransfers?start=20&limit=10"
},
"collection": {
"href": "/transfers/scheduledTransfers"
}
},
"_embedded": {
"items": [
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/summaryScheduledTransfer/v1.0.0/profile.json",
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"state": "recurring",
"schedule": {
"start": "2018-02-05",
"count": 3,
"every": "P1M",
"end": "2021-04-05"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"self": {
"href": "/transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
}
},
{
"_id": "a3bbba3c-d26b-497d-87b7-09eb47b24d77",
"_profile": "https://api.apiture.com/schemas/transfers/summaryScheduledTransfer/v1.0.0/profile.json",
"amount": {
"value": "120.0",
"currency": "USD"
},
"description": "Monthly allowance for Suzy's college expenses and meals",
"state": "recurring",
"schedule": {
"start": "2018-08-01",
"count": 24,
"every": "P1M",
"end": "2020-05-15"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/4fda6275-0a3b-49ad-ad12-5ebcd7013362"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77"
},
"self": {
"href": "/transfers/scheduledTransfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77"
}
}
}
]
}
}
Scheduled Transfer Collection
Collection of scheduled transfers. 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
Name | Description |
---|---|
_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 | [summaryScheduledTransfer] An array containing a page of transfer 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. |
pastTransfers
{
"_profile": "https://api.apiture.com/schemas/transfers/pastTransfers/v1.0.0/profile.json",
"start": 10,
"limit": 10,
"count": 67,
"name": "transfers",
"_links": {
"self": {
"href": "/transfers/pastTransfers?start=10&limit=10"
},
"first": {
"href": "/transfers/pastTransfers?start=0&limit=10"
},
"next": {
"href": "/transfers/pastTransfers?start=20&limit=10"
},
"collection": {
"href": "/transfers/pastTransfers"
}
},
"_embedded": {
"items": [
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/transfers/summaryPastTransfer/v1.0.0/profile.json",
"amount": {
"value": "345.50",
"currency": "USD"
},
"description": "Car payment",
"state": "recurring",
"schedule": {
"start": "2018-02-05",
"count": 3,
"every": "P1M",
"end": "2021-04-05"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"self": {
"href": "/transfers/pastTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c"
}
}
},
{
"_id": "a3bbba3c-d26b-497d-87b7-09eb47b24d77",
"_profile": "https://api.apiture.com/schemas/transfers/summaryPastTransfer/v1.0.0/profile.json",
"amount": {
"value": "120.0",
"currency": "USD"
},
"description": "Monthly allowance for Suzy's college expenses and meals",
"state": "recurring",
"schedule": {
"start": "2018-08-01",
"count": 24,
"every": "P1M",
"end": "2020-05-15"
},
"_links": {
"apiture:source": {
"href": "/accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2"
},
"apiture:target": {
"href": "/accounts/externalAccounts/4fda6275-0a3b-49ad-ad12-5ebcd7013362"
},
"apiture:transactions": {
"href": "/transaction?transfer=/transfers/transfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77"
},
"self": {
"href": "/transfers/pastTransfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77"
}
}
}
]
}
}
Past Transfers Collection
Collection of past transfers. 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
Name | Description |
---|---|
_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 | [summaryPastTransfer] An array containing a page of transfer 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. |
attributes
{}
Attributes
An optional map of name/value pairs which contains additional dynamic data about the resource.
Properties
schedule
{
"start": "2018-06-10",
"every": "P14D",
"count": 5,
"first": true,
"last": false,
"maximumCount": 10,
"end": "2018-08-01"
}
Schedule
A definition for a one-time or recurring scheduled transfer. Some financial institutions may limit scheduled transfers such that the transfer must be within 365 days.
Properties
Name | Description |
---|---|
start | string When the transaction occurs, or when a recurring transfer begins. This may be either a date in RFC 3339 yyyy-mm-dd format, or a date-time in RFC 3339 yyyy-mm-ddTHH:MM:SSZ UTC format. If present, the time portion is a _hint_; the FI may not be able to schedule transfers at specific times. If start is omitted, the transfer will be scheduled for the next processing day. If start is the current day, the transfer may be scheduled for the next processing day if transfer processing has stopped for the day.
|
every | string The every period indicates the interval at which the transfer recurs, such as every week, every month, every 3 months. If omitted or empty, this transfer is a one-time transfer. every is required if either maximumCount is greater than 1 or if end is greater than start . This value is an ISO 8601 duration string of the form Some financial institutions may limit recurring transfers such that the period must be a year ( Scheduling may adjust transfer dates if |
count | integer For a recurring transfer, this is the number of transfers which have been processed. It is a derived value and ignored on updates. read-only |
first | boolean If true for a monthly, recurring transfer, this value indicates that all future transfers in the series should be executed on the first processing day of the month. The first transfer in the series executes according to the optional start date, if supplied. This value is ignored if included on non-monthly recurring transfer series. It is an error if both first and last are true.
|
last | boolean If true for a monthly, recurring transfer, this value indicates that all future transfers in the series should be executed on the last processing day of the month. The first transfer in the series executes according to the optional start date, if supplied. This value is ignored if included on non-monthly recurring transfer series. It is an error if both first and last are true.
|
maximumCount | integer The maximum number of transfers to perform for a recurring transfer. (Transfers in the recurrence will stop if the current date is beyond that set by end, even if fewer than maximumCounttransfers have occurred). The everyperiod is required if maximumCountor endis set. It is an error (422) if maximumCountis anything other than 0 or 1 and everyis not set. If a schedule contains both endand maximumCount`, the earliest will determine when the recurrence ends. Otherwise, the Transfers service will compute the other field.
|
end | string The date when the recurring transfer end (inclusive). Transfers will occur until the maximumCount of transfers have occurred or the next scheduled transaction will be after the date or date-time specified in end . (Earliest of maximumCount or end wins.) If specified, end must be no earlier than start . This has the same format as When scheduling a transfer, the request should contain either |
positiveMoney
{
"value": "3456.78",
"currency": "str"
}
Positive Money
An amount of money in a specific currency, supporting only positive amounts.
Properties
Name | Description |
---|---|
value | string The monetary value, supporting only positive amounts. The numeric value is represented as a string so that it can be exact with no loss of precision. |
currency | string The ISO 4217 currency code for this monetary value. This is always upper case ASCII. minLength: 3
maxLength: 3
|
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
Name | Description |
---|---|
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. |
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
Name | Description |
---|---|
_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
Name | Description |
---|---|
_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. |
accountNumbers
{
"masked": "*************3210",
"full": "9876543210"
}
Account Numbers
Different representations of an account number.
Properties
Name | Description |
---|---|
masked | string A partial account number that does not contain all the digits of the full account number. This masked number appears in statements or in user experience presentation. It is sufficient for a user to differentiate this account from other accounts they hold, but is not sufficient for initiating transfers, etc. The first character is the mask character and is repeated; this does not indicate that the full account number is the same as the mask length. This value is derived and immutable. read-only minLength: 8
maxLength: 32
|
full | string The full account number. This value only appears when ?unmasked=true is passed on the GET request. Not included in the summary representation of the account that is included in account collection responses. This value is derived and immutable.
read-only minLength: 4
maxLength: 17
|
links
{
"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
Name | Description |
---|---|
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.
|
link
{
"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
Name | Description |
---|---|
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. |