Introduction
The Investment Portfolio service lets you store, update, and query your investment portfolios and associated holdings using flexible object definitions so you can store more information without worrying about format. With outstanding performance, flexible storage, filtering, and data retrieval, you can make informed and timely investment decisions quickly.
Methods
Create multiple portfolios
This operation creates or updates multiple portfolios at once. For example, you can limit a number of writes to a single command by using this operation to create two portfolios and update three more. To update an existing portfolio with a specific timestamp, include the _rev property in the definition.
POST /bulk_portfolios
Request
curl --request POST --url https://investment-portfolio.mybluemix.net/api/v1/bulk_portfolios --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH' --header 'content-type: application/json'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") headers = { 'accept': "application/json", 'content-type': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("POST", "/api/v1/bulk_portfolios", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Get portfolios
This operation returns all portfolios from the system that the caller has access to based on the specified parameters. Each portfolio name may have multiple entries with different timestamps. Use the latest parameter to retrieve only the most recent entry for each portfolio and use the openOnly parameter to retrieve only open portfolios.
GET /portfolios
Request
Query Parameters
When the value is true, the most recent entry for each portfolio is returned. When the value is false, all entries are returned for all portfolios. The default value is false.
Allowable values: [
true
,false
]When the value is true, only open portfolios are returned. When the value is false, all portfolios are returned. The default value is false.
Allowable values: [
true
,false
]
curl --request GET --url 'https://investment-portfolio.mybluemix.net/api/v1/portfolios?latest=string&openOnly=string' --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") headers = { 'accept': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("GET", "/api/v1/portfolios?latest=string&openOnly=string", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Create portfolio
This operation creates a portfolio entry. Values are required for name and timestamp.
POST /portfolios
Request
Set to true if portfolio is closed.
curl --request POST --url https://investment-portfolio.mybluemix.net/api/v1/portfolios --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH' --header 'content-type: application/json' --data '{"closed":true,"data":"string","name":"string","timestamp":"string"}'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") payload = "{"_rev":"string","closed":true,"data":"string"}" headers = { 'accept': "application/json", 'content-type': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("POST", "/api/v1/portfolios", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Find portfolios by selector
This operation returns portfolios that have data matching the specified selector. Use this operation for complex queries. For more information about the syntax, see Selector Syntax.
POST /portfolios/_find
Request
curl --request POST --url https://investment-portfolio.mybluemix.net/api/v1/portfolios/_find --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH' --header 'content-type: application/json' --data '{"dataSelector":{"data property name": "data property value"}}'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") payload = "{ "dataSelector":{ "data property name":"data property value" } } headers = { 'accept': "application/json", 'content-type': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("POST", "/api/v1/portfolios/_find", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Find portfolio by name
This operation returns the named portfolio. Use the atDate parameter to retrieve only the portfolios on or before a specified date and time and the hasAnyKey, hasKey, hasKeyValue, and hasNoKey parameters to retrieve portfolios based on the keys in their data field. Use the limit parameter to return only a specified number of portfolios.
GET /portfolios/{portfolioName}
Request
Path Parameters
Name of the portfolio to retrieve
Query Parameters
When this parameter specifies a date and time, the portfolios with timestamps on or before the specified date and time are returned. If the time is not specified, the default is 00:00:00.000.
When the data field of the portfolio contains any of the keys specified by this parameter, that portfolio is returned. For example, to get portfolios with either the manager or acting-manager keys defined, you can specify hasAnyKey=manager,acting-manager.
When the data field of the portfolio contains the keys specified by this parameter, that portfolio is returned. For example, to get portfolios with the manager and acting-manager keys defined, you can either specify hasKey=manager,acting-manager or you can specify multiple hasKey parameters: hasKey=manager&hasKey=acting-manager.
When the data field of the portfolio contains the keys and values specified by this parameter, that portfolio is returned. For example, to get portfolios where Edward Lam is the manager, specify hasKeyValue=manager:Edward Lam.
When the data field of the portfolio doesn't contain the keys and values specified by this parameter, that portfolio is returned. For example, to get portfolios without the cancelled key defined, specify hasNoKey=cancelled.
When the value is an integer, the number of portfolios returned is limited to the number specified. If a number is not specified, all portfolios matching the other criteria are returned.
When the value is asc, the portfolios with the earliest timestamps are returned first. When the value is desc returns the portfolios with the most recent timestamps first. If no value is specified, then the portfolios are not sorted.
Allowable values: [
asc
,desc
]
curl --request GET --url 'https://investment-portfolio.mybluemix.net/api/v1/portfolios/{portfolioName}?atDate=string&hasAnyKey=undefined&hasKey=undefined&hasKeyValue=undefined&hasNoKey=undefined&limit=0&sort=string' --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") headers = { 'accept': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("GET", "/api/v1/portfolios/{portfolioName}?atDate=string&hasAnyKey=undefined&hasKey=undefined&hasKeyValue=undefined&hasNoKey=undefined&limit=0&sort=string", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Find named portfolio by selector
This operation returns the named portfolio that has data matching the specified selector. Use this operation for complex queries. For more information about the syntax, see Selector Syntax.
POST /portfolios/{portfolioName}/_find
Request
Path Parameters
Name of the portfolio to retrieve
curl --request POST --url https://investment-portfolio.mybluemix.net/api/v1/portfolios/{portfolioName}/_find --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH' --header 'content-type: application/json' --data '{"dataSelector":{"data property name": "data property value"}}'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") payload = "{ "dataSelector":{ "data property name":"data property value" } } headers = { 'accept': "application/json", 'content-type': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("POST", "/api/v1/portfolios/{portfolioName}/_find", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Delete portfolio
This operation deletes the portfolio entry where the name and timestamp match. Note that when you creating holdings associated with a portfolio, the date of the holdings must be on or after the date of the first entry for that portfolio. However, if you delete that first portfolio entry, the holdings data that exists after that entry but before the next entry for that portfolio are not deleted.
DELETE /portfolios/{portfolioName}/{timestamp}
Request
Path Parameters
Name of the portfolio to delete
Date and time of the portfolio entry to delete. If the time is not specified, the default is 00:00:00.000.
Query Parameters
The current _rev of the portfolio entry
curl --request DELETE --url 'https://investment-portfolio.mybluemix.net/api/v1/portfolios/{portfolioName}/{timestamp}?rev=string' --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH' --header 'content-type: application/json'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") headers = { 'accept': "application/json", 'content-type': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("DELETE", "/api/v1/portfolios/{portfolioName}/{timestamp}?rev=string", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Update portfolio
This operation updates the portfolio entry where the portfolio name and timestamp match.
PUT /portfolios/{portfolioName}/{timestamp}
Request
Path Parameters
Name of the portfolio to update
Date and time of the portfolio entry to update
Set to true if portfolio is closed.
curl --request PUT --url https://investment-portfolio.mybluemix.net/api/v1/portfolios/{portfolioName}/{timestamp} --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH' --header 'content-type: application/json' --data '{"_rev":"string","closed":true,"data":"string"}'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") payload = "{"_rev":"string","closed":true,"data":"string"}" headers = { 'accept': "application/json", 'content-type': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("PUT", "/api/v1/portfolios/{portfolioName}/{timestamp}", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Create multiple holdings
This operation creates or updates multiple holdings at once. For example, you can limit a number of writes to a single command by using this operation to create two new holdings and update three more. To update an existing holding, include the _rev property in the definition.
POST /portfolios/{portfolioName}/bulk_holdings
Request
Path Parameters
Name of the portfolio with which the holdings are associated
curl --request POST --url https://investment-portfolio.mybluemix.net/api/v1/portfolios/{portfolioName}/bulk_holdings --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH' --header 'content-type: application/json'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") headers = { 'accept': "application/json", 'content-type': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("POST", "/api/v1/portfolios/{portfolioName}/bulk_holdings", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Get holdings
This operation returns holdings associated with the specified portfolio. Use the latest parameter to retrieve only the holdings for the most recent entry for the specified portfolio, the atDate parameter to retrieve holdings on or before the specified timestamp, and the hasKey parameter to retrieve holdings that have the specified keys defined.
GET /portfolios/{portfolioName}/holdings
Request
Path Parameters
Name of the portfolio with which the holdings are associated
Query Parameters
When the value is a date and time, the holdings with timestamps on or before the specified date and time are returned.
When the value contains the names of keys, the holdings that have the specified keys defined are returned. For example, to get holdings with the isin and quantity keys defined, you can either specify hasKey=isin,quantity or you can specify multiple hasKey parameters: hasKey=isin&hasKey=quantity.
When the value is true, the most recent holdings entry is returned. When the value is false, all holdings are returned. The default value is false.
Allowable values: [
true
,false
]
curl --request GET --url 'https://investment-portfolio.mybluemix.net/api/v1/portfolios/{portfolioName}/holdings?atDate=string&hasKey=undefined&latest=string' --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") headers = { 'accept': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("GET", "/api/v1/portfolios/{portfolioName}/holdings?atDate=string&hasKey=undefined&latest=string", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Create holdings
This operation creates holdings associated with the specified portfolio entry. Use the portfolioName parameter to specify the portfolio with which to associate the new holdings. New holdings must have a timestamp specifying a date and time either on or after the date and time specified by the timestamp of the associated portfolio.
POST /portfolios/{portfolioName}/holdings
Request
Path Parameters
Name of the portfolio to associate holdings with
curl --request POST --url https://investment-portfolio.mybluemix.net/api/v1/portfolios/{portfolioName}/holdings --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH' --header 'content-type: application/json' --data '{"holdings":"string","timestamp":"string"}'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") payload = "{"holdings":"string","timestamp":"string"}" headers = { 'accept': "application/json", 'content-type': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("POST", "/api/v1/portfolios/{portfolioName}/holdings", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Delete holdings
This operation deletes the holdings entry where name and timestamp match.
DELETE /portfolios/{portfolioName}/holdings/{timestamp}
Request
Path Parameters
Name of the portfolio the holdings is associated with
Date and time of the holdings entry to delete
Query Parameters
The current _rev of the holdings entry
curl --request DELETE --url 'https://investment-portfolio.mybluemix.net/api/v1/portfolios/{portfolioName}/holdings/{timestamp}?rev=string' --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH' --header 'content-type: application/json'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") headers = { 'accept': "application/json", 'content-type': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("DELETE", "/api/v1/portfolios/{portfolioName}/holdings/{timestamp}?rev=string", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
Update holdings
This operation updates the holdings entry where portfolio name and timestamp match.
PUT /portfolios/{portfolioName}/holdings/{timestamp}
Request
Path Parameters
Name of the portfolio with which the holdings are associated
Date and time of the holdings entry to update
curl --request PUT --url https://investment-portfolio.mybluemix.net/api/v1/portfolios/{portfolioName}/holdings/{timestamp} --header 'accept: application/json' --header 'authorization: Basic REPLACE_BASIC_AUTH' --header 'content-type: application/json' --data '{"_rev":"string","holdings":"string"}'
import http.client conn = http.client.HTTPSConnection("investment-portfolio.mybluemix.net") payload = "{"_rev":"string","holdings":"string"}" headers = { 'accept': "application/json", 'content-type': "application/json", 'authorization': "Basic REPLACE_BASIC_AUTH" } conn.request("PUT", "/api/v1/portfolios/{portfolioName}/holdings/{timestamp}", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))