Audit v0.8.1
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
The Audit API provides read-only access to Apiture system audit records, which track user online banking activity. This API is available to administrators only, not bank customers. Only activity processed by Apiture APIs and services is available through this API.
This API manages two primary resources: audit records of user or other activity, and audit record types which are metadata that describe the data in the audit records.
Each audit record contains the type
of the record, the user who
performed the activity, the URI of related resources, a time stamp,
and a data
object containing type
-specific properties of the activity;
see the record
schema below.
Administrator users of this API can filter audit records using most of these values.
The content of each audit record is defined with an audit record type which
describes the content of all audit records of that type.
The audit record type contains its name, label, description and a JSON schema object which defines
the data types and descriptions of the data
property of an audit record.
See the recordType
schema below.
There is a many-to-one relationship between audit records and audit record types.
Audit record queries
The getAuditRecords
operation supports querying by the fields
common to all audit records:
?type=
, ?category=
, ?user=
, ?host=
, ?uri=
,
(To filter by date/time, see Time-bound queries below.)
Audit records by user
Each audit record contains the customerId
of the user who performed
the auditable action, if it is known.
The customerId
is the unique customerId
of the user's resource from the
Users service. This indicates who performed the audited activity.
In some cases, administrators at the financial institution can perform
some actions on behalf of users from an administrative application.
If this occurs, the audit record's customerId
will be the ID of
the administrator, and the onBehalfOf
value will be the
customer ID of the financial institution customer. The ?user={customerId}
query parameter on getAuditRecords
matches either the customerId
property or the onBehalfOf
property.
The customer ID is not always known. For example, if an administrator
reverses a transaction in the core servicing application and that
reversal flows into Apiture resources, Apiture may not be able
to attribute the activity to a user, but will still create an audit
record for the activity. The customerId
has the value <system>
for
audit records for such operations. Please consult the audit
records in the banking core or servicing application to track such
activity.
Time-bound queries
The audit record views also support time-bounded queries. By default, the
getAuditRecords
and getAuditRecordsByType
operations return
records for the current day (based on the date component of the record's occurredAt
field),
in reverse chronological order.
These date-time bounds can be passed explicitly to override the defaults:
- Pass the
startAt
andendAt
to find any records which overlap that date range. For example, to fetch for the first six days of September 2019, request?startAt=2019-09-01&period=P6D
. - Pass the
startAt
to find audit records beginning at that date or date-time. The optionalperiod
determines how many minutes, hours, or days of data to include in the paginated response. - Pass the
endAt
to return audit records which occurred up to specified date or date time. The optionalperiod
determines how many minutes, hours, or days of data to include in the paginated response. For example, to fetch for the last six days of September 2019, request?startAt=2019-09-30&period=P6D
.
The default period is P1D
.
To fetch records for the last six days, request just ?period=P6D
;
use ?period=PT1H
to select just the past one hour of data.
This result list of records is sorted in reverse chronological order
unless startAt
is specified.
(The default endAt
is the current instant.)
period
is not allowed if both startAt
and endAt
are passed.
To find transfers scheduled in September 2019,
specify a startAt
of September 1 and a period
of P1M
(one month):
GET /audit/recordsByType?type=transferScheduled&startAt=2019-09-01&period=P1M
startAt
and endAt
may be either specific date or date-time values in
RFC 3339 format
(YYYY-MM-DD
or YYYY-MM-DDThh:mm:ss.sssZ
).
Caution: The occurredAt
time is in UTC time zone;
adjust start and end times to account for local time zones.
Audit record pagination
The audit records support cursor-based pagination rather than
index-based pagination. The start
property in the collection and
the ?start=
query parameter in the next
link are opaque strings
which represent the pagination cursor. The audit record collection
uses cursor based pagination because new audit records are likely to
be added to the collection while a client is paging, and using index
paged pagination is likely to result in visiting the same records
again. (For example, the first GET
returns records 0 to 1000.
Before the next GET, 210 new audit records may be added, so an
index-based pagination request for the next 1,000 items, GET /audit/records?start=1000
, will start at record 1,000 instead of the
desired 1,210, and the result would contain 210 items that were also
in the first page.)
Often, pagination is bounded by the date-time query parameters as described above.
For example, for ?startAt=2019-09-01&period=P1M
, the response will only
page through audit records for the one month period starting
2019-09-01. If the collection response's _links
object includes the apiture:skip
link, that link will skip to the next or previous time period, such as
?startAt=2019-10-01&period=P1M
.
When the page parameters use ?startAt=
, the apiture:skip
link will
skip by adding the period to the start date-time.
When the page parameters use ?endAt=
, the apiture:skip
link will
skip by subtracting the period from the end date-time.
Skip link does not appear if the query includes
both ?startAt=
and ?endAt=
query parameters.
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 = /auth/oauth2/authorize
- Token URL = /auth/oauth2/token
- OAuth2 client access token authentication. The client authenticates against the server at
Scope | Scope Description |
---|---|
admin/read |
Read access to audit records |
Audit Record
Audit Record
getAuditRecords
Code samples
# You can also use wget
curl -X GET /audit/records \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /audit/records HTTP/1.1
Accept: application/hal+json
var headers = {
'Accept':'application/hal+json',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/audit/records',
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('/audit/records',
{
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 '/audit/records',
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('/audit/records', params={
}, headers = headers)
print r.json()
URL obj = new URL("/audit/records");
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", "/audit/records", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Return audit records
GET /records
Return a paginated sortable collection of audit records which satisfy the filtering query parameters. By default, this returns records for the past 24 hours, in reverse chronological order. This result list of records is sorted in reverse chronological order unless ?startAt=
is specified. The links in the response include pagination links as described in the records
schema.
Parameters
Parameter | Description |
---|---|
type (query) |
string Restrict audit records to those matching this record type. Multiple types may be specified, separated by | . |
category (query) |
string Restrict audit records to those matching this record type category. Multiple categories may be specified, separated by | . |
user (query) |
string Restrict audit records to those where either the customerId or onBehalfOf fields match this value. |
host (query) |
string Restrict audit records to those matching this client host IP address. |
startAt (query) |
string(date) The start date or date-time of the time-bounded query. May be combined with endAt or period but not both. This may be either a date or date-time in RFC 3339 UTC format (YYYY-MM-DD or YYYY-MM-DDThh:mm:ss.sssZ ). If only a date is passed, the time of day is 00:00:00 . The default startAt date-time is 24 hours before the current instant. Using startAt will change the sort order from reverse to forward chronological order. |
endAt (query) |
string(date) The end date of the time-bounded query. May be combined with startAt or period but not both. This may be either a date or date-time in RFC 3339 UTC format (YYYY-MM-DD or YYYY-MM-DDThh:mm:ss.sssZ ). If only a date is passed, the time of day is 24:00:00 . The default endAt is the current instant. |
period (query) |
string(period) The time period for the date-time range, looking backwards from endAt (or today, if endAt is omitted), or forward from startAt . The period is a ISO 8601 duration. For example, to list audit records for the last 6 days, use ?period=P6D . The default is P1D indicating one day of data. Examples of period values: P1M (one month), P2W (two weeks), P5D (five days), PT12H (twelve hours), PT30M (30 minutes) and PT30S (30 seconds). Default: "P1D" |
uri (query) |
string(uri) Restrict audit records to where primaryUri or secondaryUri match this URI parameter value. This string is a relative URI only, without the absolute https://host URL prefix. Example: ?uri=/accounts/account/b6512168-20fc-4a8c-80dd-8670f76ea356 |
start (query) |
string Represents the first record of the page of results. This is supplied by the service when paginating items: the next link includes a ?start= query parameter which refers to beginning of the next page of items. |
limit (query) |
integer(int32) The maximum number of audit record representations to return in this page. Default: 100 |
sortBy (query) |
string Optional sort criteria. See sort criteria format, such as ?sortBy=field1,-field2 . |
Try It
Example responses
200 Response
{
"_profile": "https://api.apiture.com/schemas/audit/records/v1.0.0/profile.json",
"start": "eyJjdXJzb3IiOiAiMzIwMCJ9",
"limit": 1000,
"name": "records",
"_links": {
"self": {
"href": "/audit/records?category=transfers"
},
"next": {
"href": "/audit/records?category=transfers&start=eyJjdXJzb3IiOiAiNDIwMCJ9&limit=1000"
},
"collection": {
"href": "/audit/records"
}
},
"_embedded": {
"items": {
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/audit/record/v1.0.0/profile.json",
"type": "transferScheduled",
"occurredAt": "2019-09-13T05:03:50.375Z",
"username": "lucy.wellphunded@bankcustomer.example.com",
"host": "13.226.38.34",
"primaryUri": "/transfers/scheduledTransfer/a727ff2a-08ea-42ce-b8dc-edea60646819",
"data": {
"sourceAccount": "9876543210",
"sourceRoutingNumber": "021000021",
"targetAccount": "9876543219",
"targetRoutingNumber": "021000021",
"amount": "1500.00",
"currency": "USD",
"start": {}
},
"links": {
"self": {
"href": "/audit/records/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:type": {
"href": "/audit/types/transferScheduled"
}
}
}
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: records |
Status | Description |
---|---|
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 |
Status | Description |
---|---|
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 |
getAuditRecord
Code samples
# You can also use wget
curl -X GET /audit/records/{recordId} \
-H 'Accept: application/hal+json' \
-H 'If-None-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /audit/records/{recordId} 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: '/audit/records/{recordId}',
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('/audit/records/{recordId}',
{
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 '/audit/records/{recordId}',
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('/audit/records/{recordId}', params={
}, headers = headers)
print r.json()
URL obj = new URL("/audit/records/{recordId}");
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", "/audit/records/{recordId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Fetch a representation of this audit record
GET /records/{recordId}
Return a HAL representation of this audit record resource.
Parameters
Parameter | Description |
---|---|
recordId (path) |
string (required) The unique identifier of this audit record. 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. |
Try It
Example responses
200 Response
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/audit/record/v1.0.0/profile.json",
"type": "transferScheduled",
"occurredAt": "2019-09-13T05:03:50.375Z",
"customerId": "32bc88e4003d061f4fdb",
"username": "lucy.wellphunded@bankcustomer.example.com",
"host": "13.226.38.34",
"primaryUri": "/transfers/scheduledTransfer/a727ff2a-08ea-42ce-b8dc-edea60646819",
"data": {
"sourceAccount": "9876543210",
"sourceRoutingNumber": "021000021",
"targetAccount": "9876543219",
"targetRoutingNumber": "021000021",
"amount": "1500.00",
"currency": "USD",
"start": {}
},
"links": {
"self": {
"href": "/audit/records/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:type": {
"href": "/audit/types/transferScheduled"
}
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: record |
Status | Description |
---|---|
304 | Not Modified |
Not Modified. The resource has not been modified since it was last fetched. |
Status | Description |
---|---|
404 | Not Found |
Not Found. There is no such audit record resource at the specified {recordId} . 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 audit record resource. |
Audit Record Type
Audit Record Types
getAuditRecordTypes
Code samples
# You can also use wget
curl -X GET /audit/types \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /audit/types HTTP/1.1
Accept: application/hal+json
var headers = {
'Accept':'application/hal+json',
'API-Key':'API_KEY',
'Authorization':'Bearer {access-token}'
};
$.ajax({
url: '/audit/types',
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('/audit/types',
{
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 '/audit/types',
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('/audit/types', params={
}, headers = headers)
print r.json()
URL obj = new URL("/audit/types");
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", "/audit/types", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Return a collection of audit record types
GET /types
Return a collection of audit record types.
Try It
Example responses
200 Response
{
"_profile": "https://api.apiture.com/schemas/audit/recordTypes/v1.0.0/profile.json",
"start": 0,
"count": 67,
"name": "recordTypes",
"_links": {
"self": {
"href": "/audit/recordTypes?start=10&limit=10"
},
"collection": {
"href": "/audit/recordTypes"
}
},
"_embedded": {
"items": {
"name": "transferScheduled",
"_profile": "https://api.apiture.com/schemas/audit/recordType/v1.0.0/profile.json",
"label": "Transfer Scheduled",
"category": "transfers",
"categoryLabel": "Transfers",
"version": "1.0.0",
"description": "The user scheduled a one-time or recurring transfer.",
"_links": {
"self": {
"href": "/audit/recordTypes/transferScheduled"
}
},
"schema": {
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://api.apiture.com/schemas/audit/transferScheduled/v1.0.0/schema.json",
"x-apiture-name": "transferScheduled",
"x-apiture-category": "transfers",
"x-apiture-categoryLabel": "Transfers",
"x-apiture-primaryUri": "The transfer resource",
"x-apiture-secondaryUri": "The source account",
"type": "object",
"title": "Transfer Scheduled",
"description": "The user scheduled a one-time or recurring transfer.",
"required": [
"sourceAccountNumber",
"sourceRoutingNumber",
"targetAccountNumber",
"targetRoutingNumber",
"amount",
"currency",
"start"
],
"properties": {
"sourceAccountNumber": {
"description": "The account number where funds are withdrawn.",
"type": "string"
},
"sourceRoutingNumber": {
"description": "The routing number of the financial institution where funds are withdrawn.",
"type": "string"
},
"targetAccountNumber": {
"description": "The account number where funds are deposited.",
"type": "string"
},
"targetRoutingNumber": {
"description": "The routing number of the financial institution where funds are deposited.",
"type": "string"
},
"amount": {
"description": "The amount that was scheduled to transfer.",
"type": "string"
},
"currency": {
"description": "The [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217) for this monetary value. This is always upper case ASCII.",
"type": "string",
"minLength": 3,
"maxLength": 3
},
"start": {
"description": "When the transfer occurs, or when a recurring transfer begins.\n",
"type": "string",
"example": "2018-06-10"
},
"every": {
"description": "For recurring transfers, how often the tranfser recurs.",
"type": "string",
"example": "P1M"
},
"count": {
"description": "For a recurring transfer, this is the number of transfers which have been processed. It is a derived value and ignored on updates.",
"type": "integer",
"example": 5
},
"first": {
"description": "If `true`, future transfers in the series should be executed on the _first_ processing day of the month.",
"type": "boolean",
"example": true
},
"last": {
"description": "If `true`, future transfers in the series should be executed on the _last_ processing day of the month.",
"type": "boolean",
"example": false
},
"maximumCount": {
"description": "The maximum number of transfers to perform for a recurring transfer.",
"type": "integer",
"example": 10
},
"end": {
"description": "Do not schedule transfers beyond this date.",
"type": "string",
"example": "2018-08-01"
}
}
}
}
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: recordTypes |
getAuditRecordType
Code samples
# You can also use wget
curl -X GET /audit/types/{recordTypeId} \
-H 'Accept: application/hal+json' \
-H 'If-None-Match: string' \
-H 'API-Key: API_KEY' \
-H 'Authorization: Bearer {access-token}'
GET /audit/types/{recordTypeId} 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: '/audit/types/{recordTypeId}',
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('/audit/types/{recordTypeId}',
{
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 '/audit/types/{recordTypeId}',
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('/audit/types/{recordTypeId}', params={
}, headers = headers)
print r.json()
URL obj = new URL("/audit/types/{recordTypeId}");
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", "/audit/types/{recordTypeId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
Fetch a representation of this audit record type
GET /types/{recordTypeId}
Return a HAL representation of this audit record type resource.
Parameters
Parameter | Description |
---|---|
recordTypeId (path) |
string (required) The unique identifier of this audit record type. This is an opaque string. |
If-None-Match (header) |
string The entity tag that was returned in the ETag response. If the resource's current entity tag matches, the GET will return 304 (Not Modified) and no response body, else the resource representation will be returned. |
Try It
Example responses
200 Response
{
"name": "transferScheduled",
"_profile": "https://api.apiture.com/schemas/audit/recordType/v1.0.0/profile.json",
"label": "Transfer Scheduled",
"category": "transfers",
"categoryLabel": "Transfers",
"version": "1.0.0",
"description": "The user scheduled a one-time or recurring transfer.",
"_links": {
"self": {
"href": "/audit/recordTypes/transferScheduled"
}
},
"schema": {
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://api.apiture.com/schemas/audit/transferScheduled/v1.0.0/schema.json",
"x-apiture-name": "transferScheduled",
"x-apiture-category": "transfers",
"x-apiture-categoryLabel": "Transfers",
"x-apiture-primaryUri": "The transfer resource",
"x-apiture-secondaryUri": "The source account",
"type": "object",
"title": "Transfer Scheduled",
"description": "The user scheduled a one-time or recurring transfer.",
"required": [
"sourceAccountNumber",
"sourceRoutingNumber",
"targetAccountNumber",
"targetRoutingNumber",
"amount",
"currency",
"start"
],
"properties": {
"sourceAccountNumber": {
"description": "The account number where funds are withdrawn.",
"type": "string"
},
"sourceRoutingNumber": {
"description": "The routing number of the financial institution where funds are withdrawn.",
"type": "string"
},
"targetAccountNumber": {
"description": "The account number where funds are deposited.",
"type": "string"
},
"targetRoutingNumber": {
"description": "The routing number of the financial institution where funds are deposited.",
"type": "string"
},
"amount": {
"description": "The amount that was scheduled to transfer.",
"type": "string"
},
"currency": {
"description": "The [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217) for this monetary value. This is always upper case ASCII.",
"type": "string",
"minLength": 3,
"maxLength": 3
},
"start": {
"description": "When the transfer occurs, or when a recurring transfer begins.\n",
"type": "string",
"example": "2018-06-10"
},
"every": {
"description": "For recurring transfers, how often the tranfser recurs.",
"type": "string",
"example": "P1M"
},
"count": {
"description": "For a recurring transfer, this is the number of transfers which have been processed. It is a derived value and ignored on updates.",
"type": "integer",
"example": 5
},
"first": {
"description": "If `true`, future transfers in the series should be executed on the _first_ processing day of the month.",
"type": "boolean",
"example": true
},
"last": {
"description": "If `true`, future transfers in the series should be executed on the _last_ processing day of the month.",
"type": "boolean",
"example": false
},
"maximumCount": {
"description": "The maximum number of transfers to perform for a recurring transfer.",
"type": "integer",
"example": 10
},
"end": {
"description": "Do not schedule transfers beyond this date.",
"type": "string",
"example": "2018-08-01"
}
}
}
}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: recordType |
Status | Description |
---|---|
304 | Not Modified |
Not Modified. The resource has not been modified since it was last fetched. |
Status | Description |
---|---|
404 | Not Found |
Not Found. There is no such audit record type resource at the specified {recordTypeId} . 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 audit record type resource. |
API
Endpoints which describe this API.
getApi
Code samples
# You can also use wget
curl -X GET /audit/ \
-H 'Accept: application/hal+json' \
-H 'API-Key: API_KEY'
GET /audit/ HTTP/1.1
Accept: application/hal+json
var headers = {
'Accept':'application/hal+json',
'API-Key':'API_KEY'
};
$.ajax({
url: '/audit/',
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('/audit/',
{
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 '/audit/',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/hal+json',
'API-Key': 'API_KEY'
}
r = requests.get('/audit/', params={
}, headers = headers)
print r.json()
URL obj = new URL("/audit/");
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", "/audit/", 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.
Try It
Example responses
200 Response
{
"id": "apiName",
"name": "API name",
"apiVersion": "1.0.0",
"_profile": "https://production.api.apiture.com/schemas/common/root/v2.0.0/profile.json",
"_links": {}
}
Responses
getApiDoc
Code samples
# You can also use wget
curl -X GET /audit/apiDoc \
-H 'Accept: application/json' \
-H 'API-Key: API_KEY'
GET /audit/apiDoc HTTP/1.1
Accept: application/json
var headers = {
'Accept':'application/json',
'API-Key':'API_KEY'
};
$.ajax({
url: '/audit/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('/audit/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 '/audit/apiDoc',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'API-Key': 'API_KEY'
}
r = requests.get('/audit/apiDoc', params={
}, headers = headers)
print r.json()
URL obj = new URL("/audit/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", "/audit/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.
Try It
Example responses
200 Response
{}
Responses
Status | Description |
---|---|
200 | OK |
OK | |
Schema: Inline |
Response Schema
Schemas
abstractRequest
{
"_profile": "{uri of resource profile.json}",
"_links": {
"self": {
"href": "{uri of current resource}"
}
}
}
Abstract Request (v2.0.0)
An abstract schema used to define other request-only schemas. This is a HAL resource representation, minus the _error
defined in abstractResource
.
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.
|
_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. |
abstractResource
{
"_profile": "{uri of resource profile.json}",
"_links": {
"self": {
"href": "{uri of current resource}"
}
}
}
Abstract Resource (v2.0.0)
An abstract schema used to define other schemas for request and response bodies. This is a HAL resource representation. This model contains hypermedia _links
, and either optional domain object data with _profile
and optional _embedded
objects, or an _error
object. In responses, if the operation was successful, this object will not include the _error
, but if the operation was a 4xx or 5xx error, this object will not include _embedded
or any data fields, only _error
and optionally _links
.
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.
|
_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. |
attributeValue
{}
Attribute Value (v2.0.0)
The data associated with this attribute.
Properties
attributes
{
"property1": {},
"property2": {}
}
Attributes (v2.0.0)
An optional map of name/value pairs which contains additional dynamic data about the resource.
Properties
Name | Description |
---|---|
additionalProperties | attributeValue The data associated with this attribute. |
collection
{
"_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": "2eae46e1575c0a7b0115a4b3",
"message": "Descriptive error message...",
"statusCode": 422,
"type": "errorType1",
"remediation": "Remediation string...",
"occurredAt": "2018-01-25T05:50:52.375Z",
"errors": [
{
"_id": "ccdbe2c5c938a230667b3827",
"message": "An optional embedded error"
},
{
"_id": "dbe9088dcfe2460f229338a3",
"message": "Another optional embedded error"
}
],
"_links": {
"describedby": {
"href": "https://developer.apiture.com/errors/errorType1"
}
}
},
"count": 0,
"start": 0,
"limit": 0,
"name": "string"
}
Collection (v2.0.0)
A collection of resources. This is an abstract model schema which is extended to define specific resource collections.
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.
|
_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. |
count | integer The number of items in the collection. This value is optional and may be omitted if the count is not computable efficiently. If a filter is applied to the collection (either implicitly or explicitly), the count, if present, indicates the number of items that satisfy the filter. |
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. |
cursorPagedCollection
{
"_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": "2eae46e1575c0a7b0115a4b3",
"message": "Descriptive error message...",
"statusCode": 422,
"type": "errorType1",
"remediation": "Remediation string...",
"occurredAt": "2018-01-25T05:50:52.375Z",
"errors": [
{
"_id": "ccdbe2c5c938a230667b3827",
"message": "An optional embedded error"
},
{
"_id": "dbe9088dcfe2460f229338a3",
"message": "Another optional embedded error"
}
],
"_links": {
"describedby": {
"href": "https://developer.apiture.com/errors/errorType1"
}
}
},
"start": "string",
"limit": 0,
"name": "string"
}
Cursor Paged Collection (v2.0.0)
A collection of resources, or a page from a larger collection. This is an abstract model schema which is extended to define specific resource collections. Pages are referenced using an opaque string starting point named start
. The _links
in the collection may contain pagination links:
- the
next
link returns the next page of items. If there is nonext
link, the collection has been exhausted. - the
first
link returns to the beginning of the filtered/sorted collection. - the
collection
link returns to the beginning of the default collection with no explicit filter or sort criteria.
Cursor paged collections can only paginate forwards contiguously (without skipping items or pages), or reset to the beginning of the collection. This pagination works for collections which are likely to change during pagination, such as adding data to the beginning of the collection's natural sort order. Examples include transactions or audit records.
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.
|
_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. |
start | string An opaque marker representing the position of the current page in this resource collection. The service will use the start and limit to compute the ?start= query parameter for the next page when it provides the next link in the collection's _links .
|
limit | integer The maximum number of items per page. |
name | string A name for the items in collection. |
error
{
"_id": "2eae46e1575c0a7b0115a4b3",
"message": "Descriptive error message...",
"statusCode": 422,
"type": "errorType1",
"remediation": "Remediation string...",
"occurredAt": "2018-01-25T05:50:52.375Z",
"errors": [
{
"_id": "ccdbe2c5c938a230667b3827",
"message": "An optional embedded error"
},
{
"_id": "dbe9088dcfe2460f229338a3",
"message": "Another optional embedded error"
}
],
"_links": {
"describedby": {
"href": "https://developer.apiture.com/errors/errorType1"
}
}
}
Error (v2.0.0)
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. read-only
|
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.
|
errorResponse
{
"_profile": "https://api.apiture.com/schemas/common/errorResponse/v2.0.0/profile.json",
"_error": {
"_id": "2eae46e1-575c-4d69-8a8f-0a7b0115a4b3",
"message": "The value for deposit must be greater than 0.",
"statusCode": 422,
"type": "positiveNumberRequired",
"attributes": {
"value": -125.5
},
"remediation": "Provide a value which is greater than 0",
"occurredAt": "2018-01-25T05:50:52.375Z",
"_links": {
"describedby": {
"href": "https://api.apiture.com/errors/positiveNumberRequired"
}
},
"_embedded": {
"errors": []
}
}
}
Error Response (v2.0.0)
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 | 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 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. |
link
{
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
}
Link (v1.0.0)
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. |
links
{
"property1": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
},
"property2": {
"href": "/contacts/contacts/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
"title": "Applicant"
}
}
Links (v1.0.0)
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.
|
record
{
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/audit/record/v1.0.0/profile.json",
"type": "transferScheduled",
"occurredAt": "2019-09-13T05:03:50.375Z",
"customerId": "32bc88e4003d061f4fdb",
"username": "lucy.wellphunded@bankcustomer.example.com",
"host": "13.226.38.34",
"primaryUri": "/transfers/scheduledTransfer/a727ff2a-08ea-42ce-b8dc-edea60646819",
"data": {
"sourceAccount": "9876543210",
"sourceRoutingNumber": "021000021",
"targetAccount": "9876543219",
"targetRoutingNumber": "021000021",
"amount": "1500.00",
"currency": "USD",
"start": {}
},
"links": {
"self": {
"href": "/audit/records/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:type": {
"href": "/audit/types/transferScheduled"
}
}
}
Audit Record
A data record representing an auditable banking activity or action performed by a user. This conveys:
- who did something (
customerId
,username
,onBehalfOf
), - what they did (
type
,category
), - when they did it (
occurredAt
), - where they did it (
host
), - what they did it to (
primaryUri
,secondaryUri
) - additional
data
that is specific to the activitytype
.
The type
is a key into the set of audit record types (see getAuditRecordType
, GET /audit/recordTypes/{type}
). An audit record has a link (apiture:type
) to the this audit record type resource. The record type contains a JSON schema that describes the data in the record's data
object.
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.
|
_embedded | object An optional map of nested resources, mapping each nested resource name to a nested resource representation. |
_profile | string(uri) The URI of a resource profile which describes the representation. |
_error | error An object which describes an error. This value is omitted if the operation succeeded without error. |
_id | string The unique identifier for this audit record. This is an immutable opaque string. read-only
|
type | string (required) The type of this audit record. This is the key into the set of audit record types. read-only
minLength: 4
maxLength: 48
|
category | number (required) Multiple record types can all belong to a category of types; this is an identifier for the category, derived from the record type named by type . This is a lowerCamelCase string.
read-only
minLength: 8
maxLength: 40
|
occurredAt | string(date-time) (required) The date-time when the action occurred or logged. The time is approximate. This is an RFC 3339 UTC date-time string. read-only
|
customerId | string The customer ID of the user who performed the action. If an administrator is performing the action on behalf of a customer, this is the administrator's ID; see also onBehalfOf .
read-only
|
onBehalfOf | string If the audit record was generated when an admin was emulating a user, this is the customer ID of the user whom the administrator is acting on behalf of. ( customerId will be the ID of the administrator user.)
read-only
|
username | string The user name of the user who performed the action. For failed login attempts, this is the username that the user tried to authenticate with. For most other operations, this is the username of the user. Note that since users may change their username, this is the username that was in effect when the audit record was created. If an administrator is performing the action on behalf of a customer, this is the administrator's user name. This may be <system> if the operation was performed by a system process. See also onBehalfOf .
read-only
|
host | string The host IP address of client which was used for this activity. read-only
|
primaryUri | string(uri) The URI of the primary resource that this activity applies to. For example, if a transfer if scheduled or canceled, this is the URI of the transfer. read-only
maxLength: 191
|
secondaryUri | string(uri) The URI of a secondary resource that this activity applies to. read-only
maxLength: 191
|
data | object Additional properties of the audit record, represented as a type -specific object. The schema of this data is found in the schema property of the corresponding /audit/recordTypes/{type} resource. The /records collection does not support sorting and filtering based on the properties in this data object.
read-only
|
recordType
{
"name": "transferScheduled",
"_profile": "https://api.apiture.com/schemas/audit/recordType/v1.0.0/profile.json",
"label": "Transfer Scheduled",
"category": "transfers",
"categoryLabel": "Transfers",
"version": "1.0.0",
"description": "The user scheduled a one-time or recurring transfer.",
"_links": {
"self": {
"href": "/audit/recordTypes/transferScheduled"
}
},
"schema": {
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://api.apiture.com/schemas/audit/transferScheduled/v1.0.0/schema.json",
"x-apiture-name": "transferScheduled",
"x-apiture-category": "transfers",
"x-apiture-categoryLabel": "Transfers",
"x-apiture-primaryUri": "The transfer resource",
"x-apiture-secondaryUri": "The source account",
"type": "object",
"title": "Transfer Scheduled",
"description": "The user scheduled a one-time or recurring transfer.",
"required": [
"sourceAccountNumber",
"sourceRoutingNumber",
"targetAccountNumber",
"targetRoutingNumber",
"amount",
"currency",
"start"
],
"properties": {
"sourceAccountNumber": {
"description": "The account number where funds are withdrawn.",
"type": "string"
},
"sourceRoutingNumber": {
"description": "The routing number of the financial institution where funds are withdrawn.",
"type": "string"
},
"targetAccountNumber": {
"description": "The account number where funds are deposited.",
"type": "string"
},
"targetRoutingNumber": {
"description": "The routing number of the financial institution where funds are deposited.",
"type": "string"
},
"amount": {
"description": "The amount that was scheduled to transfer.",
"type": "string"
},
"currency": {
"description": "The [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217) for this monetary value. This is always upper case ASCII.",
"type": "string",
"minLength": 3,
"maxLength": 3
},
"start": {
"description": "When the transfer occurs, or when a recurring transfer begins.\n",
"type": "string",
"example": "2018-06-10"
},
"every": {
"description": "For recurring transfers, how often the tranfser recurs.",
"type": "string",
"example": "P1M"
},
"count": {
"description": "For a recurring transfer, this is the number of transfers which have been processed. It is a derived value and ignored on updates.",
"type": "integer",
"example": 5
},
"first": {
"description": "If `true`, future transfers in the series should be executed on the _first_ processing day of the month.",
"type": "boolean",
"example": true
},
"last": {
"description": "If `true`, future transfers in the series should be executed on the _last_ processing day of the month.",
"type": "boolean",
"example": false
},
"maximumCount": {
"description": "The maximum number of transfers to perform for a recurring transfer.",
"type": "integer",
"example": 10
},
"end": {
"description": "Do not schedule transfers beyond this date.",
"type": "string",
"example": "2018-08-01"
}
}
}
}
Audit Record Type
Representation of audit record type resources.
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.
|
_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 (required) The name of this audit record type type. This is a lowerCamelCase string. read-only
minLength: 8
maxLength: 40
|
label | string (required) A short label for this audit record type. read-only
minLength: 8
maxLength: 80
|
category | number (required) Multiple record types can all belong to a category of types; this is an identifier for the category. This is a lowerCamelCase string. read-only
minLength: 8
maxLength: 40
|
categoryLabel | string (required) A short text label for the category .
read-only
minLength: 8
maxLength: 80
|
version | string(semver) (required) The semantic version number of this record type and schema. read-only
|
description | string(markdown) (required) A longer description of this audit record type. read-only
minLength: 8
maxLength: 800
|
schema | object(json-schema) (required) A JSON schema object which defines the data that is associated with all audit records which use this audit record type. read-only
|
recordTypes
{
"_profile": "https://api.apiture.com/schemas/audit/recordTypes/v1.0.0/profile.json",
"start": 0,
"count": 67,
"name": "recordTypes",
"_links": {
"self": {
"href": "/audit/recordTypes?start=10&limit=10"
},
"collection": {
"href": "/audit/recordTypes"
}
},
"_embedded": {
"items": {
"name": "transferScheduled",
"_profile": "https://api.apiture.com/schemas/audit/recordType/v1.0.0/profile.json",
"label": "Transfer Scheduled",
"category": "transfers",
"categoryLabel": "Transfers",
"version": "1.0.0",
"description": "The user scheduled a one-time or recurring transfer.",
"_links": {
"self": {
"href": "/audit/recordTypes/transferScheduled"
}
},
"schema": {
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://api.apiture.com/schemas/audit/transferScheduled/v1.0.0/schema.json",
"x-apiture-name": "transferScheduled",
"x-apiture-category": "transfers",
"x-apiture-categoryLabel": "Transfers",
"x-apiture-primaryUri": "The transfer resource",
"x-apiture-secondaryUri": "The source account",
"type": "object",
"title": "Transfer Scheduled",
"description": "The user scheduled a one-time or recurring transfer.",
"required": [
"sourceAccountNumber",
"sourceRoutingNumber",
"targetAccountNumber",
"targetRoutingNumber",
"amount",
"currency",
"start"
],
"properties": {
"sourceAccountNumber": {
"description": "The account number where funds are withdrawn.",
"type": "string"
},
"sourceRoutingNumber": {
"description": "The routing number of the financial institution where funds are withdrawn.",
"type": "string"
},
"targetAccountNumber": {
"description": "The account number where funds are deposited.",
"type": "string"
},
"targetRoutingNumber": {
"description": "The routing number of the financial institution where funds are deposited.",
"type": "string"
},
"amount": {
"description": "The amount that was scheduled to transfer.",
"type": "string"
},
"currency": {
"description": "The [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217) for this monetary value. This is always upper case ASCII.",
"type": "string",
"minLength": 3,
"maxLength": 3
},
"start": {
"description": "When the transfer occurs, or when a recurring transfer begins.\n",
"type": "string",
"example": "2018-06-10"
},
"every": {
"description": "For recurring transfers, how often the tranfser recurs.",
"type": "string",
"example": "P1M"
},
"count": {
"description": "For a recurring transfer, this is the number of transfers which have been processed. It is a derived value and ignored on updates.",
"type": "integer",
"example": 5
},
"first": {
"description": "If `true`, future transfers in the series should be executed on the _first_ processing day of the month.",
"type": "boolean",
"example": true
},
"last": {
"description": "If `true`, future transfers in the series should be executed on the _last_ processing day of the month.",
"type": "boolean",
"example": false
},
"maximumCount": {
"description": "The maximum number of transfers to perform for a recurring transfer.",
"type": "integer",
"example": 10
},
"end": {
"description": "Do not schedule transfers beyond this date.",
"type": "string",
"example": "2018-08-01"
}
}
}
}
}
}
Audit Record Type Collection
Collection of audit record types. The items in the collection are listed in the _embedded.items
array; the name
is recordTypes
.
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.
|
_embedded | object Embedded objects. |
» items | [recordType] An array containing audit record type items. |
_profile | string(uri) The URI of a resource profile which describes the representation. |
_error | error An object which describes an error. This value is omitted if the operation succeeded without error. |
count | integer The number of items in the collection. This value is optional and may be omitted if the count is not computable efficiently. If a filter is applied to the collection (either implicitly or explicitly), the count, if present, indicates the number of items that satisfy the filter. |
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. |
records
{
"_profile": "https://api.apiture.com/schemas/audit/records/v1.0.0/profile.json",
"start": "eyJjdXJzb3IiOiAiMzIwMCJ9",
"limit": 1000,
"name": "records",
"_links": {
"self": {
"href": "/audit/records?category=transfers"
},
"next": {
"href": "/audit/records?category=transfers&start=eyJjdXJzb3IiOiAiNDIwMCJ9&limit=1000"
},
"collection": {
"href": "/audit/records"
}
},
"_embedded": {
"items": {
"_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
"_profile": "https://api.apiture.com/schemas/audit/record/v1.0.0/profile.json",
"type": "transferScheduled",
"occurredAt": "2019-09-13T05:03:50.375Z",
"username": "lucy.wellphunded@bankcustomer.example.com",
"host": "13.226.38.34",
"primaryUri": "/transfers/scheduledTransfer/a727ff2a-08ea-42ce-b8dc-edea60646819",
"data": {
"sourceAccount": "9876543210",
"sourceRoutingNumber": "021000021",
"targetAccount": "9876543219",
"targetRoutingNumber": "021000021",
"amount": "1500.00",
"currency": "USD",
"start": {}
},
"links": {
"self": {
"href": "/audit/records/0399abed-fd3d-4830-a88b-30f38b8a365c"
},
"apiture:type": {
"href": "/audit/types/transferScheduled"
}
}
}
}
}
Audit Record Collection
Collection of audit records. The items in the collection are ordered in the _embedded.items
array; the name
is records
. The top-level _links
object may contain pagination links (self
, next
, collection
). This collection is cursor based and only supports paginating forward one page at a time, with no direct index-based access to audit records. The collection is exhausted when there is no next
link. The response includes an apiture:skip
link if the query is time-bound (i.e. contains ?startAt=
or ?endAt=
but not both). That link will skip to the next or previous time period.
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.
|
_embedded | object Embedded objects. |
» items | [record] An array containing a page of audit record 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. |
start | string An opaque marker representing the position of the current page in this resource collection. The service will use the start and limit to compute the ?start= query parameter for the next page when it provides the next link in the collection's _links .
|
limit | integer The maximum number of items per page. |
name | string A name for the items in collection. |
root
{
"id": "apiName",
"name": "API name",
"apiVersion": "1.0.0",
"_profile": "https://production.api.apiture.com/schemas/common/root/v2.0.0/profile.json",
"_links": {}
}
API Root (v2.0.0)
A HAL response, with hypermedia _links
for the top-level resources and operations in 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.
|
_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. read-only
|
name | string This API's name. |
apiVersion | string This API's version. |