openapi: 3.0.1
info:
version: 1.0.0
title: Authorization Tokens Accounts Portfolio Holdings API
description: 'Use the `oauth` endpoint to generate the secure, time-limited JSON Web Tokens (JWTs) used to authorize access to APIs and components.
To request a token, click Authorize and enter the following credentials:
* Username - Your Client ID.
* Password - Your Client Secret.'
servers:
- url: https://www.us-api.morningstar.com/token
description: PROD US
- url: https://www.emea-api.morningstar.com/token
description: PROD EMEA
- url: https://www.apac-api.morningstar.com/token
description: PROD APAC
security:
- BasicAuth: []
tags:
- name: Portfolio Holdings
paths:
/direct-web-services/v1/investments/{id}/full-portfolio-holdings-month-end-or-quarter-end-most-recent:
get:
summary: Get Full Portfolio Holdings Month-End or Quarter-End Most Recent data view.
parameters:
- name: id
in: path
description: "\nSpecifies the investment to query. \n\nMorningstar Performance ID is the default identifer for the API. Use the Universe API to retrieve Performance IDs for investments in your entitled universe."
required: true
schema:
type: string
example: 0P00000046
examples:
performanceId:
summary: Morningstar Performance ID
value: 0P00000046
isin:
summary: ISIN
value: US0042391096
- name: idType
in: query
description: 'Specifies the type of the value passed in the `id` parameter.
Morningstar Performance ID is the default identifer for the API. Use the Universe API to retrieve Performance IDs for investments in your entitled universe.'
schema:
enum:
- performanceId
- isin
- securityId
- cusip
- tradingSymbol
- fundCode
- msid
type: string
default: performanceId
- name: baseCurrency
in: query
description: Base currency to use for investment lookup. Accepts 3‑character ISO 4217 currency codes.
schema:
type: string
examples:
baseCurrencyExample1:
summary: US Dollar
value: USD
baseCurrencyExample2:
summary: Swiss Franc
value: CHF
- name: domicile
in: query
description: Domicile to use for investment lookup. Accepts 3-character ISO 3166-1 country codes.
schema:
type: string
examples:
domicileExample1:
summary: CAN (Canada)
value: CAN
domicileExample2:
summary: JPN (Japan)
value: JPN
domicileExample3:
summary: USE (United States)
value: USA
- name: exchangeCountry
in: query
description: Exchange country to use for investment lookup. Accepts 3-character ISO 3166-1 country codes.
schema:
type: string
examples:
exchangeCountryExample1:
summary: CAN (Canada)
value: CAN
exchangeCountryExample2:
summary: JPN (Japan)
value: JPN
exchangeCountryExample3:
summary: USA (USA)
value: USA
- name: exchangeId
in: query
description: Exchange identifier to use for investment lookup.
schema:
type: string
externalDocs:
description: List of exchange IDs.
url: https://developer.morningstar.com/content/hidden-from-navigation/DwsIdLookUpExchangeIds.xlsx
examples:
exchangeIdExample1:
summary: NASDAQ - ALL Markets (NAS)
value: EX$$$$XNAS
exchangeIdExample2:
summary: London Stock Exchange (LSE)
value: EX$$$$XLON
- name: holdingsView
in: query
schema:
enum:
- Full
- Top10
- Top25
type: string
default: Top10
description: Type of holdings view to return.
examples:
holdingsViewExample1:
summary: Top 10 Holdings
value: Top10
holdingsViewExample2:
summary: Full Holdings
value: Full
- name: portfolioDate
description: Date for which to retrieve holdings data.
schema:
type: string
examples:
portfolioDateExample1:
summary: Portfolio Date Example
value: '2026-01-02'
description: Most recent data supported.
operationId: getFullPortfolioHoldingsMonthEndOrQuarterEndMostRecentPackage
tags:
- Portfolio Holdings
responses:
'200':
$ref: '#/components/responses/ResponseFullPortfolioHoldingsMonthEndOrQuarterEndMostRecent'
'400':
$ref: '#/components/responses/ResponseBadRequest'
'500':
$ref: '#/components/responses/ResponseInternalServerError'
/direct-web-services/v1/investments/{id}/portfolio-holdings-dates:
post:
summary: Retrieve portfolio holdings date
parameters:
- name: id
in: path
description: "\nSpecifies the investment to query. \n\nMorningstar Performance ID is the default identifer for the API. Use the Universe API to retrieve Performance IDs for investments in your entitled universe."
required: true
schema:
type: string
examples:
performanceId:
summary: Morningstar Performance ID
value: 0P00000046
isin:
summary: ISIN
value: US0042391096
tags:
- Portfolio Holdings
description: 'This endpoint is used to retrieve dates for which data is available for a portfolio.
These dates are used to specify a portfolio date when requesting investment details for the following views:
- `full-portfolio-holdings-month-end-or-quarter-end-most-recent`'
operationId: retrievePortfolioHoldingsDates
requestBody:
$ref: '#/components/requestBodies/RequestPortfolioHoldingsDates'
responses:
'200':
$ref: '#/components/responses/ResponsePortfolioHoldingsDates'
'400':
$ref: '#/components/responses/ResponsePortfolioHoldingsDatesBadRequest'
/direct-web-services/time-series/v1/portfolio-holdings/carbon-risk-level-classification/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Carbon Risk Level Classification time series.
description: The fund's Historical Carbon Risk Score is assigned to one of five risk categories:Portfolio Carbon Risk Score Risk Level0 Negligible 0.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- monthly
type: string
default: monthly
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsCarbonRiskLevelClassification
/direct-web-services/time-series/v1/portfolio-holdings/carbon-risk-score-category-average/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Carbon Risk Score Category Average time series.
description: The average Carbon Risk Score for portfolios within the Morningstar Category.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- monthly
type: string
default: monthly
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsCarbonRiskScoreCategoryAverage
/direct-web-services/time-series/v1/portfolio-holdings/carbon-risk-score-percent-rank-in-category/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Carbon Risk Score Percent Rank In Category time series.
description: The portfolio's percent rank within its Morningstar Category, based on its Portfolio Carbon Risk Score.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- monthly
type: string
default: monthly
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsCarbonRiskScorePercentRankInCategory
/direct-web-services/time-series/v1/portfolio-holdings/historical-carbon-risk-score/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Historical Carbon Risk Score time series.
description: The historical weighted average of the trailing 12 months of Portfolio Carbon Risk Scores. Historical portfolio scores are not equal-weighted; rather, more-recent portfolios are weighted more heavily than older portfolios.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- monthly
type: string
default: monthly
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsHistoricalCarbonRiskScore
/direct-web-services/time-series/v1/portfolio-holdings/historical-corporate-esg-risk-score/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Historical Corporate ESG Risk Score time series.
description: The Morningstar Historical Corporate ESG Risk Score is a weighted average of the trailing 12 months of Morningstar Portfolio Corporate ESG Risk Scores.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- daily
type: string
default: daily
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsHistoricalCorporateEsgRiskScore
/direct-web-services/time-series/v1/portfolio-holdings/historical-sovereign-esg-risk-score/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Historical Sovereign ESG Risk Score time series.
description: The Morningstar Historical Sovereign ESG Risk Score is a weighted average of the trailing 12 months of Morningstar Portfolio Sovereign ESG Risk Scores.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- daily
type: string
default: daily
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsHistoricalSovereignEsgRiskScore
/direct-web-services/time-series/v1/portfolio-holdings/portfolio-carbon-risk-score/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Portfolio Carbon Risk Score time series.
description: The asset-weighted average of the carbon risk scores for the portfolio's covered, corporate holdings.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- monthly
type: string
default: monthly
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsPortfolioCarbonRiskScore
/direct-web-services/time-series/v1/portfolio-holdings/portfolio-corporate-esg-risk-score/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Portfolio Corporate ESG Risk Score time series.
description: The Morningstar Portfolio Corporate ESG Risk Score is an asset-weighted average of Sustainalytics' company-level ESG Risk Score.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- daily
type: string
default: daily
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsPortfolioCorporateEsgRiskScore
/direct-web-services/time-series/v1/portfolio-holdings/portfolio-environmental-risk-score/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Portfolio Environmental Risk Score time series.
description: The asset-weighted average of the Company Environmental Risk scores for the covered corporate holdings in a portfolio.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- daily
type: string
default: daily
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsPortfolioEnvironmentalRiskScore
/direct-web-services/time-series/v1/portfolio-holdings/portfolio-governance-risk-score/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Portfolio Governance Risk Score time series.
description: The asset-weighted average of the company Governance Risk Scores for the covered corporate holdings in a portfolio.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- daily
type: string
default: daily
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsPortfolioGovernanceRiskScore
/direct-web-services/time-series/v1/portfolio-holdings/portfolio-social-risk-score/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Portfolio Social Risk Score time series.
description: The asset-weighted average of the Company Social Risk Scores for the covered corporate holdings in a portfolio.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- daily
type: string
default: daily
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsPortfolioSocialRiskScore
/direct-web-services/time-series/v1/portfolio-holdings/portfolio-sovereign-esg-risk-score/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Portfolio Sovereign ESG Risk Score time series.
description: The Morningstar Portfolio Sovereign ESG Risk Score is an asset-weighted average of Sustainalytics' Country Risk Score.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- daily
type: string
default: daily
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsPortfolioSovereignEsgRiskScore
/direct-web-services/time-series/v1/portfolio-holdings/portfolio-unallocated-risk-score/{ids}:
get:
tags:
- Portfolio Holdings
summary: Get Portfolio Unallocated Risk Score time series.
description: The asset-weighted average of the Company ESG Risk scores for the covered corporate holdings in a portfolio that do not have Environmental, Social, Governance scores.
parameters:
- name: ids
in: path
description: "\nComma-separated list of up to 25 investment identifiers to query.\n\nAccepts:\n\n- Morningstar Performance ID (default)\n- Morningstar Security ID\n- Morningstar IDs (MSID)\n- ISIN\n- CUSIP\n- Trading symbol\n- Category ID \n Important: When a category ID is passed, the corresponding `identifierType` can be `performanceId` or `securityId`. The value must be URL-encoded. For example, if the category ID is `LC00002226;CA]FO`, the URL-encoded value is `LC00002226;CA%5DFO`."
required: true
schema:
type: string
example: 0P00000016,0P00002Y8D,DODGX,0P000000ppY
- name: idTypes
in: query
description: '
Comma-separated list specifying the type of each value passed in the `ids` parameter.
Rules:
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
* Empty values default to `performanceId`
Example:
* `ids=id1,id2,id3`
* `id1` and `id3` are performance IDs
* `id2` is a security ID
* `idTypes=,securityId`
Accepted values:
* `performanceId` (default)
* `isin`
* `securityId`
* `cusip`
* `tradingSymbol`
* `msid`'
schema:
type: string
example: ',securityId'
- name: baseCurrency
in: query
description: '
Comma-separated list of 3-character ISO 4217 currency codes (for example, `CAD`, `EUR`, `JPY`).
* Filters results based on currency
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Base currency passed for `id2` and `id4`
* `baseCurrency=,USD,,USD`'
schema:
type: string
example: ',USD,,USD'
- name: domicile
in: query
description: "\nComma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`). \nRules:\n\n* Filters results based on domicile\n* Values must align with the order of values in `ids`\n* Use empty entries to skip\n* Omit trailing commas after the last non-empty value\n\nExample:\n\n* `ids=id1,id2,id3,id4,id5`\n* Domicile passed for `id2` and `id4`\n* `domicile=,USA,,USA`"
schema:
type: string
example: ',USD,,USD'
- name: exchangeCountry
in: query
description: '
Comma-separated list of 3-character ISO 3166‑1 country codes (for example, `CAN`, `IRL`, `IND`).
* Filters results based on domicile
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange country passed for `id2` and `id4`
* `exchangeCountry=,USA,,USA`'
schema:
type: string
example: ',CAN,CAN'
- name: exchangeId
description: '
Comma-separated list of exchange IDs (for example, `EX$$$$XMEX`, `EX$$$$XNAS`).
* Filters results based on exchange ID
* Values must align with the order of values in `ids`
* Use empty entries to skip
* Omit trailing commas after the last non-empty value
Example:
* `ids=id1,id2,id3,id4,id5`
* Exchange ID passed for `id2` and `id4`
* `exchangeId=,EX$$$$XMEX,,EX$$$$XNAS`'
in: query
required: false
schema:
type: string
example: EX$$$$XMEX
- name: frequency
in: query
description: Specifies the time interval between data points.
schema:
enum:
- daily
type: string
default: daily
- name: startDate
in: query
description: 'Specifies the start date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2020-01-12'
format: date
- name: endDate
in: query
description: 'Specifies the end date for the time series. Accepted format is `yyyy-MM-dd`.
'
schema:
type: string
example: '2024-01-12'
format: date
- name: timePeriod
in: query
description: "Specifies the size of the time window for the data range. \n\n- Used in combination with `timePeriodUnit` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: number
example: '12'
- name: timePeriodUnit
in: query
description: "\nSpecifies the time period unit. \n\n- Used in combination with `timePeriod` to specify relative time ranges. \n\n- When `startDate`, `endDate`, `timePeriod` and `timePeriodUnit` are provided, `timePeriod` and `timePeriodUnit` take precedence."
schema:
type: string
enum:
- months
- days
- years
- name: applyEarliestCommonDate
in: query
description: "\nSpecifies whether to apply the earliest common start date across all investments.\n\n When set to `true`, the start date of the time series is adjusted to match the latest inception date among the investments, ensuring all data points are aligned."
schema:
type: boolean
default: false
- name: applyTrackRecordExtension
in: query
description: '
Specifies whether to apply the Track Record Extension logic in order to extend the performance of an investment by copying the historical performance of another qualified older investment.'
schema:
type: boolean
default: false
- name: applyRestructureDate
in: query
description: '
Specifies whether to consider the Morningstar or Custom restructure date when determining the start of the performance period.
This option is applicable only when `applyEarliestCommonDate` is set to true.'
schema:
type: boolean
default: false
- name: sinceInception
in: query
description: "\nSets the time range from inception (or the maximum supported lookback) to the end date. \n\nTakes precendence over any `timePeriod` / `timePeriodUnit` and `startDate` / `endDate` settings."
required: false
schema:
type: boolean
default: false
- name: currencyId
in: query
description: Specifies the currency in which to return data.
schema:
type: string
enum:
- BASE
- AUD
- BND
- BRL
- CAD
- CHF
- CLP
- CNH
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- IDR
- ILS
- INR
- JPY
- KRW
- MOP
- MXN
- MYR
- NOK
- NZD
- PLN
- RMB
- RUB
- SEK
- SGD
- THB
- TWD
- USD
- ZAR
default: BASE
responses:
'200':
$ref: '#/components/responses/ResponseTimeSeriesSingleObservation'
'400':
$ref: '#/components/responses/ResponseStatus400'
'500':
$ref: '#/components/responses/ResponseStatus500'
operationId: getPortfolioHoldingsPortfolioUnallocatedRiskScore
components:
responses:
ResponsePortfolioHoldingsDates:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponsePortfolioHoldingsDates'
examples:
ResponsePortfolioHoldingsDatesExample1:
$ref: '#/components/examples/ResponsePortfolioHoldingsDatesExample1'
ResponsePortfolioHoldingsDatesExample2:
$ref: '#/components/examples/ResponsePortfolioHoldingsDatesExample2'
ResponseStatus500:
description: '500'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
ResponseStatus500Example1:
$ref: '#/components/examples/ResponseStatus500Example1'
ResponseTimeSeriesSingleObservation:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseTimeSeriesSingleObservation'
ResponseFullPortfolioHoldingsMonthEndOrQuarterEndMostRecent:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseFullPortfolioHoldingsMonthEndOrQuarterEndMostRecent'
examples:
ResponseFullPortfolioHoldingsMonthEndOrQuarterEndMostRecentExample1:
$ref: '#/components/examples/ResponseFullPortfolioHoldingsMonthEndOrQuarterEndMostRecentExample1'
ResponseStatus400:
description: '400'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
ResponseStatus400Example1:
$ref: '#/components/examples/ResponseStatus400Example1'
ResponseInternalServerError:
description: '500'
content:
application/json:
schema:
$ref: '#/components/schemas/OutputErrorDetails'
ResponsePortfolioHoldingsDatesBadRequest:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/OutputErrorDetails'
examples:
ResponsePortfolioHoldingsDateBadRequestExample1:
$ref: '#/components/examples/ResponsePortfolioHoldingsDatesBadRequestExample1'
ResponseBadRequest:
description: '400'
content:
application/json:
schema:
$ref: '#/components/schemas/OutputErrorDetails'
schemas:
OutputHoldings:
type: object
properties:
countryCode:
type: string
description: ''
nullable: true
detailHoldingTypeCode:
type: string
description: ''
nullable: true
globalIndustryName:
type: string
description: ''
nullable: true
localCurrencyCode:
type: string
description: ''
nullable: true
localMarketValue:
type: number
description: ''
format: double
nullable: true
portfolioWeightingPercentage:
type: number
description: ''
format: double
nullable: true
secId:
type: string
description: ''
nullable: true
secondarySectorCode:
type: string
description: ''
nullable: true
sectorCode:
type: integer
description: ''
format: int32
nullable: true
lessThan92DaysBond:
type: boolean
description: ''
nullable: true
positionMarketValue:
type: number
description: ''
format: double
nullable: true
shares:
type: number
description: ''
format: double
nullable: true
shareChange:
type: number
description: ''
format: double
nullable: true
maturityDate:
type: string
description: ''
nullable: true
couponPerc:
type: number
description: ''
format: double
nullable: true
equitySectorInd:
type: string
description: ''
nullable: true
indianCreditQuality:
type: string
description: ''
nullable: true
isin:
type: string
description: ''
nullable: true
cusip:
type: string
description: ''
nullable: true
currency:
$ref: '#/components/schemas/CodeMappingString'
detailHoldingType:
$ref: '#/components/schemas/CodeMappingString'
country:
$ref: '#/components/schemas/CodeMappingString'
paymentType:
type: string
description: ''
nullable: true
rule144aEligible:
type: boolean
description: ''
nullable: true
altMinTaxEligible:
type: boolean
description: ''
nullable: true
secondarySector:
$ref: '#/components/schemas/CodeMappingString'
lessThanOneYearBond:
type: boolean
description: ''
nullable: true
companyId:
type: string
description: ''
nullable: true
firstBoughtDate:
type: string
description: ''
nullable: true
tv:
type: string
description: ''
nullable: true
serie:
type: string
description: ''
nullable: true
emisora:
type: string
description: ''
nullable: true
holdingLocalName:
type: string
description: ''
nullable: true
stableValueContractDuration:
type: number
description: ''
format: double
nullable: true
stableValuePurchaseDate:
type: string
description: ''
nullable: true
stableValueContractType:
type: string
description: ''
nullable: true
stableValueSyntheticType:
type: string
description: ''
nullable: true
stableValueContractId:
type: string
description: ''
nullable: true
sector:
$ref: '#/components/schemas/CodeMappingString'
ticker:
type: string
description: ''
nullable: true
currencyCode:
type: string
description: ''
nullable: true
marketIdentifierCode:
type: string
description: ''
nullable: true
globalIndustryCode:
type: string
description: ''
nullable: true
costBasis:
type: string
description: ''
nullable: true
accruedInterest:
type: string
description: ''
nullable: true
holdingStorageId:
type: string
description: ''
nullable: true
securityName:
type: string
description: ''
nullable: true
additionalProperties: false
title: OutputHoldings
description: All fields are nullable. Empty or `null` value fields are not returned.
OutputInvestmentSingleObservation:
title: OutputInvestmentSingleObservation
type: object
additionalProperties: false
properties:
identifiers:
$ref: '#/components/schemas/OutputIdentifiers_2'
timeSeries:
$ref: '#/components/schemas/OutputTimeSeriesSingleObservation'
metadata:
$ref: '#/components/schemas/OutputInvestmentsMetadata'
OutputMetadataMessageInvestment:
title: OutputMetadataMessageInvestment
type: object
additionalProperties: false
properties:
id:
type: string
description: Indicates identifier value passed in request.
example: 0P000PPP6Q
readOnly: true
idType:
type: string
description: Indicates the identifier type passed in request.
example: performanceId
readOnly: true
ResponseFullPortfolioHoldingsMonthEndOrQuarterEndMostRecent:
type: object
properties:
holdings:
type: array
items:
$ref: '#/components/schemas/OutputHoldings'
identifiers:
$ref: '#/components/schemas/OutputIdentifiers'
metadata:
$ref: '#/components/schemas/OutputMetadata'
OutputInvestmentsMetadata:
title: OutputInvestmentsMetadata
description: Provides the identifier look up details passed in request.
type: object
additionalProperties: false
properties:
exchangeCountry:
type: string
example: GBR
default: USA
description: Indicates exchange country used to look up investment. Represented by 3-character ISO 3166-1 country codes.
minLength: 3
maxLength: 3
domicile:
type: string
example: GBR
default: USA
description: Indicates domicile used to look up investment. Represented by 3-character ISO 3166-1 country codes.
minLength: 3
maxLength: 3
baseCurrency:
type: string
example: GBP
default: USD
description: Indicates base currency used to look up investment. Represented by 3-character ISO 4217 currency codes.
minLength: 3
maxLength: 3
DataModelSingleObservation:
title: DataModelSingleObservation
description: Represents a time series of single observations, where each entry contains a date and its corresponding value.
type: object
properties:
date:
type: string
format: date
example: '2025-09-06'
value:
type: number
example: 1.108
OutputPortfolioHoldingsDates:
type: object
properties:
portfolioDate:
type: string
description: Portfolio date in YYYY-MM-DD format
nullable: true
holdingsView:
type: string
description: Holdings view identifier
nullable: true
additionalProperties: false
description: Portfolio date information
title: OutputPortfolioHoldingsDates
ErrorResponse:
title: ErrorResponse
description: Defines the structure of an error response returned when a bad or invalid request is submitted. Includes the HTTP status code, descriptive message, and request identifier for traceability.
type: object
properties:
statusCode:
description: Numeric HTTP status code associated with the error.
type: integer
format: int32
example: 400
readOnly: true
errorCode:
description: Identifier for a specific type of error.
type: string
example: 400.timeSeries.009
readOnly: true
message:
type: string
description: Descriptive message providing details about the error or validation failure.
example: Invalid frequency 'm' for datapoint 'daily-closing-price'.
readOnly: true
requestId:
description: Indicates unique request identifier.
example: c63e7f6c-b52d-42c3-9d1b-4a4b4ac05f3c
readOnly: true
type: string
additionalProperties: false
OutputErrorDetails:
type: object
properties:
statusCode:
type: integer
description: Status Code
format: int32
errorCode:
type: string
description: Custom error code
nullable: true
message:
type: string
description: Message
nullable: true
requestId:
type: string
description: RequestId
nullable: true
additionalProperties: false
description: Error details
title: OutputErrorDetails
OutputIdentifiers:
type: object
properties:
performanceId:
type: string
nullable: true
securityId:
type: string
nullable: true
cusip:
type: string
nullable: true
isin:
type: string
nullable: true
sedol:
type: string
nullable: true
tradingSymbol:
type: string
nullable: true
fundCode:
type: string
nullable: true
msid:
type: string
nullable: true
ticker:
type: string
nullable: true
additionalProperties: false
title: OutputIdentifiers
description: All fields are nullable. Empty or `null` value fields are not returned.
OutputMetadata_2:
description: Metadata returned in response. Includes information about identifiers for which no results were found.
title: OutputMetadata
type: object
properties:
messages:
$ref: '#/components/schemas/OutputMetadataMessages_2'
requestId:
description: Indicates the request identifier.
example: c63e7f6c-b52d-42c3-9d1b-4a4b4ac05f3c
type: string
readOnly: true
time:
description: Indicates time response was returned.
example: '2025-10-02T10:54:36.9161062Z'
type: string
format: date-time
readOnly: true
additionalProperties: false
OutputMetadataMessages_2:
description: Provides information about identifiers for which no results were returned.
title: OutputMetadataMessages
type: object
additionalProperties: false
properties:
investments:
description: Indicates identifiers for which no results were returned.
type: array
items:
$ref: '#/components/schemas/OutputMetadataMessageInvestment'
type:
type: string
description: Indicates the message type.
example: Warning
readOnly: true
const: Warning
message:
type: string
description: Description of the issue encountered.
example: 'Lookup : Invalid investments.'
readOnly: true
code:
type: string
description: Code associated with the message.
example: 404.common.125
readOnly: true
OutputMetadataMessages:
type: object
properties:
type:
type: string
nullable: true
code:
type: string
nullable: true
investments:
type: array
items:
$ref: '#/components/schemas/OutputInvalidInvestments'
nullable: true
message:
type: string
nullable: true
additionalProperties: false
title: OutputMetadataMessages
description: All fields are nullable. Empty or `null` value fields are not returned.
OutputInvalidInvestments:
type: object
properties:
id:
type: string
nullable: true
idType:
type: string
nullable: true
status:
type: string
nullable: true
datapointId:
type: array
items:
type: string
nullable: true
errorCode:
type: string
nullable: true
performanceId:
type: string
description: Performance ID (if not passed in request).
nullable: true
companyId:
type: string
description: Company ID (if not passed in request).
nullable: true
baseCurrency:
type: string
description: Input base currency used to look up Investment identifier
nullable: true
domicile:
type: string
description: Input domicile used to look up Investment identifier.
nullable: true
exchangeCountry:
type: string
description: Input exchange country used to look up Investment identifier.
nullable: true
exchangeId:
type: string
description: Input exchange id used to look up Investment identifier.
nullable: true
additionalProperties: false
title: OutputInvalidInvestments
description: All fields are nullable. Empty or `null` value fields are not returned.
OutputIdentifiers_2:
title: OutputIdentifiers
description: Specifies the identifier type used to specify the target investment in the request.
additionalProperties: false
properties:
performanceId:
type: string
example: 0P00002CI5
isin:
type: string
example: US2562191062
securityId:
type: string
example: FCUSA0000P
cusip:
type: string
example: 459200101
sedol:
type: string
example: B4TT7L5
tradingSymbol:
type: string
example: MDLOX
ResponseTimeSeriesSingleObservation:
title: ResponseTimeSeriesSingleObservation
readOnly: true
description: List of investments for which time series data was returned.
type: object
additionalProperties: false
properties:
investments:
type: array
minItems: 1
items:
$ref: '#/components/schemas/OutputInvestmentSingleObservation'
metadata:
$ref: '#/components/schemas/OutputMetadata_2'
CodeMappingString:
type: object
properties:
value:
type: string
nullable: true
code:
type: string
nullable: true
additionalProperties: false
title: CodeMappingString
OutputTimeSeriesSingleObservation:
title: OutputTimeSeriesSingleObservation
type: object
description: A named time series with dated data points.
additionalProperties: false
properties:
categories:
type: array
description: Semantic tags/labels for this series.
items:
$ref: '#/components/schemas/OutputCategory'
dataPoint:
description: Data point time series relates to.
type: string
example: daily-price
enum:
- 12-mo-yield
- 7-day-gross-yield
- 7-day-unsubsidized-yield
- 7-day-yield
- absolute-carbon-emissions-scope-1-and-2-tonnes
- absolute-carbon-emissions-scope-1-and-2-tonnes-category-average
- absolute-carbon-intensity-scope-1-and-2-tonnes-per-usd-millions
- absolute-carbon-intensity-scope-1-and-2-tonnes-per-usd-millions-category-average
- accounting-fee
- administrator-fee
- advisor-fee
- aggregated-12-month-yield
- aggregated-sec-yield
- annual-ongoing-charge-excluding-performance-fee
- annual-ongoing-charge-including-performance-fee
- annual-report-adjusted-expense-ratio
- annual-report-management-expense-ratio-mer
- annual-report-ongoing-charge
- borrowing-costs-actual
- borrowing-costs-estimated
- carbon-footprint-scope-1-and-2-and-3-tonnes-per-usd-millions
- carbon-footprint-scope-1-and-2-and-3-tonnes-per-usd-millions-category-average
- carbon-footprint-scope-1-and-2-eligible-holding-type
- carbon-footprint-scope-1-and-2-number-of-holdings-covered
- carbon-footprint-scope-1-and-2-percentage-of-eligible-portfolio-covered
- carbon-footprint-scope-1-and-2-percentage-of-eligible-portfolio-not-covered
- carbon-footprint-scope-1-and-2-percentage-of-portfolio-covered
- carbon-footprint-scope-1-and-2-percentage-of-portfolio-eligible
- carbon-footprint-scope-1-and-2-percentage-of-portfolio-eligible-not-covered
- carbon-footprint-scope-1-and-2-percentage-of-portfolio-not-covered
- carbon-footprint-scope-1-and-2-percentage-of-portfolio-not-eligible
- carbon-footprint-scope-1-and-2-tonnes-per-aud-million-category-average
- carbon-footprint-scope-1-and-2-tonnes-per-aud-millions
- carbon-footprint-scope-1-and-2-tonnes-per-chf-million-category-average
- carbon-footprint-scope-1-and-2-tonnes-per-chf-millions
- carbon-footprint-scope-1-and-2-tonnes-per-eur-million-category-average
- carbon-footprint-scope-1-and-2-tonnes-per-eur-millions
- carbon-footprint-scope-1-and-2-tonnes-per-gbp-million-category-average
- carbon-footprint-scope-1-and-2-tonnes-per-gbp-millions
- carbon-footprint-scope-1-and-2-tonnes-per-hkd-million-category-average
- carbon-footprint-scope-1-and-2-tonnes-per-hkd-millions
- carbon-footprint-scope-1-and-2-tonnes-per-sgd-million-category-average
- carbon-footprint-scope-1-and-2-tonnes-per-sgd-millions
- carbon-footprint-scope-1-and-2-tonnes-per-usd-millions
- carbon-footprint-scope-1-and-2-tonnes-per-usd-millions-category-average
- carbon-risk-level-classification
- carbon-risk-score-category-average
- carbon-risk-score-percent-rank-in-category
- cum-fair-nav-unweighted-dri
- cum-fair-nav-weighted-dri
- current-yield
- cumulative-return
- daily-closing-price
- daily-estimated-holding-cost
- daily-gross-return-index
- daily-high-price
- daily-load-adj-return-index-restated
- daily-low-price
- daily-market-impact-cost
- daily-market-return-index
- daily-net-return-index
- daily-portfolio-concentration
- daily-price
- daily-return-index
- daily-return-index-cum-fair
- daily-tracking-volatility
- daily-volume
- daily-yield
- distribution-fee-percentage-of-nav-actual
- distribution-fee-percentage-of-nav-estimated
- dividend-amount-history
- dividend-yield-12-month
- dividend-yield-long
- dividend-yield-short
- entry-cost-acquired-actual
- equity-mkt-cap-rescaling-factor-long
- estimated-quarterly-return
- estimated-share-class-net-flow-daily
- estimated-share-class-net-flow-monthly
- ex-par-nav-unweighted-dri
- ex-par-nav-weighted-dri
- growth
- five-year-five-star-rating-percent
- five-year-four-star-rating-percent
- five-year-not-star-rated-percent
- five-year-not-star-rating-eligible-percent
- five-year-one-star-rating-percent
- five-year-three-star-rating-percent
- five-year-two-star-rating-percent
- historical-carbon-risk-score
- historical-corporate-esg-risk-score
- historical-sovereign-esg-risk-score
- income-only-yield-nav-uk
- income-only-yield-nav-us
- income-only-yield-price-us
- indirect-costs-closed-ended-actual-uk
- indirect-costs-closed-ended-estimated-uk
- indirect-costs-open-ended-actual-uk
- indirect-costs-open-ended-estimated-uk
- management-fee-ex-distribution-fees-actual
- management-fee-ex-distribution-fees-estimated
- market-cap-giant-percentage-long-rescaled
- market-cap-large-percentage-long-rescaled
- market-cap-micro-percentage-long-rescaled
- market-cap-mid-percentage-long-rescaled
- market-cap-small-percentage-long-rescaled
- maximum-entry-cost-acquired
- maximum-entry-cost-base-currency
- maximum-entry-cost-percentage
- maximum-exit-cost-acquired
- maximum-exit-fee-base-currency
- maximum-exit-fee-percentage
- model-representative-cost
- monthly-downside-tracking-error
- monthly-gross-return
- monthly-inflation-adjusted-return
- monthly-load-adj-return-restated
- monthly-market-return
- monthly-net-return
- monthly-return
- monthly-return-unweighted-nav
- monthly-return-unweighted-price
- monthly-return-weighted-nav
- monthly-return-weighted-price
- monthly-tracking-error
- monthly-yield
- morningstar-esg-risk-rating-for-funds
- morningstar-medalist-rating
- morningstar-medalist-rating-parent-pillar
- morningstar-medalist-rating-parent-pillar-type
- morningstar-medalist-rating-people-pillar
- morningstar-medalist-rating-people-pillar-type
- morningstar-medalist-rating-performance-pillar
- morningstar-medalist-rating-performance-pillar-type
- morningstar-medalist-rating-price-pillar
- morningstar-medalist-rating-price-pillar-type
- morningstar-medalist-rating-process-pillar
- morningstar-medalist-rating-process-pillar-type
- morningstar-medalist-rating-type
- morningstar-rating-overall
- nav-unweighted-daily-income-and-capital-gain-yield
- nav-unweighted-daily-income-only-yield
- nav-unweighted-daily-total-distribution-yield
- nav-unweighted-dri
- nav-weighted-daily-income-and-capital-gain-yield
- nav-weighted-daily-income-only-yield
- nav-weighted-daily-total-distribution-yield
- nav-weighted-dri
- ongoing-charge-ex-perf-fee
- ongoing-charge-inc-perf-fee
- ongoing-cost-actual
- ongoing-cost-estimated
- other-fee
- other-fee-amount-cn
- overall-five-star-rating-percent
- overall-four-star-rating-percent
- overall-not-star-rated-percent
- overall-not-star-rating-eligible-percent
- overall-one-star-rating-percent
- overall-three-star-rating-percent
- overall-two-star-rating-percent
- performance-fee-actual
- performance-fee-estimated
- portfolio-carbon-risk-score
- portfolio-corporate-esg-risk-rating
- portfolio-corporate-esg-risk-score
- portfolio-environmental-risk-score
- portfolio-governance-risk-score
- portfolio-social-risk-score
- portfolio-sovereign-esg-risk-rating
- portfolio-sovereign-esg-risk-score
- portfolio-unallocated-risk-score
- price
- price-unweighted-daily-income-and-capital-gain-yield
- price-unweighted-daily-income-only-yield
- price-unweighted-daily-total-distribution-yield
- price-unweighted-dri
- price-weighted-daily-income-and-capital-gain-yield
- price-weighted-daily-income-only-yield
- price-weighted-daily-total-distribution-yield
- price-weighted-dri
- prospective-acquired-fund-expense
- prospectus-adjusted-expense-ratio
- quarterly-downside-tracking-error
- quarterly-gross-return
- quarterly-inflation-adjusted-return
- quarterly-load-adj-return-restated
- quarterly-market-return
- quarterly-net-return
- quarterly-return
- quarterly-tracking-error
- quoted-yield-daily
- rating-10-yr
- rating-3-yr
- rating-5-yr
- raw-return-cum-fair
- raw-return-market-price
- raw-return-nav
- real-assets-costs-actual-uk
- real-assets-costs-estimated-uk
- return
- rolling-return
- sec-yield
- sec-yield-rescaling-factor
- sitca-yield
- sri-value
- ten-year-five-star-rating-percent
- ten-year-four-star-rating-percent
- ten-year-not-star-rated-percent
- ten-year-not-star-rating-eligible-percent
- ten-year-one-star-rating-percent
- ten-year-three-star-rating-percent
- ten-year-two-star-rating-percent
- three-year-five-star-rating-percent
- three-year-four-star-rating-percent
- three-year-not-star-rated-percent
- three-year-not-star-rating-eligible-percent
- three-year-one-star-rating-percent
- three-year-three-star-rating-percent
- three-year-two-star-rating-percent
- total-expense-survey
- trading-expense
- transaction-costs-actual-uk
- transaction-costs-estimated-uk
- transaction-fee-actual
- transaction-fee-estimated
- turnover-ratio-percentage
- typical-exit-cost
- unannualized
- weekly-return
- yearly-capital-return
- yearly-gross-return
- yearly-income-return
- yearly-inflation-adjusted-return
- yearly-interest-income
- yearly-investor-return
- yearly-load-adj-return-restated
- yearly-market-return
- yearly-net-return
- yearly-return
performanceType:
type: string
description: Indicates the performance type used for the time series.
enum:
- total
- market
- gross
data:
type: array
items:
$ref: '#/components/schemas/DataModelSingleObservation'
ResponsePortfolioHoldingsDates:
type: object
properties:
portfolioDates:
type: array
items:
$ref: '#/components/schemas/OutputPortfolioHoldingsDates'
description: List of available portfolio dates
nullable: true
identifiers:
$ref: '#/components/schemas/OutputIdentifiers'
metadata:
$ref: '#/components/schemas/OutputMetadata'
additionalProperties: false
description: Response model for portfolio holdings dates endpoint
title: ResponsePortfolioHoldingsDates
OutputCategory:
title: OutputCategory
type: string
description: Identifies the thematic category or functional area a data point belongs to within the Time Series API.
enum:
- fees-expenses
- corporate-actions
- fund-sustainability
- fund-research
- performance
- portfolio-analytics
- portfolio-holdings
- reference
RequestPortfolioHoldingsDates:
type: object
properties:
holdingsView:
type: string
description: Holdings view to retrieve. Allowed values are `10`, `25`, or `full`.
nullable: true
enum:
- '10'
- '25'
- full
type:
type: string
description: Type of portfolio dates to retrieve. Allowed values are `mostRecent`, `timeSeries`, or `staticDates`.
nullable: true
enum:
- mostRecent
- timeSeries
- staticDates
frequency:
type: string
description: Frequency used when `type` is `timeSeries`. Allowed values are `d` (daily) or `m` (monthly).
nullable: true
enum:
- d
- m
startDate:
type: string
description: Start date in `YYYY-MM-DD` format. Required when `type` is `timeSeries`.
nullable: true
endDate:
type: string
description: End date in `YYYY-MM-DD` format. Required when `type` is `timeSeries`.
nullable: true
dates:
type: array
items:
type: string
minItems: 1
maxItems: 10
description: Array of dates in `YYYY-MM-DD` format. Required when `type` is `staticDates`. Maximum of 10 dates accepted.
nullable: true
idType:
type: string
description: Type of identifier provided in the `id` field.
default: performanceId
nullable: true
enum:
- performanceId
- securityId
- cusip
- isin
- sedol
- tradingSymbol
- fundCode
- msid
- ticker
baseCurrency:
type: string
description: Base currency used to resolve the investment identifier.
nullable: true
domicile:
type: string
description: Domicile used to resolve the investment identifier.
nullable: true
exchangeCountry:
type: string
description: Exchange country used to resolve the investment identifier.
nullable: true
exchangeId:
type: string
description: Exchange identifier used to resolve the investment identifier.
nullable: true
additionalProperties: false
description: Request model for portfolio holdings dates endpoint
required:
- holdingsView
- type
title: RequestPortfolioHoldingsDates
OutputMetadata:
type: object
properties:
requestId:
type: string
nullable: true
time:
type: string
format: date-time
readOnly: true
portfolioDate:
type: string
nullable: true
portfolioCurrency:
type: string
nullable: true
messages:
type: array
items:
$ref: '#/components/schemas/OutputMetadataMessages'
nullable: true
additionalProperties: false
title: OutputMetadata
description: All fields are nullable. Empty or `null` value fields are not returned.
examples:
RequestPortfolioHoldingsDatesExample4:
summary: 'Date Type: Static Dates'
value:
holdingsView: '10'
type: staticDates
dates:
- '2024-06-30'
- '2024-12-31'
- '2023-12-31'
- '2023-06-30'
- '2016-12-31'
- '2018-12-31'
- '2019-06-30'
- '2013-06-30'
RequestPortfolioHoldingsDatesExample3:
summary: 'Date Type: Time Series and Frequency'
value:
holdingsView: '10'
type: timeSeries
startDate: '2014-06-30'
endDate: '2024-06-30'
frequency: m
ResponsePortfolioHoldingsDatesExample1:
summary: Top 10 Most Recent
value:
portfolioDates:
- portfolioDate: '2025-12-31'
holdingsView: '10'
identifiers:
performanceId: 0P00018P7K
metadata:
requestId: 3a11f005-394f-4f89-a17f-41d2ffe549f3
time: '2026-06-17T17:28:34.6382675Z'
ResponsePortfolioHoldingsDatesExample2:
summary: Top 10 Time Series
value:
portfolioDates:
- portfolioDate: '2025-06-30'
holdingsView: '10'
- portfolioDate: '2024-12-31'
holdingsView: '10'
- portfolioDate: '2024-06-30'
holdingsView: '10'
- portfolioDate: '2023-12-31'
holdingsView: '10'
- portfolioDate: '2023-06-30'
holdingsView: '10'
- portfolioDate: '2022-12-31'
holdingsView: '10'
- portfolioDate: '2022-06-30'
holdingsView: '10'
- portfolioDate: '2021-12-31'
holdingsView: '10'
- portfolioDate: '2021-06-30'
holdingsView: '10'
- portfolioDate: '2020-12-31'
holdingsView: '10'
- portfolioDate: '2020-06-30'
holdingsView: '10'
- portfolioDate: '2019-12-31'
holdingsView: '10'
- portfolioDate: '2019-06-30'
holdingsView: '10'
- portfolioDate: '2018-12-31'
holdingsView: '10'
- portfolioDate: '2016-12-31'
holdingsView: '10'
identifiers:
performanceId: 0P00018P7K
metadata:
requestId: d50bc56a-bf63-440e-b6b1-ffc7d14c0ca3
time: '2026-06-17T17:36:52.137352Z'
ResponsePortfolioHoldingsDatesBadRequestExample1:
summary: Required Parameter Missing
value:
statusCode: 400
errorCode: 400.investmentDetails.001
message: The EndDate parameter is required.
requestId: cd8d3278-a273-4765-87aa-e0beff1f2975
ResponseFullPortfolioHoldingsMonthEndOrQuarterEndMostRecentExample1:
summary: Full Portfolio Holdings Month End Or Quarter End Most Recent
value:
holdings:
- detailHoldingTypeCode: SQ
portfolioWeightingPercentage: -2.33685
positionMarketValue: -6417940
shares: 12341
shareChange: -390
maturityDate: '2049-12-31'
couponPerc: 0
detailHoldingType:
value: EQUITY INDEX SWAP
code: SQ
holdingStorageId: '543'
securityName: Portfolio Swap Dj Thematic Neutral Anti-Beta (U
- countryCode: USA
detailHoldingTypeCode: E
portfolioWeightingPercentage: -1.54163
secId: 0P0001FDGE
sectorCode: 311
positionMarketValue: -4233934
shares: 10059
shareChange: -315
isin: US24703L2025
cusip: 24703L202
currency:
value: US Dollar
code: USD
detailHoldingType:
value: EQUITY
code: E
country:
value: United States
code: USA
sector:
value: Technology
code: '311'
ticker: DELL
currencyCode: USD
globalIndustryCode: '31120020'
holdingStorageId: '148'
securityName: Dell Technologies Inc Ordinary Shares - Class C
- countryCode: USA
detailHoldingTypeCode: E
portfolioWeightingPercentage: -1.14413
secId: 0P000003H5
sectorCode: 311
positionMarketValue: -3142240
shares: 15328
shareChange: -480
isin: US5738741041
cusip: '573874104'
currency:
value: US Dollar
code: USD
detailHoldingType:
value: EQUITY
code: E
country:
value: United States
code: USA
sector:
value: Technology
code: '311'
ticker: MRVL
currencyCode: USD
globalIndustryCode: '31130020'
holdingStorageId: '295'
securityName: Marvell Technology Inc
- countryCode: USA
detailHoldingTypeCode: E
portfolioWeightingPercentage: -1.13613
secId: 0P0001SG1A
sectorCode: 311
positionMarketValue: -3120278
shares: 9101
shareChange: -285
isin: US04626A1034
cusip: 04626A103
currency:
value: US Dollar
code: USD
detailHoldingType:
value: EQUITY
code: E
country:
value: United States
code: USA
sector:
value: Technology
code: '311'
ticker: ALAB
currencyCode: USD
globalIndustryCode: '31130020'
holdingStorageId: '45'
securityName: Astera Labs Inc
- countryCode: USA
detailHoldingTypeCode: E
portfolioWeightingPercentage: -1.01611
secId: 0P000003MC
sectorCode: 311
positionMarketValue: -2790654
shares: 2874
shareChange: -90
isin: US5951121038
cusip: '595112103'
currency:
value: US Dollar
code: USD
detailHoldingType:
value: EQUITY
code: E
country:
value: United States
code: USA
sector:
value: Technology
code: '311'
ticker: MU
currencyCode: USD
globalIndustryCode: '31130020'
holdingStorageId: '305'
securityName: Micron Technology Inc
- countryCode: USA
detailHoldingTypeCode: E
portfolioWeightingPercentage: -0.92067
secId: 0P000004VE
sectorCode: 311
positionMarketValue: -2528545
shares: 2874
shareChange: -90
isin: IE00BKVD2N49
cusip: G7997R103
currency:
value: US Dollar
code: USD
detailHoldingType:
value: EQUITY
code: E
country:
value: United States
code: USA
sector:
value: Technology
code: '311'
ticker: STX
currencyCode: USD
globalIndustryCode: '31120020'
holdingStorageId: '527'
securityName: Seagate Technology Holdings PLC
identifiers:
performanceId: 0P0000TLDN
metadata:
requestId: 442d1dc2-2d16-4461-8d95-94e28a4d97cc
time: '2026-06-15T14:40:44.4183931Z'
portfolioDate: '2026-05-29'
portfolioCurrency: USD
ResponseStatus400Example1:
summary: 400 - Bad Request
value:
statusCode: 400
errorCode: 400.investmentDetails.002
message: Invalid date format. Expected format is yyyy-MM-d
requestId: 539d62a5-3586-4070-965e-0f7f64712d79
RequestPortfolioHoldingsDatesExample2:
summary: 'Date Type: Time Series'
value:
holdingsView: '10'
type: timeSeries
startDate: '2014-06-30'
endDate: '2024-06-30'
ResponseStatus500Example1:
summary: 500 - Internal Server Error
value:
statusCode: 500
errorCode: 500.investmentDetails.003
message: Error calling Investment API.
requestId: 539d62a5-3586-4070-965e-0f7f64712d79
RequestPortfolioHoldingsDatesExample1:
summary: 'Date Type: Most Recent'
value:
holdingsView: full
type: mostRecent
requestBodies:
RequestPortfolioHoldingsDates:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RequestPortfolioHoldingsDates'
examples:
RequestPortfolioHoldingsDatesExample1:
$ref: '#/components/examples/RequestPortfolioHoldingsDatesExample1'
RequestPortfolioHoldingsDatesExample2:
$ref: '#/components/examples/RequestPortfolioHoldingsDatesExample2'
RequestPortfolioHoldingsDatesExample3:
$ref: '#/components/examples/RequestPortfolioHoldingsDatesExample3'
RequestPortfolioHoldingsDatesExample4:
$ref: '#/components/examples/RequestPortfolioHoldingsDatesExample4'
securitySchemes:
BasicAuth:
type: http
scheme: basic