Audit v0.11.0

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 userId and coreCustomerId of the user who performed the auditable action, if it is known. The userId is the unique _id 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 operatorId will be the ID of the operator.

The user ID/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 userId 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:

  1. Pass the startAt and endAt to find any records which overlap that date range. For example, to fetch between September 10 and September 25, 2020, request ?startAt=2020-09-10&endAt=2020-09-25.
  2. Pass the startAt to find audit records beginning at that date or date-time. The optional period determines how many minutes, hours, or days of data up to and including the endAt to include in the paginated response. For example, to fetch for the first 14 days of September 2020, request ?startAt=2020-09-01&period=P14D.
  3. Pass the endAt to return audit records which occurred up to specified date or date time. The optional period determines how many minutes, hours, or days of data on or after the endAt date to include in the paginated response. For example, to fetch for the last six days of September 2020, request ?endAt=2020-09-30&period=P6D.

The default period is P1D. To fetch records for the last six days, request ?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 audit records from September 2020, specify a startAt of September 1 and a period of P1M (one month):

text GET /audit/recordsByType?type=transferScheduled&startAt=2020-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=2020-09-01&period=P1M, the response will only page through audit records for the one month period starting 2020-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=2020-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:

Terms of service

Email: Apiture Web: Apiture

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 private clientId (and optional clientSecret) as part of this flow. The client obtains an access token from the server at tokenUrl. It then passes the received access token via the Authorization: Bearer {access-token} header in subsequent API calls. The authorization process also returns a refresh token which the client should use to renew the access token before it expires.
    • Flow: authorizationCode
    • Authorization URL = https://auth.devbank.apiture.com/auth/oauth2/authorize
    • Token URL = https://api.devbank.apiture.com/auth/oauth2/token
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 https://api.devbank.apiture.com/audit/records \
  -H 'Accept: application/hal+json' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.devbank.apiture.com/audit/records HTTP/1.1
Host: api.devbank.apiture.com
Accept: application/hal+json

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

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

};

fetch('https://api.devbank.apiture.com/audit/records',
{
  method: 'GET',

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

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

};

$.ajax({
  url: 'https://api.devbank.apiture.com/audit/records',
  method: 'get',

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

require 'rest-client'
require 'json'

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

result = RestClient.get 'https://api.devbank.apiture.com/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('https://api.devbank.apiture.com/audit/records', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.devbank.apiture.com/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", "https://api.devbank.apiture.com/audit/records", data)
    req.Header = headers

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

Return audit records

GET https://api.devbank.apiture.com/audit/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

ParameterDescription
type
in: query
string
Restrict audit records to those matching this record type. Multiple types may be specified, separated by |.
category
in: query
string
Restrict audit records to those matching this record type category. Multiple categories may be specified, separated by |.
user
in: query
string
Restrict audit records to those where either the userId field match this value.
host
in: query
string
Restrict audit records to those matching this client host IP address.
startAt
in: 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.
format: date
endAt
in: 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.
format: date
period
in: 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).
format: period
default: "P1D"
uri
in: 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.
format: uri
start
in: 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
in: query
integer(int32)
The maximum number of audit record representations to return in this page.
format: int32
default: 100
sortBy
in: query
string
Optional sort criteria. See sort criteria format, such as ?sortBy=field1,-field2.
This collection may be sorted by the following properties:
occurredAt
userId
type.

Example responses

200 Response

{
  "_profile": "https://production.api.apiture.com/schemas/audit/records/v2.0.0/profile.json",
  "_links": {
    "self": {
      "href": "/audit/records?category=transfers"
    },
    "next": {
      "href": "/audit/records?category=transfers&start=eyJjdXJzb3IiOiAiNDIwMCJ9&limit=1000"
    },
    "collection": {
      "href": "/audit/records"
    }
  },
  "start": "eyJjdXJzb3IiOiAiMzIwMCJ9",
  "limit": 1000,
  "name": "records",
  "_embedded": {
    "items": [
      {
        "_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
        "_profile": "https://production.api.apiture.com/schemas/audit/record/v2.0.0/profile.json",
        "type": "transferScheduled",
        "occurredAt": "2019-09-13T05:03:50.375Z",
        "userId": "4f3ec1da-d4f3-4dbe-9ed6-ab02eed9de64",
        "username": "lucy.wellphunded",
        "coreCustomerId": "32bc88e4003d061f4fdb",
        "host": "13.226.38.34",
        "primaryUri": "https://production.api.apiture.com/transfers/scheduledTransfer/a727ff2a-08ea-42ce-b8dc-edea60646819",
        "data": {
          "sourceAccount": "9876543210",
          "sourceRoutingNumber": "021000021",
          "targetAccount": "9876543219",
          "targetRoutingNumber": "021000021",
          "amount": "1500.00",
          "currency": "USD",
          "start": "2019-10-15"
        },
        "links": {
          "self": {
            "href": "/audit/records/0399abed-fd3d-4830-a88b-30f38b8a365c"
          },
          "apiture:type": {
            "href": "/audit/types/transferScheduled"
          }
        }
      }
    ]
  }
}

Responses

StatusDescription
200 OK
OK.
Schema: records
StatusDescription
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
StatusDescription
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 https://api.devbank.apiture.com/audit/records/{recordId} \
  -H 'Accept: application/hal+json' \
  -H 'If-None-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.devbank.apiture.com/audit/records/{recordId} HTTP/1.1
Host: api.devbank.apiture.com
Accept: application/hal+json
If-None-Match: string

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

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

};

fetch('https://api.devbank.apiture.com/audit/records/{recordId}',
{
  method: 'GET',

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

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

};

$.ajax({
  url: 'https://api.devbank.apiture.com/audit/records/{recordId}',
  method: 'get',

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

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 'https://api.devbank.apiture.com/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('https://api.devbank.apiture.com/audit/records/{recordId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.devbank.apiture.com/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", "https://api.devbank.apiture.com/audit/records/{recordId}", data)
    req.Header = headers

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

Fetch a representation of this audit record

GET https://api.devbank.apiture.com/audit/records/{recordId}

Return a HAL representation of this audit record resource.

Parameters

ParameterDescription
recordId
in: path
string (required)
The unique identifier of this audit record. This is an opaque string.
If-None-Match
in: 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://production.api.apiture.com/schemas/audit/record/v2.0.0/profile.json",
  "_links": {
    "self": {
      "href": "https://api.devbank.apiture.com/apiName/resourceName/resourceId"
    }
  },
  "_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
  "type": "transferScheduled",
  "occurredAt": "2019-09-13T05:03:50.375Z",
  "userId": "4f3ec1da-d4f3-4dbe-9ed6-ab02eed9de64",
  "username": "lucy.wellphunded",
  "coreCustomerId": "32bc88e4003d061f4fdb",
  "host": "13.226.38.34",
  "primaryUri": "https://production.api.apiture.com/transfers/scheduledTransfer/a727ff2a-08ea-42ce-b8dc-edea60646819",
  "data": {
    "sourceAccount": "9876543210",
    "sourceRoutingNumber": "021000021",
    "targetAccount": "9876543219",
    "targetRoutingNumber": "021000021",
    "amount": "1500.00",
    "currency": "USD",
    "start": "2019-10-15"
  },
  "links": {
    "self": {
      "href": "/audit/records/0399abed-fd3d-4830-a88b-30f38b8a365c"
    },
    "apiture:type": {
      "href": "/audit/types/transferScheduled"
    }
  }
}

Responses

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

Audit Record Type

Audit Record Types

getAuditRecordTypes

Code samples

# You can also use wget
curl -X GET https://api.devbank.apiture.com/audit/types \
  -H 'Accept: application/hal+json' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.devbank.apiture.com/audit/types HTTP/1.1
Host: api.devbank.apiture.com
Accept: application/hal+json

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

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

};

fetch('https://api.devbank.apiture.com/audit/types',
{
  method: 'GET',

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

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

};

$.ajax({
  url: 'https://api.devbank.apiture.com/audit/types',
  method: 'get',

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

require 'rest-client'
require 'json'

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

result = RestClient.get 'https://api.devbank.apiture.com/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('https://api.devbank.apiture.com/audit/types', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.devbank.apiture.com/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", "https://api.devbank.apiture.com/audit/types", data)
    req.Header = headers

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

Return a collection of audit record types

GET https://api.devbank.apiture.com/audit/types

Return a collection of audit record types.

Example responses

200 Response

{
  "_profile": "https://production.api.apiture.com/schemas/audit/recordTypes/v1.0.2/profile.json",
  "_links": {
    "self": {
      "href": "/audit/recordTypes?start=10&limit=10"
    },
    "collection": {
      "href": "/audit/recordTypes"
    }
  },
  "start": 0,
  "count": 67,
  "name": "recordTypes",
  "_embedded": {
    "items": [
      {
        "name": "transferScheduled",
        "_profile": "https://production.api.apiture.com/schemas/audit/recordType/v1.0.2/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://production.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 transfer 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

StatusDescription
200 OK
OK.
Schema: recordTypes

getAuditRecordType

Code samples

# You can also use wget
curl -X GET https://api.devbank.apiture.com/audit/types/{recordTypeId} \
  -H 'Accept: application/hal+json' \
  -H 'If-None-Match: string' \
  -H 'API-Key: API_KEY' \
  -H 'Authorization: Bearer {access-token}'

GET https://api.devbank.apiture.com/audit/types/{recordTypeId} HTTP/1.1
Host: api.devbank.apiture.com
Accept: application/hal+json
If-None-Match: string

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

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

};

fetch('https://api.devbank.apiture.com/audit/types/{recordTypeId}',
{
  method: 'GET',

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

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

};

$.ajax({
  url: 'https://api.devbank.apiture.com/audit/types/{recordTypeId}',
  method: 'get',

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

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 'https://api.devbank.apiture.com/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('https://api.devbank.apiture.com/audit/types/{recordTypeId}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.devbank.apiture.com/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", "https://api.devbank.apiture.com/audit/types/{recordTypeId}", data)
    req.Header = headers

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

Fetch a representation of this audit record type

GET https://api.devbank.apiture.com/audit/types/{recordTypeId}

Return a HAL representation of this audit record type resource.

Parameters

ParameterDescription
recordTypeId
in: path
string (required)
The unique identifier of this audit record type. This is an opaque string.
If-None-Match
in: 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://production.api.apiture.com/schemas/audit/recordType/v1.0.2/profile.json",
  "_links": {
    "self": {
      "href": "/audit/recordTypes/transferScheduled"
    }
  },
  "name": "transferScheduled",
  "label": "Transfer Scheduled",
  "category": "transfers",
  "categoryLabel": "Transfers",
  "version": "1.0.0",
  "description": "The user scheduled a one-time or recurring transfer.",
  "schema": {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "id": "https://production.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 transfer 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

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

API

Endpoints which describe this API.

getApi

Code samples

# You can also use wget
curl -X GET https://api.devbank.apiture.com/audit/ \
  -H 'Accept: application/hal+json' \
  -H 'API-Key: API_KEY'

GET https://api.devbank.apiture.com/audit/ HTTP/1.1
Host: api.devbank.apiture.com
Accept: application/hal+json

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

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

};

fetch('https://api.devbank.apiture.com/audit/',
{
  method: 'GET',

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

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

};

$.ajax({
  url: 'https://api.devbank.apiture.com/audit/',
  method: 'get',

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

require 'rest-client'
require 'json'

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

result = RestClient.get 'https://api.devbank.apiture.com/audit/',
  params: {
  }, headers: headers

p JSON.parse(result)

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

r = requests.get('https://api.devbank.apiture.com/audit/', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.devbank.apiture.com/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", "https://api.devbank.apiture.com/audit/", data)
    req.Header = headers

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

Top-level resources and operations in this API

GET https://api.devbank.apiture.com/audit/

Return links to the top-level resources and operations in this API.

Example responses

200 Response

{
  "_profile": "https://production.api.apiture.com/schemas/common/root/v2.1.1/profile.json",
  "_links": {
    "self": {
      "href": "https://api.devbank.apiture.com/apiName/resourceName/resourceId"
    }
  },
  "id": "apiName",
  "name": "API name",
  "apiVersion": "1.0.0"
}

Responses

StatusDescription
200 OK
OK.
Schema: root

getApiDoc

Code samples

# You can also use wget
curl -X GET https://api.devbank.apiture.com/audit/apiDoc \
  -H 'Accept: application/json' \
  -H 'API-Key: API_KEY'

GET https://api.devbank.apiture.com/audit/apiDoc HTTP/1.1
Host: api.devbank.apiture.com
Accept: application/json

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

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

};

fetch('https://api.devbank.apiture.com/audit/apiDoc',
{
  method: 'GET',

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

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

};

$.ajax({
  url: 'https://api.devbank.apiture.com/audit/apiDoc',
  method: 'get',

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

require 'rest-client'
require 'json'

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

result = RestClient.get 'https://api.devbank.apiture.com/audit/apiDoc',
  params: {
  }, headers: headers

p JSON.parse(result)

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

r = requests.get('https://api.devbank.apiture.com/audit/apiDoc', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://api.devbank.apiture.com/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", "https://api.devbank.apiture.com/audit/apiDoc", data)
    req.Header = headers

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

Return API definition document

GET https://api.devbank.apiture.com/audit/apiDoc

Return the OpenAPI document that describes this API.

Example responses

200 Response

{}

Responses

StatusDescription
200 OK
OK.
Schema: Inline

Response Schema

Schemas

abstractRequest

{
  "_profile": "https://production.api.apiture.com/schemas/common/abstractRequest/v2.0.0/profile.json",
  "_links": {}
}

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.

This schema was resolved from common/abstractRequest.

Properties

NameDescription
Abstract Request (v2.0.0) object
An abstract schema used to define other request-only schemas. This is a HAL resource representation, minus the _error defined in abstractResource.

This schema was resolved from common/abstractRequest.

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

This schema was resolved from common/links.

_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.
read-only
format: uri

abstractResource

{
  "_profile": "https://production.api.apiture.com/schemas/common/abstractResource/v2.1.0/profile.json",
  "_links": {
    "self": {
      "href": "https://api.devbank.apiture.com/apiName/resourceName/resourceId"
    }
  }
}

Abstract Resource (v2.1.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.

This schema was resolved from common/abstractResource.

Properties

NameDescription
Abstract Resource (v2.1.0) object
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.

This schema was resolved from common/abstractResource.

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

This schema was resolved from common/links.

_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.
read-only
format: uri
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
read-only

attributes

{}

Attributes (v2.1.0)

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

This schema was resolved from common/attributes.

Properties

NameDescription
Attributes (v2.1.0) object
An optional map of name/value pairs which contains additional dynamic data about the resource.

This schema was resolved from common/attributes.
Additional Properties: true

collection

{
  "_profile": "https://production.api.apiture.com/schemas/common/abstractResource/v2.1.0/profile.json",
  "_links": {
    "self": {
      "href": "https://api.devbank.apiture.com/apiName/resourceName/resourceId"
    }
  }
}

Collection (v2.1.1)

A collection of resources. This is an abstract model schema which is extended to define specific resource collections.

This schema was resolved from common/collection.

Properties

NameDescription
Collection (v2.1.1) object
A collection of resources. This is an abstract model schema which is extended to define specific resource collections.

This schema was resolved from common/collection.

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

This schema was resolved from common/links.

_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.
read-only
format: uri
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
read-only
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

{
  "_profile": "https://production.api.apiture.com/schemas/common/abstractResource/v2.1.0/profile.json",
  "_links": {
    "self": {
      "href": "https://api.devbank.apiture.com/apiName/resourceName/resourceId"
    }
  }
}

Cursor Paged Collection (v2.1.1)

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 no next 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.

This schema was resolved from common/cursorPagedCollection.

Properties

NameDescription
Cursor Paged Collection (v2.1.1) object
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 no next 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.

This schema was resolved from common/cursorPagedCollection.

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

This schema was resolved from common/links.

_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.
read-only
format: uri
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
read-only
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.1.0)

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

This schema was resolved from common/error.

Properties

NameDescription
Error (v2.1.0) object
Describes an error in an API request or in a service called via the API.

This schema was resolved from common/error.

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.
format: date-time
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.
Additional Properties: true
remediation string
An optional localized string which provides hints for how the user or client can resolve the error.
errors array: [error]
An optional array of nested error objects. This property is not always present.
items: object

errorResponse

{
  "_profile": "https://production.api.apiture.com/schemas/common/errorResponse/v2.1.1/profile.json",
  "_links": {
    "self": {
      "href": "https://api.devbank.apiture.com/apiName/resourceName/resourceId"
    }
  },
  "_error": {
    "_id": "2eae46e1-575c-4d69-8a8f-0a7b0115a4b3",
    "message": "Description of the error will appear here.",
    "statusCode": 422,
    "type": "specificErrorType",
    "attributes": {
      "value": "Optional attribute describing the error"
    },
    "remediation": "Optional instructions to remediate the error may appear here.",
    "occurredAt": "2018-01-25T05:50:52.375Z",
    "_links": {
      "describedby": {
        "href": "https://production.api.apiture.com/errors/specificErrorType"
      }
    },
    "_embedded": {
      "errors": []
    }
  }
}

Error Response (v2.1.1)

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

This schema was resolved from common/errorResponse.

Properties

NameDescription
Error Response (v2.1.1) object
Describes an error response, typically returned on 4xx or 5xx errors from API operations. The _error object contains the error details.

This schema was resolved from common/errorResponse.

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

This schema was resolved from common/links.

_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.
read-only
format: uri
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
read-only

{
  "href": "https://api.devbank.apiture.com/applications/application/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
  "title": "Application"
}

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.

This schema was resolved from common/link.

NameDescription
Link (v1.0.0) object
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.

This schema was resolved from common/link.

href string(uri) (required)
The URI or URI template for the resource/operation this link refers to.
format: uri
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.
format: uri
profile string(uri)
The URI of a profile document, a JSON document which describes the target resource/operation.
format: uri

{
  "property1": {
    "href": "https://api.devbank.apiture.com/applications/application/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
    "title": "Application"
  },
  "property2": {
    "href": "https://api.devbank.apiture.com/applications/application/328f6bf6-d762-422f-a077-ab91ca4d0b6f",
    "title": "Application"
  }
}

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.

This schema was resolved from common/links.

NameDescription
Links (v1.0.0) object
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.

This schema was resolved from common/links.

Link (v1.0.0) 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.

This schema was resolved from common/link.

record

{
  "_profile": "https://production.api.apiture.com/schemas/audit/record/v2.0.0/profile.json",
  "_links": {
    "self": {
      "href": "https://api.devbank.apiture.com/apiName/resourceName/resourceId"
    }
  },
  "_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
  "type": "transferScheduled",
  "occurredAt": "2019-09-13T05:03:50.375Z",
  "userId": "4f3ec1da-d4f3-4dbe-9ed6-ab02eed9de64",
  "username": "lucy.wellphunded",
  "coreCustomerId": "32bc88e4003d061f4fdb",
  "host": "13.226.38.34",
  "primaryUri": "https://production.api.apiture.com/transfers/scheduledTransfer/a727ff2a-08ea-42ce-b8dc-edea60646819",
  "data": {
    "sourceAccount": "9876543210",
    "sourceRoutingNumber": "021000021",
    "targetAccount": "9876543219",
    "targetRoutingNumber": "021000021",
    "amount": "1500.00",
    "currency": "USD",
    "start": "2019-10-15"
  },
  "links": {
    "self": {
      "href": "/audit/records/0399abed-fd3d-4830-a88b-30f38b8a365c"
    },
    "apiture:type": {
      "href": "/audit/types/transferScheduled"
    }
  }
}

Audit Record (v2.0.0)

A data record representing an auditable banking activity or action performed by a user. This conveys:

  • who did something (userId, coreCustomerId, username; operatorId if an operator performed a task on behalf of a banking customer),
  • 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 activity type.

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

NameDescription
Audit Record (v2.0.0) object
A data record representing an auditable banking activity or action performed by a user. This conveys:

  • who did something (userId, coreCustomerId, username; operatorId if an operator performed a task on behalf of a banking customer),
  • 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 activity type.

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.

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

This schema was resolved from common/links.

_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.
read-only
format: uri
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
read-only
_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 string (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
format: date-time
userId string
The user ID of the user who performed the action. This is the _id of the user in the Users API.
read-only
minLength: 16
maxLength: 48
operatorId string
The operator ID who performed the action on behalf of the banking user named by userId. This property is omitted if the user performed the action themself.
read-only
minLength: 16
maxLength: 48
coreCustomerId string
The ID of the customer, as stored in the banking core, who performed the action.
read-only
maxLength: 48
username string
The user name of the user who performed the action. For most operations, this is the username of the authenticated 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.
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
format: uri
maxLength: 191
secondaryUri string(uri)
The URI of a secondary resource that this activity applies to.
read-only
format: uri
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

{
  "_profile": "https://production.api.apiture.com/schemas/audit/recordType/v1.0.2/profile.json",
  "_links": {
    "self": {
      "href": "/audit/recordTypes/transferScheduled"
    }
  },
  "name": "transferScheduled",
  "label": "Transfer Scheduled",
  "category": "transfers",
  "categoryLabel": "Transfers",
  "version": "1.0.0",
  "description": "The user scheduled a one-time or recurring transfer.",
  "schema": {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "id": "https://production.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 transfer 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 (v1.0.2)

Representation of audit record type resources.

Properties

NameDescription
Audit Record Type (v1.0.2) object
Representation of audit record type resources.
_links links
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.

This schema was resolved from common/links.

_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.
read-only
format: uri
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
read-only
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 string (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
format: semver
description string(markdown) (required)
A longer description of this audit record type.
read-only
format: markdown
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
format: json-schema

recordTypes

{
  "_profile": "https://production.api.apiture.com/schemas/audit/recordTypes/v1.0.2/profile.json",
  "_links": {
    "self": {
      "href": "/audit/recordTypes?start=10&limit=10"
    },
    "collection": {
      "href": "/audit/recordTypes"
    }
  },
  "start": 0,
  "count": 67,
  "name": "recordTypes",
  "_embedded": {
    "items": [
      {
        "name": "transferScheduled",
        "_profile": "https://production.api.apiture.com/schemas/audit/recordType/v1.0.2/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://production.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 transfer 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 (v1.0.2)

Collection of audit record types. The items in the collection are listed in the _embedded.items array; the name is recordTypes.

Properties

NameDescription
Audit Record Type Collection (v1.0.2) object
Collection of audit record types. The items in the collection are listed in the _embedded.items array; the name is recordTypes.
_links links
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.

This schema was resolved from common/links.

_embedded object
Embedded objects.
» items array: [recordType]
An array containing audit record type items.
items: object
_profile string(uri)
The URI of a resource profile which describes the representation.
read-only
format: uri
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
read-only
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://production.api.apiture.com/schemas/audit/records/v2.0.0/profile.json",
  "_links": {
    "self": {
      "href": "/audit/records?category=transfers"
    },
    "next": {
      "href": "/audit/records?category=transfers&start=eyJjdXJzb3IiOiAiNDIwMCJ9&limit=1000"
    },
    "collection": {
      "href": "/audit/records"
    }
  },
  "start": "eyJjdXJzb3IiOiAiMzIwMCJ9",
  "limit": 1000,
  "name": "records",
  "_embedded": {
    "items": [
      {
        "_id": "0399abed-fd3d-4830-a88b-30f38b8a365c",
        "_profile": "https://production.api.apiture.com/schemas/audit/record/v2.0.0/profile.json",
        "type": "transferScheduled",
        "occurredAt": "2019-09-13T05:03:50.375Z",
        "userId": "4f3ec1da-d4f3-4dbe-9ed6-ab02eed9de64",
        "username": "lucy.wellphunded",
        "coreCustomerId": "32bc88e4003d061f4fdb",
        "host": "13.226.38.34",
        "primaryUri": "https://production.api.apiture.com/transfers/scheduledTransfer/a727ff2a-08ea-42ce-b8dc-edea60646819",
        "data": {
          "sourceAccount": "9876543210",
          "sourceRoutingNumber": "021000021",
          "targetAccount": "9876543219",
          "targetRoutingNumber": "021000021",
          "amount": "1500.00",
          "currency": "USD",
          "start": "2019-10-15"
        },
        "links": {
          "self": {
            "href": "/audit/records/0399abed-fd3d-4830-a88b-30f38b8a365c"
          },
          "apiture:type": {
            "href": "/audit/types/transferScheduled"
          }
        }
      }
    ]
  }
}

Audit Record Collection (v2.0.0)

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

NameDescription
Audit Record Collection (v2.0.0) object
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.
_links links
An optional map of links, mapping each link relation to a link object. This model defines the _links object of HAL representations.

This schema was resolved from common/links.

_embedded object
Embedded objects.
» items array: [record]
An array containing a page of audit record items.
items: object
_profile string(uri)
The URI of a resource profile which describes the representation.
read-only
format: uri
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
read-only
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

{
  "_profile": "https://production.api.apiture.com/schemas/common/root/v2.1.1/profile.json",
  "_links": {
    "self": {
      "href": "https://api.devbank.apiture.com/apiName/resourceName/resourceId"
    }
  },
  "id": "apiName",
  "name": "API name",
  "apiVersion": "1.0.0"
}

API Root (v2.1.1)

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

This schema was resolved from common/root.

Properties

NameDescription
API Root (v2.1.1) object
A HAL response, with hypermedia _links for the top-level resources and operations in API.

This schema was resolved from common/root.

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

This schema was resolved from common/links.

_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.
read-only
format: uri
_error error
An object which describes an error. This value is omitted if the operation succeeded without error.
read-only
_id string
This API's unique ID.
read-only
name string
This API's name.
apiVersion string
This API's version.

Generated by @apiture/api-doc 3.2.4 on Mon Oct 28 2024 14:41:03 GMT+0000 (Coordinated Universal Time).