Fund Lists

Upsert

Fund lists are used to track things like registered for sale keys. You create a list name, and then add applicable funds to it. Note that the array of funds or share classes should be identified by the clientCode used to load them in the system. These lists can then be used as filters to the /searchEntity service.

Parameter Value
End Point https://api.fundpress.io/config/upsertFundList
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST

Request

Example Entity List:

{
    "entityType": "FUND",
    "listType": "entity",
    "listName": "institutional_UK",
    "description": "UK Institutional funds",
    "funds": ["GB123123123", "GB12312314"],
    "segmentationTags": {
        "country": { "value": "UK" },
        "language": { "value": "en" }
    }
}

Example Entity List using entity aliases:

{
    "entityType": "FUND",
    "listType": "entity",
    "listName": "institutional_UK",
    "funds": ["RWCGHIG", "RWGCRCH"],
    "useEntityAlias": true,
    "segmentationTags": {
        "country": { "value": "UK" },
        "language": { "value": "en" }
    }
}

Example Query List:

{
    "entityType": "FUND",
    "listType": "query",
    "segmentationQuery": {
        "terms": [
            {
                "code": "investor_type",
                "operation": "include",
                "values": ["institutional"]
            },
            {
                "code": "market_ready",
                "operation": "include",
                "values": ["yes"]
            },
            {
                "code": "market_cap",
                "operation": "number_range",
                "values": [50, 500]
            },
            {
                "code": "inception_date",
                "operation": "date_range",
                "values": ["2017-01-01", "2018-01-01"]
            },
            {
                "code": "domicile",
                "operation": "exclude",
                "values": ["UK"]
            }
        ]
    },
    "listName": "UK Institutional funds",
    "description": "Large, ready to trade, Non-UK Institutional Funds 2017",
    "segmentationTags": {
        "language": { "value": "en" }
    }
}

Example Composite Query:

{
    "entityType": "FUND",
    "listName": "Emerging Markets ex China",
    "description": "Emerging Markets excluding China to prevent skew",
    "listType": "composite",
    "compositeQuery": {
        "operation": "subtract",
        "values": ["Emerging Markets", "China"]
    }
}
Parameter Value
entityType The types of the entities in the list
listType The type of the list valid values are "entity" (for lists that do not change) and "query" (for lists that get the entities from the provided segmentationQuery)
segmentationQuery The query used to determine whihch entities should be in this list (if listType is "query") - described below
compositeQuery The operation and segmentation lists to use to form a composite query (when listType is "composite"). Segmentation lists need to be of the same entityType
listName The name of the list
description Optional, description of the list
funds The client codes for the entities included in this list. If this is not provided, the funds will not be updated. If it is provided, it will replace the current list of funds, even if an empty array
useEntityAlias Optional, when set to true, the funds parameter should contain a list of the entity property defined as the entity alias in client configuration, instead of the client codes
segmentationTags Optional, the segmentation tags that a list is tagged with for use in the production center etc.

Segmentation Query

The segmentationQuery property is used when the listType is query. This means the entities in the list will be determined by the provided search criteria. The below is shows a full example of the capabilities of the query. It contains a list of term objects which are logically ANDed together before the search is performed. This means an entity must have properties that fulfill each of the criteriea before being added to this list.

{
    "terms": [
        {
            "code": "investor_type",
            "opertation": "include",
            "values": ["institutional"]
        },
        {
            "code": "market_ready",
            "operation": "include",
            "values": [true]
        },
        {
            "code": "market_cap",
            "operation": "number_range",
            "values": [50, 500]
        },
        {
            "code": "inception_date",
            "operation": "date_range",
            "values": ["2017-01-01", "2018-01-01"]
        },
        {
            "code": "domicile",
            "operation": "exclude",
            "values": ["UK"]
        }
    ]
}
Parameter Value
code The property on the entity to match on
opertation The operation used when performing a match. Possible values are include, exculde, number_range and date_range. The use of these is restricted to properties with the correct data types. See below matrix
values The values to use in the match

Operation Data Type Matrix

include exculde number_range date_range
String (STRG)
Date (DATE, DTIM)
Number (DCML, ITGR)
Boolean (BOOL)

Composite Query

The compositeQuery property is used when the listType is composite. The entities in this dynamic list will be composed by combining 2 existing segmentation lists and applying the specified operation.

In the following example, the result will be all items that are in "List 1" and not in "List 2":

{
    "operation": "subtract",
    "values": ["List 1", "List 2"]
}

In the following example, the result will be all items that are in both "List 1" and "List 2":

{
    "operation": "intersect",
    "values": ["List 1", "List 2"]
}
Parameter Value
opertation The operation used when combining the lists. Possible values are subtract andintersect.
values The lists to use in the composite query

List Fundlists /config/listfundlists

Fund Lists can be listed by calling the following service with an empty json body {} to return all the lists, or a list name to return a specific list.

If useEntityAlias is set then it will use the Entity Alias columns and not the default entity column.

Service call details.

Parameter Value
End Point https://api.fundpress.io/config/listfundlists
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Return Type JSON
Return Data An array of fund lists
Request

Return a specific list:

{
    "listname": "Institutional",
    "useEntityAlias": false
}
{
    "listName": ["Institutional", "All Funds"],
    "description": ["All parent funds", "UK Institutional funds"],
    "useEntityAlias": false,
    "listType": ["entity"],
    "entityType": ["FUND"],
    "segmentationTags": {
        "language": { "value": "en" }
    },
    "start": 0,
    "limit": 10,
    "sort": "description",
    "sortDir": "desc"
}

An empty request object returns all lists (as per the Response section)

JSON Key Required Type Description
listname FALSE STRING The name of the list to return (cannot be used with listName)
listName FALSE ARRAY The names of the lists to return (cannot be used with listname)
description FALSE ARRAY The descriptions of the lists to return
useEntityAlias FALSE BOOLEAN Determines if the Entity Alias is returned or the default Entity
listType FALSE ARRAY entity, query or composite
entityType FALSE ARRAY FUND, CLSS, ACCT, BMRK or MIXD
segmentationTags FALSE TAG Filter by segmentation tags attached to the list
start FALSE INTEGER Start index of the records (used for pagination)
limit FALSE INTEGER The max results to return
sort FALSE STRING The field to sort by listName or description
sortDir FALSE STRING asc or desc

Tag:

JSON Key Required Type Description
\ FALSE OBJECT The segmentation tag to search for
Response
[
    {
        listId: 1,
        listName: "All Funds",
        listType: "Entity",
        entityType: "FUND",
        funds: ["ALPHA", "BOND", "EQUITY", "EURO", "MACRO"],
        segmentationTags: {
            country: { value: "France" },
            institutions: { value: "Health" }
        },
        description: "All parent funds",
        segmentationQuery: {}
    },
    {
        listId: 2,
        listName: "UK Institutional",
        listType: "Entity",
        entityType: "CLSS",
        funds: [
            "KS0273642768",
            "KS0273642925",
            "KS0281101039",
            "KS0281101385",
            "KS0273643733",
            "KS0281101468",
            "KS0273643493",
            "KS0280814137",
            "KS0280814301",
            "KS0281101898",
            "KS0391202164",
            "KS0453475161"
        ],
        segmentationTags: {},
        description: "UK Institutional funds",
        segmentationQuery: {}
    }
];

With useEntityAlias set to true.

[
    {
        listId: 3,
        listName: "individual_UK",
        listType: "Entity",
        entityType: "CLSS",
        funds: [
            {
                clientCode: "GB123123123",
                alias: "RWCGHIG",
                type: "CLSS"
            },
            {
                clientCode: "GB12312314",
                alias: "RWGCRCH",
                type: "FUND"
            }
        ],
        segmentationTags: {},
        description: "UK Individual funds",
        segmentationQuery: {}
    }
];

If limit is provided in the request, it is assumed that pagination is required. This means the response contains the total number of records. The response will be:

{
    "start": 0,
    "limit": 1,
    "total": 16,
    "values": [
        {
            listId: 3,
            listName: "individual_UK",
            listType: "Entity",
            entityType: "CLSS",
            funds: [
                {
                    clientCode: "GB123123123",
                    alias: "RWCGHIG",
                    type: "CLSS"
                },
                {
                    clientCode: "GB12312314",
                    alias: "RWGCRCH",
                    type: "FUND"
                }
            ],
            segmentationTags: {},
            description: "UK Individual funds",
            segmentationQuery: {}
        }
    ]
}
JSON Key Type Description
start INTEGER The start index of the records
limit INTEGER The maximum records returned in this response
total INTEGER The total number of records matching the request filter (if any)
values ARRAY The array of values

Get Segmentation list Facets getFundListFacets

Facets are a list of entities meta properties filtered by a searchTerm. The supported facet types are segmentation list name, segmentation tags, segmentation tag values and entities. Results are grouped and limited to 10 results per propertyValues.

Service call details.

Parameter Value
End Point https://api.fundpress.io/config/getFundListFacets
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Return Type JSON

Request

{
    "searchTerm": "a",
    "listType": ["entity", "query"]
}
Property Required Type Description
searchTerm TRUE STRING The value to search for
listType FALSE STRING LIST The list types to return facets for

Response

The response contains the facets with items that match the searchTerm.

{
    "listName": [
        {
            "code": "listName",
            "label": "List Name",
            "values": [
                "Alternatives",
                "DE Individual",
                "DE Institutional",
                "FR Individual",
                "FR Institutional",
                "UK Individual",
                "UK Institutional"
            ]
        }
    ],
    "description": [
        {
            "code": "description",
            "label": "Description",
            "values": [
                "All parent funds",
                "Alternatives funds",
                "DE Individual funds",
                "DE Institutional funds",
                "FR Individual funds",
                "FR Institutional funds",
                "UK Individual funds",
                "UK Institutional funds"
            ]
        }
    ],
    "segmentationTags": [
        {
            "code": "region",
            "label": "Region",
            "values": [
                "Africa",
                "Americas"
            ]
        }
    ]
}
Property Type Description
listName FACET ARRAY The name of the property found
description FACET ARRAY The property values of the matched item
segmentationTags FACET ARRAY The property values of the matched item

FACET:

Property Type Description
code STRING The facet code
label STRING The facet label
values STRING ARRAY The values of the matching item

Delete Fundlist /config/deletefundlist

A fund List can be deleted by supplying the listName in the request.

Service call details.

Parameter Value
End Point https://api.fundpress.io/config/deletefundlist
Headers X-KSYS-TOKEN
Content Type application/json
HTTP Method POST
Return Type JSON
Request
{
    "listName": "Institutional"
}
{
}
JSON Key Required Type Description
listName TRUE STRING The specific list to delete
Response

If the list is deleted succesfully, we will return a response code 200.

If the list is in use, we return a response code 409, and a list of all the commentaries, disclaimers, composite queries and document production workflows, where the segmentation list is being used.

{
   "error": {

         "message": "The segmentation list is in use, and can not be deleted as it is currently in use",
         "areasInUse": [
              {
                 "area": "commentary",
                 "values": ["Fund Performance", "Fund Introduction"]
               },{
                 "area": "Disclaimers",
                 "values": ["Disclaimer"]
              },{
                 "area": "Composite queries",
                 "values": ["Test Query List", "List1"]
              }
          ]
      }
}