The Kurtosys App employs a highly flexible data model. It contains regular database tables with very few columns, instead using a singular JSON column that can be expanded on a client-by-client basis. This means data requirements can be amended efficiently. A freeform approach needs to have strict data rules enforced. The services governing these tables perform checks on the JSON before it is inserted. These rules can be defined using properties in Data.
Properties are used on different data types in different ways, but at a high level they all describe an identifier for the property (a code
), a data type (used to validate the type of the incoming data and reject any in non-conformance), as well as formats (so that data leaving our services can be correctly pre-formatted).
Entity level properties are typically things like Inception Date, Asset Class or Base Currency and exist on an entity such as a Fund (FUND
), Shareclass (CLSS
), Benchmark (BMRK
) or Account (ACCT
). They are singular in nature and tend to not change very much. They can be any datatype.
Attribute | Required | Description |
---|---|---|
code |
True | A unique identifier for the property. Lowercase without spaces, a maximum of 32 characters and no special characters except _ |
entityType |
True | FUND , CLSS , BMRK or ACCT |
dataType |
True | STRG ,DCML ,DTIM ,BOOL ,ITGR ,DATE |
label |
True | A label for the property |
description |
True | A description for the property |
validationRule |
False | VALUES or NONE . The VALUES option will prevent insertion data not found in the allowedValues list |
allowedValues |
False | An array of strings used for validate if validationRule is set to VALUES . |
formatCode |
False | The name of an existing formatCode in the system. Applies to each value of the values array. (refer to Formats) |
group |
True | A string label allowing you to group similar properties together |
subgroup |
False | A string label allowing you to group similar properties together within a group . |
disclaimerTypes |
False | |
includeIn |
False | |
cardinality |
True | Can be N for many values or 1 . Using N allows arrays of values to be passed of the given dataType . |
Parameter | Value |
---|---|
End Point | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addProperty |
Headers | X-KSYS-TOKEN |
Content Type | application/json |
HTTP Method | POST |
Returns | The new/updated Property |
{
"code": "inception_date",
"entityType": "CLSS",
"dataType": "DATE",
"validationRule": "NONE",
"label": "Inception Date",
"formatCode": "date",
"description": "Shareclass Inception Date",
"group": "core",
"cardinality": "1"
}
{
"propertyId": 1,
"code": "inception_date",
"entityType": "CLSS",
"dataType": "DATE",
"validationRule": "NONE",
"label": "Inception Date",
"formatCode": "date",
"description": "Shareclass Inception Date",
"group": "core",
"cardinality": "1"
}
Allocations are used to track things like Top Ten Holdings, Sector Allocations, and Geographic Breakdowns of assets belonging to an entity
. This data can be grouped under 2 keys - a unique identifier (code
) and an optional currency (ccy
). Each record has a label
and value
as default allocation properties. However, this can be extended for more complex breakdowns with extended properties.
Properties are used to define an appropriate grouping for Allocation records. Given their nature, Allocations have a values
array that follow a label/value model. The label
being a string
and the value
being either a number
or null
. Allocation Properties can be given a formatCode
(refer to Formats) to apply a format to each record's value.
Attribute | Required | Description |
---|---|---|
code |
True | Unique identifier for the allocation set. Lowercase without spaces, a maximum of 32 characters and no special characters except _ |
entityType |
True | FUND , CLSS , BMRK or ACCT - the entity this allocation applies to |
label |
True | A label for the allocation set |
description |
True | A description for the allocation set |
formatCode |
False | The name of an existing formatCode in the system. Applies to each value of the values array. (refer to Formats) |
group |
True | A string label allowing you to group similar properties together. (default is 'core') |
subgroup |
False | A string label allowing you to group similar properties together within a group |
extended |
False | Each extended entry describes a key that can be added to a value object in the allocation set. (refer to Extended Properties) |
includeIn |
false | Allows configuration of features that the meta can opt-in to |
includeIn.translations |
false | Opt-in flag for translations of this extended property. When set to true, the extended string properties may be translated when included in entity and entity facet searches. Defaults to false |
Parameter | Value |
---|---|
End Point | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addAllocProperty |
Headers | X-KSYS-TOKEN |
Content Type | application/json |
HTTP Method | POST |
Returns | The new/updated Allocation Property |
{
"code": "top_ten_holdings",
"entityType": "CLSS",
"label": "Top 10 Holdings of the share class",
"description": "Top 10 holdings of the share class",
"formatCode": "number",
"group": "core",
"extended": [
{
"label": "Number of Shares",
"dataType": "DCML",
"formatCode": "number_0dp"
},
{
"label": "Acquisition Date",
"dataType": "DATE"
}
]
}
{
"allocationPropertyId": 12,
"code": "top_ten_holdings",
"entityType": "CLSS",
"label": "Top 10 Holdings of the share class",
"description": "Top 10 holdings of the share class",
"formatCode": "number",
"group": "core",
"extended": [
{
"label": "Number of Shares",
"dataType": "DCML",
"formatCode": "number_0dp"
},
{
"label": "Acquisition Date",
"dataType": "DATE"
}
]
}
Statistics are used to track things like AUM, Performance or Risk belonging to an entity
.This data can be grouped under 2 keys - a unique identifier (code
) and an optional currency (ccy
). Each record has a label
and value
as default statistic properties. However, this can be extended for more complex breakdowns with extended properties.
Properties are used to define an appropriate grouping for Statistic records. Given their nature, Statistics have a values
array that follow a label/value model. The label
being a string
and the value
being either a number
or null
. Statistic Properties can be given a formatCode
(refer to Formats) to apply a format to each record's value.
Attribute | Required | Description |
---|---|---|
code |
True | Unique identifier for the statistic set. Lowercase without spaces, a maximum of 32 characters and no special characters except _ |
entityType |
True | FUND , CLSS , BMRK or ACCT - the entity this statistic applies to |
label |
True | A label for the statistic set. |
description |
True | A description for the statistic set |
formatCode |
False | The name of an existing formatCode in the system. Applies to each value of the values array. (refer to Formats) |
group |
True | A string label allowing you to group similar properties together. (default is 'core') |
subgroup |
False | A string label allowing you to group similar properties together within a group |
extended |
False | Each extended entry describes a key that can be added to a value object in the statistic set. (refer to Extended Properties) |
includeIn |
false | Allows configuration of features that the meta can opt-in to |
includeIn.translations |
false | Opt-in flag for translations of this extended property. When set to true, the extended string properties may be translated when included in entity and entity facet searches. Defaults to false |
Parameter | Value |
---|---|
End Point | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addStatisticProperty |
Headers | X-KSYS-TOKEN |
Content Type | application/json |
HTTP Method | POST |
Returns | The new/updated Statistic Property |
{
"code": "calendar_year",
"entityType": "CLSS",
"label": "Calendar Year Performance",
"description": "Calendar Year Performance",
"group": "core"
}
{
"statisticPropertyId": 1,
"code": "calendar_year",
"entityType": "CLSS",
"label": "Calendar Year Performance",
"description": "Calendar Year Performance",
"group": "core",
"extended": [],
"includeIn": {}
}
Timeseries are used to track things like Price History or Performance Over Time of assets belonging to an entity
.This data can be grouped under 4 keys - a unique identifier (code
), an optional currency (ccy
), a periodicity
and a classification
. Each record has a date
and value
as default timeseries properties. However, this can be extended for more complex breakdowns with extended properties.
Properties are used to define an appropriate grouping for Timeseries records. Given their nature, Timeseries have a values
array that follows a date/value model. The date
being a stringified date and the value
being either a number
or null
. Timeseries Properties can be given a valueFormatCode
to apply a format to each record's value and a labelValueCode
to apply a format to each record's date.
Attribute | Required | Description |
---|---|---|
code |
True | Unique identifier for the timeseries set. Lowercase without spaces, a maximum of 32 characters and no special characters except _ |
entityType |
True | FUND , CLSS , BMRK or ACCT - the entity this timeseries applies to |
label |
True | A label for the timeseries set |
description |
True | A description for the timeseries set |
labelFormatCode |
False | The name of an existing formatCode in the system. Applies to each date of the values array. (refer to Formats) |
valueFormatCode |
False | The name of an existing formatCode in the system. Applies to each value of the values array. (refer to Formats) |
group |
True | A string label allowing you to group similar properties together (default is 'core') |
subgroup |
False | A string label allowing you to group similar properties together within a group |
extended |
False | Each extended entry describes a key that can be added to a value object in the timeseries set (refer to Extended Properties) |
includeIn |
false | Allows configuration of features that the meta can opt-in to |
includeIn.translations |
false | Opt-in flag for translations of this extended property. When set to true, the extended string properties may be translated when included in entity and entity facet searches. Defaults to false |
Parameter | Value |
---|---|
End Point | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addTSProperty |
Headers | X-KSYS-TOKEN |
Content Type | application/json |
HTTP Method | POST |
Returns | The new/updated Timeseries Property |
{
"code": "ftse_price_history",
"entityType": "BMRK",
"label": "FTSE 100 Price History",
"description": "FTSE 100 Pricing Histories",
"labelFormatCode": "date_YYYY-MM",
"valueFormatCode": "number",
"group": "core"
}
{
"timeseriesPropertyId": 1,
"code": "ftse_price_history",
"entityType": "BMRK",
"label": "FTSE 100 Price History",
"description": "FTSE 100 Pricing Histories",
"labelFormatCode": "date_YYYY-MM",
"valueFormatCode": "number",
"group": "core",
"extended": [],
"includeIn": {}
}
Historical Datasets allow for the storage of data such as Monthly Top Ten Holdings, Dated Sector Allocations or Annual Geographic Breakdowns of assets belonging to an entity
. This data can be grouped under 3 keys - a unique identifier (code
), a date (asAtDate
) and an optional currency (ccy
). Each record has a label
and value
as default historical dataset properties. However, this can be extended for more complex breakdowns with extended historical dataset properties.
Properties are used to define an appropriate grouping for Historical Dataset records. Given their nature, Historical Datasets have a values
array that follow a label/value model. The label
being a string
and the value
being either a number
or null
. Historical Data Properties can be given a formatCode
to apply a format to each record's value.
Attribute | Required | Description |
---|---|---|
code |
True | Unique identifier for the historical dataset property. Lowercase without spaces, a maximum of 32 characters and no special characters except _ |
entityType |
True | FUND , CLSS , BMRK or ACCT - which entity does this dataset apply to |
label |
True | A label for the dataset |
description |
True | A description for the dataset |
formatCode |
False | The name of an existing formatCode in the system. Applies to each value of the values array (refer to Formats) |
group |
True | A string label allowing you to group similar properties together (default is 'core') |
subgroup |
False | A string label allowing you to group similar properties together within a group |
extended |
False | Each extended entry describes a new key that can be added to a value object in the historical dataset |
includeIn |
false | Allows configuration of features that the meta can opt-in to |
includeIn.translations |
false | Opt-in flag for translations of this extended property. When set to true, the extended string properties may be translated when included in entity and entity facet searches. Defaults to false |
Parameter | Value |
---|---|
End Point | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addHistoricalDatasetProperty |
Headers | X-KSYS-TOKEN |
Content Type | application/json |
HTTP Method | POST |
Response | Historical Dataset Property |
{
"code": "monthly_top_ten_holdings",
"entityType": "FUND",
"label": "Monthly Top 10 Holdings",
"description": "Monthly Top 10 holdings of the fund",
"group": "core"
}
{
"historicalDatasetPropertyId": 1,
"code": "monthly_top_ten_holdings",
"entityType": "FUND",
"label": "Monthly Top 10 Holdings",
"description": "Monthly Top 10 holdings of the fund",
"group": "core"
}
Extended properties allows for more complex breakdowns of data to be stored.
E.g. There may be a need to track more than just the label
and value
pair of a record ("UK", 10.432). This is useful when considering credit funds, for example, to track the credit quality or duration next to positions.
Attribute | Required | Description |
---|---|---|
label |
True | The name of the key to be allowed on each value object |
dataType |
True | STRG , DCML , DTIM , BOOL , ITGR or DATE |
formatCode |
False | The name of an existing formatCode in the system. Applies to each value of the values array (refer to Formats) |
Extended properties can be added or updated when inserting or updating a data set's property by including it in the extended
section of the property upsert request. A formatCode
can be configured to apply a pre-defined format to each value of the extended property's value array. Translations for extended properties can be controlled via the includeIn.translations
value.
{
"code": "monthly_top_ten_holdings",
"entityType": "FUND",
"label": "Monthly Top 10 Holdings",
"description": "Monthly Top 10 holdings of the fund",
"group": "core",
"extended": [
{
"label": "number_of_shares",
"dataType": "DCML"
}
],
"includeIn": {
"translations": false
}
}
{
"historicalDatasetPropertyId": 1,
"code": "monthly_top_ten_holdings",
"entityType": "FUND",
"label": "Monthly Top 10 Holdings",
"description": "Monthly Top 10 holdings of the fund",
"group": "core",
"extended": [
{
"label": "number_of_shares",
"dataType": "DCML"
}
],
"includeIn": {
"translations": false
}
}
Transactions are used to record buy, sell or transfer financial agreements related to an entity. A transaction is identified by a unique transactionCode
, classified into a property with a unique code
used to identify the property group and dated with a timestamp attributed by the dateTime
key. As with other property types, transaction records can be assigned an optional currency with the ccy
attribute. Due to the nature of a transaction, records are not updatable but should rather be deleted and replaced with the corrected record, however transaction properties are still updatable.
Properties are used to define an appropriate grouping for transaction records. Given their nature, transactions have a values
object that follow a label/value model, this is different to other property types as it only allows for 1 record and not an array of records. The label
being a string
and the value
being either a number
or null
. Transaction Properties can be given a formatCode
(refer to Formats) to apply a format to the record's value
Attribute | Required | Description |
---|---|---|
code |
True | Unique identifier for the transaction set. Lowercase without spaces, a maximum of 32 characters and no special characters except _ |
entityType |
True | FUND , CLSS , BMRK or ACCT - the entity this allocation applies to |
label |
True | A label for the transaction set |
description |
True | A description for the transaction set |
formatCode |
False | The name of an existing formatCode in the system. Applies to the value in the values object. (refer to Formats) |
group |
True | A string label allowing you to group similar properties together. (default is 'core') |
subgroup |
False | A string label allowing you to group similar properties together within a group |
extended |
False | Each extended entry describes a key that can be added to a value object in the transaction set. (refer to Extended Properties) |
includeIn |
false | Allows configuration of features that the meta can opt-in to |
includeIn.translations |
false | Opt-in flag for translations of this extended property. When set to true, this extended string properties may be translated when included in entity and entity facet searches. Defaults to false |
Parameter | Value |
---|---|
End Point | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/addTransactionProperty |
Headers | X-KSYS-TOKEN |
Content Type | application/json |
HTTP Method | POST |
Returns | The new/updated Transaction Property |
{
"code": "gold_transactions",
"entityType": "CLSS",
"label": "Gold Transactions",
"description": "Transactions for the gold instrument",
"formatCode": "2_dcml",
"group": "core",
"extended": [
{
"label": "Transaction Type",
"dataType": "STRG",
"acceptedValues": ["BUY", "SELL", "TRANSFER"]
},
{
"label": "Quantity",
"dataType": "DCML",
"formatCode": "2_dcml"
},
{
"label": "Total",
"dataType": "DCML",
"formatCode": "2_dcml"
},
...
],
"includeIn": {
"translations": true
}
}
{
"transactionPropertyId": 12,
"code": "gold_transactions",
"entityType": "CLSS",
"label": "Gold Transactions",
"description": "Transactions for the gold instrument",
"formatCode": "2_dcml",
"group": "core",
"extended": [
{
"label": "Transaction Type",
"dataType": "STRG",
"acceptedValues": ["BUY", "SELL", "TRANSFER"]
},
{
"label": "Quantity",
"dataType": "DCML",
"formatCode": "2_dcml"
},
{
"label": "Total",
"dataType": "DCML",
"formatCode": "2_dcml"
},
...
],
"includeIn": {
"translations": true
}
}
All properties can be listed for a particular client account, by hitting the following endpoints with a generic JSON message.
Parameter | Value |
---|---|
Properties | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listProperties |
Allocations | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listAllocProperties |
Statistics | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listStatisticProperties |
Timeseries | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listTSProperties |
Historical Datasets | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listHistoricalDatasetProperties |
Transactions | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listTransactionProperties |
Document MetaData | https://<US: api-us.kurtosys.app OR UK: api-uk.kurtosys.app>/config/listDocMetaTypes |
Headers | X-KSYS-TOKEN |
Content Type | application/json |
HTTP Method | POST |
Attribute | Required | Description |
---|---|---|
entityType |
True | The type of fund or share class: FUND , CLSS , BMRK or ACCT |
sort |
False | Sort directive for the result set, not applicable to Properties or Document MetaData |
sort.key |
True if sort is specified | Property to sort by: code , label , description , formatCode , group or subgroup |
sort.direction |
False | Sort direction: ASC or DESC |
{
"entityType": "FUND"
}
Properties can be applied differently to funds and share classes, select the entityType
from FUND
, CLSS
, BMRK
or ACCT
according to what you want to see.
{
"entityType": "FUND",
"sort": {
"key": "label",
"direction": "ASC"
}
}