Your base URL for Adapptr is https://%company%-svc.fundapps.co/api/adapptr, e.g. https://abc-svc.fundapps.co/api/adapptr
.
Authentication to the Adapptr API is done via Basic Authentication over HTTPS. An administrator from your organisation must create a user with the role "API" for this purpose. You must authenticate for all requests.
Note: Please ensure you create a separate user for the API as if you use an existing user's account, as soon as they change their password the API upload will fail.
For all methods, authentication is made against your FundApps environment. You are required to include the Username and Password of an API user in your FundApps environment.
List of available data providers, identifier types, position services and more. Those can be requested from this endpoint. You must then use the appropriate ids for parameters in other requests.
Id | Data Provider |
---|---|
1 | Refinitiv |
2 | Bloomberg |
Id | Identifier Type |
---|---|
1 | Isin |
2 | Sedol |
3 | Cusip |
4 | DataProviderId |
Id | Positions Service |
---|---|
2 | Shareholding Disclosure |
4 | Position Limits |
6 | Shareholding Disclosure & Position Limits |
Id | File Data Formats |
---|---|
1 | FundApps |
2 | Consensys |
If you are using Refinitiv data you must submit your username and password to this endpoint. Before being able to post a file to Adapptr, your data provider credentials must be set. Your file upload will otherwise fail because FundApps will be unable to connect and authenticate against the data provider.
Note: This endpoint does not support Bloomberg data provider. The support team will have to use your Bloomberg generated certificate to enable Adapptr integration. Please contact [email protected]
or your Client Success Manager for more details.
e.g.
{ "Username": "[Username]", "Password": "[Password]" }
Upload daily positions. This method expects a CSV format (example Adapptr position files). The response includes a taskId
and a trackingEndpoint
that can then be polled via the GET method to monitor the progress of the task through the Adapptr service.
The positions
parameter must be the file that you need to upload.
The snapshotDate
parameter must be included as a parameter in the format yyyy-mm-dd
. This is the snapshot date of the positions being uploaded in the csv file.
The dataProvider
is an integer parameter that must be included to select a specific data provider. A list of all supported providers can be obtained from the Available Nomenclatures endpoint.
The services
[optional] parameter can be included if you need different from the default Shareholding Disclosure
service. It expects the Id
of a service(s), that could be obtained from the Available Nomenclatures endpoint.
The primaryIdentifier
[optional] parameter can be included if you need to specify which identifier from your positions file you wish to use to query against the data provider. For example if a position has both ISIN and SEDOL this parameter indicates which of the two identifiers should be used when requesting data from your market data provider. If not populated, the default is ISIN. The value could be obtained from the Available Nomenclatures endpoint.
The secondaryIdentifier
[optional] parameter can be included if you need to specify which identifier to fall back to if your primaryIdentifier is not populated. For example if your primaryIdentifier is set to 1 for ISIN and you have a position which doesn't have an ISIN but has a SEDOL, setting the secondaryIdentifier to 2 (SEDOL) would tell Adapptr to use SEDOL to query data from your market data provider if ISIN is not populated. By default this is empty. The value could be obtained from the Available Nomenclatures endpoint.
The tertiaryIdentifier
[optional] parameter can be included if you need to specify which identifier to fall back to if your secondaryIdentifier is not populated. For example if your secondaryIdentifier is set to 1 for ISIN and you have a position which doesn't have an ISIN but has a SEDOL, setting the tertiaryIdentifier to 2 (SEDOL) would tell Adapptr to use SEDOL to query data from your market data provider if ISIN is not populated. By default this is empty. The value could be obtained from the Available Nomenclatures endpoint.
The excludeErroredAssets
[optional] is a boolean parameter that can be set if you need to send the positions despite errors due to incomplete data from your market data provider. Default value: false
The copyDownParentInstrumentData
[optional] is a boolean parameter that can be set if you find the data provider component data not complete enough. Setting the value to true
will copy all data from the parent instrument to the instrument of the component. The resulting component instrument will be Equity. Default value: false
The populateExecutionVenueWithMarket
[optional] is a boolean parameter that can be set if you need to use your data provider's Market field to populate ExecutionVenue of your assets. Default value: false
This method converts the Consensys or Adapptr csv file format into the FundApps required format for the Position Limits service only. The response includes a taskId and a trackingEndpoint that can then be polled via the GET method to monitor the progress of the task through the Adapptr service.
The positions
parameter must be the file that you need to upload.
The snapshotDate
parameter must be included as a parameter in the format yyyy-mm-dd
. This is the snapshot date of the positions being uploaded in the CSV file.
The format
[optional] [default value = 2] parameter can be included if you prefer using different file data format. A list of all supported file data formats can be obtained from the Available Nomenclatures endpoint.
This method works only with the FundApps Position Limits service. Please see here for an example.
{
"id": "d1188c41-9cd4-467a-9c80-d3d3cba88b1c",
"type": {
"id": 1,
"name": "Positions"
},
"status": {
"id": 1,
"name": "Accepted",
"description": "Position file accepted. Please check the tracking endpoint to check for any errors in the file upload and to track the progress of the file enrichment and transmission."
},
"dateCreated": "2022-06-24T11:32:22.7427025Z",
"trackingEndpoint": "/api/adapptr/v2/task/d1188c41-9cd4-467a-9c80-d3d3cba88b1c/status"
}
This method uploads the composites file that will be used in the positions/expost enrichment.
The composites
parameter must be the file that you need to upload. It is required to be a .csv file or a .zip of a csv file.
{
"message": "Upload Successful"
}
This method uploads the positions and enriches using the latest uploaded composites file from the v2/composites upload.
The positions
parameter must be the file that you need to upload. It is required to be a .xml file or a .zip of a .xml file.
The response includes a taskId
and a trackingEndpoint
that can then be polled via the GET method to monitor the progress of the task through the Adapptr service.
{
"id": "3b5a2647-b8e5-4cfc-a452-4f877172ac97",
"type": {
"id": 3,
"name": "Expost Positions"
},
"status": {
"id": 1,
"name": "Accepted",
"description": "Position file accepted. Please check the tracking endpoint to check for any errors in the file upload and to track the progress of the file enrichment and transmission."
},
"dateCreated": "2022-08-31T13:08:08.5288727Z",
"trackingEndpoint": "/api/adapptr/v2/task/3b5a2647-b8e5-4cfc-a452-4f877172ac97/status"
}
GET the task status. This method returns a status of the requested TaskId and if the task has failed, the errors that have contributed to the failure.
There are 4 status ids
id | status | Explanation |
---|---|---|
1 | Accepted | Job just received; not processed yet. |
2 | Enriched | Data is being requested from data provider, then enriched with the csv file and the xml file generated but not yet sent. |
3 | Transmitted | xml file sent to fundapps. |
4 | Enriched With Exclusions | Data is being requested from data provider, then enriched with the csv file and the xml file generated but not yet sent, some positions skipped due to incomplete data. |
5 | Transmitted With Exclusions | xml file sent to fundapps, some positions skipped due to incomplete data. |
6 | Waiting Extractions | A request is sent to the data provider, but there is no response yet. |
500 | Failed | Job has failed. Please read errors to identify cause of job failure. |
Once transmitted, the request will give the trackingEndpoint
URL which can be polled to check the status of the XML positions file upload to FundApps.
{
"id": "9b134cda-81db-44c0-9c52-cfeb897e663a",
"type": {
"id": 1,
"name": "Positions"
},
"status": {
"id": 5,
"name": "Transmitted With Exclusions",
"description": "Successfully transmitted. Some positions were skipped, most likely due to incomplete data from your market data provider. Please check the warnings field for a list of all skipped positions as well as the cause reason."
},
"dateCreated": "2021-07-22T17:09:01.186+03:00",
"dateUpdated": "2021-07-22T17:13:19.024+03:00",
"trackingEndpoint": "https://demo-melon-api.fundapps.co/v1/expost/result/38ba5713-c253-42d1-896a-bd6e00ea5ec3",
"statusReport": {
"errors": null,
"warnings": [
"Identifier: <Identifier> | Component is required for this instrument. Refinitiv returned null or empty value for UnderlyingISIN and UnderlyingRIC. Consider providing ComponentISIN value in the positions file.",
"Identifier: <Identifier> | Empty result while getting enrichment data for item. Please check if the identifier is valid.",
"For component | Parent Identifier: <Identifier> | Identifier: <Identifier> | Unsupported AssetClass: <AssetClass>"
]
}
}
GET information regarding the utilization of the subscribed ETF Library. This method provides a list of selected ETF ISINs from the library, along with details on the contracted number of ETFs and the total count already utilized. You will receive an HTTP 200 reply with the example json showing below.
{
"used": 2,
"contracted": 10,
"etfsUsed": [
{
"etfISIN": "DE000A0F5UK5",
"etfBenchmarkISIN": "EU0009658632"
},
{
"etfISIN": "IE0005042456"
}
]
}
If you have no subscription to ETF Library the API will return an error: HTTP 403 Forbidden
As a helper to automate the setup and daily operations there are a group of power shell scripts provided that aim to help the process of upload daily positions files. Those scripts create power shell functions to allow the use of the Adapptr APIs.
Once the functions are created, they can be used from the command line directly or integrated with other scripts created by client's own teams.
On the header of each script there is a description of how to use the functions created.
script | Explanation |
---|---|
check-task-status.ps1 | create a function that will call the task status api to check a task status |
post-data-provider-credentials.ps1 | create a function that will call the data provider api to registry the provider credentials |
upload-positions-without-enrichment.ps1 | create functions that allow to submit positions file to run without enrichment without enrichment api |
upload-positions.ps1 | create functions that allow to submit positions file to run with enrichment enrichment api |
entry-provider-credentials.ps1 | this script allow the use of data provider api asking the information required and submit the request to the API. The password requested will be obscured. |