Kepla API

Account

An account is the overall configuration of Kepla for your database. This endpoint gives you access to all account settings, roles, taxonomies, types and users through a single API call.

Account Overview

{
  "createdAt": null,
String (Date-time)

The datetime for when the account was first created

  "defaultFundId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

Read only. The default fund to put transactions into when it's not specified on the transaction itself.

  "emailTaxonomyId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

Read only. The taxonomy email activity is logged to.

  "id": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

The account ID

  "keys": [
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50IjoiNzczZmMwNTgtNzk5OC00OTA4LTkzNjAtZWY3MmMwOTc5MmQxIiwiaWF0IjoxNDcwNDY0MDIzfQ.u5vPY_2IOGh4XIQ5JAmlnDGra4xOQhVFEsGtfnXngiA",
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50IjoiNzczZmMwNTgtNzk5OC00OTA4LTkzNjAtZWY3MmMwOTc5MmQxIiwiaWF0IjoxNDcwNDY0MDIzfQ.u5vPY_2IOGh4XIQ5JAmlnDGra4xOQhVFEsGtfnXngiA",
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50IjoiNzczZmMwNTgtNzk5OC00OTA4LTkzNjAtZWY3MmMwOTc5MmQxIiwiaWF0IjoxNDcwNDY0MDIzfQ.u5vPY_2IOGh4XIQ5JAmlnDGra4xOQhVFEsGtfnXngiA"
  ],
Array

API keys on the account

  "name": "API Sandbox",
String

The account name

  roles: [
Array

A list of all roles registered to the account

    {
    { ... }
Object

Default

      "accountId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)
      "capabilities": {
      "capabilities": { ... }
Object

A capabilities object (see the definition).

        ":typeId": {
        ":typeId": { ... }
Object

The type ID to apply these capabilities to. Use a '*' wildcard inside this object to make all true.

          "createActivities": true,
Boolean
          "createLists": true,
Boolean
          "createRecords": true,
Boolean
          "createassignedActivities": true,
Boolean
          "deleteActivities": true,
Boolean
          "deleteLists": true,
Boolean
          "deleteRecords": true,
Boolean
          "deleteassignedActivities": true,
Boolean
          "deleteassignedRecords": true,
Boolean
          "exportRecords": true,
Boolean
          "importRecords": true,
Boolean
          "manageTags": true,
Boolean
          "readActivities": true,
Boolean
          "readLists": true,
Boolean
          "readRecords": true,
Boolean
          "readassignedActivities": true,
Boolean
          "readassignedRecords": true,
Boolean
          "updateLists": true,
Boolean
          "updateRecords": true,
Boolean
          "updateassignedActivities": true,
Boolean
          "updateassignedRecords": true
Boolean
        },
        "default": {
        "default": { ... }
Object

These capabilities apply to the whole account, or to record types when no specific type capabilities have been defined.

          "createActivities": true,
Boolean
          "createLists": true,
Boolean
          "createRecords": true,
Boolean
          "createTasks": true,
Boolean
          "createTaxonomies": true,
Boolean
          "createTransactions": true,
Boolean
          "createTypes": true,
Boolean
          "createassignedActivities": true,
Boolean
          "createassignedTasks": true,
Boolean
          "createassignedTransactions": true,
Boolean
          "deleteActivities": true,
Boolean
          "deleteLists": true,
Boolean
          "deleteRecords": true,
Boolean
          "deleteTasks": true,
Boolean
          "deleteTransactions": true,
Boolean
          "deleteTypes": true,
Boolean
          "deleteassignedActivities": true,
Boolean
          "deleteassignedRecords": true,
Boolean
          "deleteassignedTasks": true,
Boolean
          "deleteassignedTransactions": true,
Boolean
          "exportRecords": true,
Boolean
          "importRecords": true,
Boolean
          "manageAccount": true,
Boolean
          "manageIntegrations": true,
Boolean
          "manageRelationships": true,
Boolean
          "manageRoles": true,
Boolean
          "manageTags": true,
Boolean
          "manageUsers": true,
Boolean
          "readActivities": true,
Boolean
          "readLists": true,
Boolean
          "readRecords": true,
Boolean
          "readTasks": true,
Boolean
          "readTransactions": true,
Boolean
          "readassignedActivities": true,
Boolean
          "readassignedRecords": true,
Boolean
          "readassignedTasks": true,
Boolean
          "readassignedTransactions": true,
Boolean
          "updateLists": true,
Boolean
          "updateRecords": true,
Boolean
          "updateTasks": true,
Boolean
          "updateTaxonomies": true,
Boolean
          "updateTransactions": true,
Boolean
          "updateTypes": true,
Boolean
          "updateassignedActivities": true,
Boolean
          "updateassignedRecords": true,
Boolean
          "updateassignedTasks": true,
Boolean
          "updateassignedTransactions": true
Boolean
        }
      },
      "createdAt": "2016-07-17T22:44:35.748Z",
String (Date-time)
      "id": "6bc6a35b-0445-485d-b59e-54ec9ed9f581",
String
      "name": "My Custom Role",
String
      "system": "restricted"
String

System roles are created as defaults in Kepla. You can't set, modify or delete them.

    }
  ]
  taxonomies: [
Array

A list of all taxonomies registered to the account

    {
    { ... }
Object

Default

      "accountId": "e1f4cca4-1cbc-42cb-bb2f-5bbbab513f5c",
String
      "id": "2a6bdad4-2f61-4aec-bd6f-8f4ffc626bf9",
String
      "meta": {
      "meta": { ... }
Object

Meta is only supported by "activity" taxonomies.

        "metaKey": {
        "metaKey": { ... }
Object

The object key is the ID for the meta field. It is how it is stored on an activity.

          "name": "Example Meta",
String

Used as a label in the app.

          "primary": false,
Boolean

If true the meta field will show above the activity comment in the app.

          "visible": true
Boolean

If false the meta field will be stored but not shown to the user when viewing a record's activities.

        }
      },
      "name": "Event",
String
      "number": false,
Boolean

Deprecated

      "readonly": false,
Boolean

System use only

      "taxonomy": "activity"
String
    }
  ]
  teams: [
Array

A list of all teams registered to the account

    {
    { ... }
Object

Condensed

      "accountId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)
      "createdAt": null,
String (Date-time)
      "id": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)
      "name": "API Team"
String
    }
  ]
  types: [
Array
    {
    { ... }
Object

Default

      "accountId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

Your account ID.

      fields: [
Array

An object containing all the registered fields on the type.

        {
        { ... }
Object

Field

          "description": "Some help text",
String

Help text on the field.

          "id": "4kblhjBOe",
String

The unique field ID. Data is stored under this ID in a record.

          "label": "Full Name",
String

The human-readable name for the field.

          "options": {
          "options": { ... }
Object
            "items": "foo",
String
            ":key": "Small"
String

An arbitary key (mostly used for ordering) with a possible value.

          },
          "order": 1,
Integer
          "parent": "false",
String

Parent can be set to false or a field ID. If a field ID is set the field will appear in that group on record pages in the client.

          "processAs": "name",
String

Used to process "fancy fields". On groups it can be name or address. On subfields it can be firstName, lastName, address1, address2, city, postalcode, region and country.

          "type": "text"
String

The field type. Can be text, textfield, email, number, select, checkbox, group or date. Once a field is set, it's best not to change the type.

        }
      ]
      "id": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

Read only. The unique type ID

      lists: [
Array
        {
        { ... }
Object

Type > List

          "conditions": "[[{\"$$hashKey\":\"object:3172\",\"target\":\"fields:NJTg3sr_e\",\"operator\":\"exist\",\"value\":null}]]",
String

A JSON object of list conditions generated by the client. Lists aren't documented as they're really just client config, you can achieve the same result through the API using custom Elasticsearch queries.

          "id": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

The list ID

          "name": "Example List",
String

A human-readable name for the list

          "typeId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
String (Uuid)

Related type ID for the list

        }
      ]
      "name": "People",
String

The human-readable name for the type.

      "primaryField": "foo",
String

The key to deduplicate records on, or null/false for no deduping.

      tags: [
Array

A copy of all the tags registered on the type.

        {
        { ... }
Object

List

          "items": {
          "items": { ... }
Object
            "color": "#f4983c",
String

(Optional) A HEX code for the color of the tag in the app.

            "id": "a99cfd2a-829c-483d-8c4f-2c8627c027a4",
String (Uuid)
            "name": "api tag",
String

Friendly name for the tag in the app and in exports

            "typeId": "a387d549-2ebd-47f8-a8e3-b54a1d1d6d04"
String (Uuid)
          }
        }
      ]
    }
  ]
  "username": "sandbox",
String

Read only. A generated username for the account, this is your Kepla email address.

  users: [
Array
    {
    { ... }
Object

Condensed

      "createdAt": "2015-11-02T00:30:23.968Z",
String
      "email": "[email protected]",
String (Email)
      "id": "77c8a907-40b7-40ab-91ad-8034df0fa7a0",
String
      "name": "Tom Maitland"
String
    }
  ]
}

Get Account

Open in API Explorer
GET /account

Retrieves the account associated with the API key used. This is an easy call to retrieve all of the settings related to an account like types, taxonomies, roles, users etc.

Example Request

Format:
curl --request GET \
  --url https://api.kepla.com/v1/account \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR API KEY HERE'
require 'uri'
require 'net/http'

url = URI("https://api.kepla.com/v1/account")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR API KEY HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kepla.com",
  "port": null,
  "path": "/v1/account",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR API KEY HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kepla.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR API KEY HERE"
    }

conn.request("GET", "/v1/account", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kepla.com/v1/account",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR API KEY HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://api.kepla.com/v1/account"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("accept", "application/json")
	req.Header.Add("authorization", "Bearer YOUR API KEY HERE")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}

Responses

200 Success Account Default
{
  "createdAt": null,
String (Date-time)

The datetime for when the account was first created

  "defaultFundId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

Read only. The default fund to put transactions into when it's not specified on the transaction itself.

  "emailTaxonomyId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

Read only. The taxonomy email activity is logged to.

  "id": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

The account ID

  "keys": [
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50IjoiNzczZmMwNTgtNzk5OC00OTA4LTkzNjAtZWY3MmMwOTc5MmQxIiwiaWF0IjoxNDcwNDY0MDIzfQ.u5vPY_2IOGh4XIQ5JAmlnDGra4xOQhVFEsGtfnXngiA",
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50IjoiNzczZmMwNTgtNzk5OC00OTA4LTkzNjAtZWY3MmMwOTc5MmQxIiwiaWF0IjoxNDcwNDY0MDIzfQ.u5vPY_2IOGh4XIQ5JAmlnDGra4xOQhVFEsGtfnXngiA",
    "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY2NvdW50IjoiNzczZmMwNTgtNzk5OC00OTA4LTkzNjAtZWY3MmMwOTc5MmQxIiwiaWF0IjoxNDcwNDY0MDIzfQ.u5vPY_2IOGh4XIQ5JAmlnDGra4xOQhVFEsGtfnXngiA"
  ],
Array

API keys on the account

  "name": "API Sandbox",
String

The account name

  roles: [
Array

A list of all roles registered to the account

    {
    { ... }
Object

Default

      "accountId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)
      "capabilities": {
      "capabilities": { ... }
Object

A capabilities object (see the definition).

        ":typeId": {
        ":typeId": { ... }
Object

The type ID to apply these capabilities to. Use a '*' wildcard inside this object to make all true.

          "createActivities": true,
Boolean
          "createLists": true,
Boolean
          "createRecords": true,
Boolean
          "createassignedActivities": true,
Boolean
          "deleteActivities": true,
Boolean
          "deleteLists": true,
Boolean
          "deleteRecords": true,
Boolean
          "deleteassignedActivities": true,
Boolean
          "deleteassignedRecords": true,
Boolean
          "exportRecords": true,
Boolean
          "importRecords": true,
Boolean
          "manageTags": true,
Boolean
          "readActivities": true,
Boolean
          "readLists": true,
Boolean
          "readRecords": true,
Boolean
          "readassignedActivities": true,
Boolean
          "readassignedRecords": true,
Boolean
          "updateLists": true,
Boolean
          "updateRecords": true,
Boolean
          "updateassignedActivities": true,
Boolean
          "updateassignedRecords": true
Boolean
        },
        "default": {
        "default": { ... }
Object

These capabilities apply to the whole account, or to record types when no specific type capabilities have been defined.

          "createActivities": true,
Boolean
          "createLists": true,
Boolean
          "createRecords": true,
Boolean
          "createTasks": true,
Boolean
          "createTaxonomies": true,
Boolean
          "createTransactions": true,
Boolean
          "createTypes": true,
Boolean
          "createassignedActivities": true,
Boolean
          "createassignedTasks": true,
Boolean
          "createassignedTransactions": true,
Boolean
          "deleteActivities": true,
Boolean
          "deleteLists": true,
Boolean
          "deleteRecords": true,
Boolean
          "deleteTasks": true,
Boolean
          "deleteTransactions": true,
Boolean
          "deleteTypes": true,
Boolean
          "deleteassignedActivities": true,
Boolean
          "deleteassignedRecords": true,
Boolean
          "deleteassignedTasks": true,
Boolean
          "deleteassignedTransactions": true,
Boolean
          "exportRecords": true,
Boolean
          "importRecords": true,
Boolean
          "manageAccount": true,
Boolean
          "manageIntegrations": true,
Boolean
          "manageRelationships": true,
Boolean
          "manageRoles": true,
Boolean
          "manageTags": true,
Boolean
          "manageUsers": true,
Boolean
          "readActivities": true,
Boolean
          "readLists": true,
Boolean
          "readRecords": true,
Boolean
          "readTasks": true,
Boolean
          "readTransactions": true,
Boolean
          "readassignedActivities": true,
Boolean
          "readassignedRecords": true,
Boolean
          "readassignedTasks": true,
Boolean
          "readassignedTransactions": true,
Boolean
          "updateLists": true,
Boolean
          "updateRecords": true,
Boolean
          "updateTasks": true,
Boolean
          "updateTaxonomies": true,
Boolean
          "updateTransactions": true,
Boolean
          "updateTypes": true,
Boolean
          "updateassignedActivities": true,
Boolean
          "updateassignedRecords": true,
Boolean
          "updateassignedTasks": true,
Boolean
          "updateassignedTransactions": true
Boolean
        }
      },
      "createdAt": "2016-07-17T22:44:35.748Z",
String (Date-time)
      "id": "6bc6a35b-0445-485d-b59e-54ec9ed9f581",
String
      "name": "My Custom Role",
String
      "system": "restricted"
String

System roles are created as defaults in Kepla. You can't set, modify or delete them.

    }
  ]
  taxonomies: [
Array

A list of all taxonomies registered to the account

    {
    { ... }
Object

Default

      "accountId": "e1f4cca4-1cbc-42cb-bb2f-5bbbab513f5c",
String
      "id": "2a6bdad4-2f61-4aec-bd6f-8f4ffc626bf9",
String
      "meta": {
      "meta": { ... }
Object

Meta is only supported by "activity" taxonomies.

        "metaKey": {
        "metaKey": { ... }
Object

The object key is the ID for the meta field. It is how it is stored on an activity.

          "name": "Example Meta",
String

Used as a label in the app.

          "primary": false,
Boolean

If true the meta field will show above the activity comment in the app.

          "visible": true
Boolean

If false the meta field will be stored but not shown to the user when viewing a record's activities.

        }
      },
      "name": "Event",
String
      "number": false,
Boolean

Deprecated

      "readonly": false,
Boolean

System use only

      "taxonomy": "activity"
String
    }
  ]
  teams: [
Array

A list of all teams registered to the account

    {
    { ... }
Object

Condensed

      "accountId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)
      "createdAt": null,
String (Date-time)
      "id": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)
      "name": "API Team"
String
    }
  ]
  types: [
Array
    {
    { ... }
Object

Default

      "accountId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

Your account ID.

      fields: [
Array

An object containing all the registered fields on the type.

        {
        { ... }
Object

Field

          "description": "Some help text",
String

Help text on the field.

          "id": "4kblhjBOe",
String

The unique field ID. Data is stored under this ID in a record.

          "label": "Full Name",
String

The human-readable name for the field.

          "options": {
          "options": { ... }
Object
            "items": "foo",
String
            ":key": "Small"
String

An arbitary key (mostly used for ordering) with a possible value.

          },
          "order": 1,
Integer
          "parent": "false",
String

Parent can be set to false or a field ID. If a field ID is set the field will appear in that group on record pages in the client.

          "processAs": "name",
String

Used to process "fancy fields". On groups it can be name or address. On subfields it can be firstName, lastName, address1, address2, city, postalcode, region and country.

          "type": "text"
String

The field type. Can be text, textfield, email, number, select, checkbox, group or date. Once a field is set, it's best not to change the type.

        }
      ]
      "id": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

Read only. The unique type ID

      lists: [
Array
        {
        { ... }
Object

Type > List

          "conditions": "[[{\"$$hashKey\":\"object:3172\",\"target\":\"fields:NJTg3sr_e\",\"operator\":\"exist\",\"value\":null}]]",
String

A JSON object of list conditions generated by the client. Lists aren't documented as they're really just client config, you can achieve the same result through the API using custom Elasticsearch queries.

          "id": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

The list ID

          "name": "Example List",
String

A human-readable name for the list

          "typeId": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a"
String (Uuid)

Related type ID for the list

        }
      ]
      "name": "People",
String

The human-readable name for the type.

      "primaryField": "foo",
String

The key to deduplicate records on, or null/false for no deduping.

      tags: [
Array

A copy of all the tags registered on the type.

        {
        { ... }
Object

List

          "items": {
          "items": { ... }
Object
            "color": "#f4983c",
String

(Optional) A HEX code for the color of the tag in the app.

            "id": "a99cfd2a-829c-483d-8c4f-2c8627c027a4",
String (Uuid)
            "name": "api tag",
String

Friendly name for the tag in the app and in exports

            "typeId": "a387d549-2ebd-47f8-a8e3-b54a1d1d6d04"
String (Uuid)
          }
        }
      ]
    }
  ]
  "username": "sandbox",
String

Read only. A generated username for the account, this is your Kepla email address.

  users: [
Array
    {
    { ... }
Object

Condensed

      "createdAt": "2015-11-02T00:30:23.968Z",
String
      "email": "[email protected]",
String (Email)
      "id": "77c8a907-40b7-40ab-91ad-8034df0fa7a0",
String
      "name": "Tom Maitland"
String
    }
  ]
}