Shell HTTP JavaScript Node.JS Ruby Python Java Go

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:

  1. Pass the startAt and endAt 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.
  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 to include in the paginated response.
  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 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:

Terms of service

Email: Apiture Web: Apiture

Authentication

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

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));
  }
})

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);
});

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 /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

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

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));
  }
})

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);
});

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 /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

StatusDescription
200 OK
OK
Schema: record
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

Response Headers

StatusDescription
200 ETag string
The ETag response header specifies an entity tag which must be provided in an If-Match request header for PUT or PATCH operations which update this audit record resource.

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

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));
  }
})

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);
});

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 /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

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

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));
  }
})

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);
});

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 /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

StatusDescription
200 OK
OK
Schema: recordType
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

Response Headers

StatusDescription
200 ETag string
The ETag response header specifies an entity tag which must be provided in an If-Match request header for PUT or PATCH operations which update this audit record type resource.

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

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));
  }
})

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);
});

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 /

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

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

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));
  }
})

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);
});

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 /apiDoc

Return the OpenAPI document that describes this API.

Try It

Example responses

200 Response

{}

Responses

StatusDescription
200 OK
OK
Schema: Inline

Response Schema

Schemas

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

Representation of audit record type resources.

Properties

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

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

Properties

NameDescription
_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.

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

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

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
_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

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 (v1.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
_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

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

Properties

NameDescription
_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.

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

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

Properties

NameDescription
_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.

abstractResource

{
  "_profile": "{uri of resource profile.json}",
  "_links": {
    "self": {
      "href": "{uri of current resource}"
    }
  }
}

Abstract Resource

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

NameDescription
_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.

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

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

Properties

NameDescription
_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

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:

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

NameDescription
_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.

abstractRequest

{
  "_profile": "{uri of resource profile.json}",
  "_links": {
    "self": {
      "href": "{uri of current resource}"
    }
  }
}

Abstract Request

An abstract schema used to define other request-only schemas. This is a HAL resource representation, minus the _error defined in abstractResource.

Properties

NameDescription
_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

{
  "_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

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

Properties

NameDescription
message string (required)
A localized message string describing the error condition.
_id string
A unique identifier for this error instance. This may be used as a correlation ID with the root cause error (i.e. this ID may be logged at the source of the error). This is is an opaque string.
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.

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

Links

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

Properties

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

attributes

{
  "property1": {},
  "property2": {}
}

Attributes

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

Properties

NameDescription
additionalProperties attributeValue
The data associated with this attribute.

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

Link

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

Properties

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

attributeValue

{}

Attribute Value

The data associated with this attribute.

Properties