openapi: 3.0.1 info: version: 1.0.0 title: Authorization Tokens Accounts Analyst Normalized Financials 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: Analyst Normalized Financials paths: /direct-web-services/v1/investments/{id}/equity-analyst-normalized-financial-statements: get: summary: Get Analyst Normalized Financial Statements Per Share view parameters: - name: id in: path description: "\nSpecifies the investment to query. \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: reportType in: query required: true schema: enum: - a - r - d - b - tb - p - ta - td - tr - tp type: string x-enumDescriptions: a: Value as originally reported in a formal document. p: Value reported in a preliminary announcement of results prior to a formal document. r: Restated value reported in a formal document. d: Restated value reported in a preliminary announcement of results prior to a formal document. b: 'Best known value chosen from the available report types: A, P, R, D.' ta: Calculated Trailing 12 months of as originally reported values in a formal document. tp: Calculated Trailing 12 months of values reported in a preliminary announcement of results prior to a formal document. tr: Calculated Trailing 12 months of restated values reported in a formal document. td: Calculated Trailing 12 months of restated values reported in a preliminary announcement of results prior to a formal document. tb: 'Calculated Trailing 12 months of ''best known'' value chosen from the available report types: A, P, R, D.' description: "\nFilters results by report type. Must be used together with `period`.\n\n - `a` = Value as originally reported in a formal document.\n\n - `p` = Value reported in a preliminary announcement of results prior to a formal document.\n\n - `r` = Restated value reported in a formal document.\n\n - `d` = Restated value reported in a preliminary announcement of results prior to a formal document.\n\n - `b` = Best known value chosen from the available report types: A, P, R, D.\n\n - `ta` = Calculated Trailing 12 months of as originally reported values in a formal document.\n\n - `tp` = Calculated Trailing 12 months of values reported in a preliminary announcement of results prior to a formal document.\n\n - `tr` = Calculated Trailing 12 months of restated values reported in a formal document.\n\n - `td` = Calculated Trailing 12 months of restated values reported in a preliminary announcement of results prior to a formal document.\n\n - `tb` = Calculated Trailing 12 months of ‘best known’ value chosen from the available report types: A, P, R, D." examples: reportTypeExample1: summary: As originally reported value: a reportTypeExample2: summary: Preliminary announcement value: p reportTypeExample3: summary: Restated (formal document) value: r reportTypeExample4: summary: Restated (preliminary announcement) value: d reportTypeExample5: summary: Best known value: b reportTypeExample6: summary: Trailing 12 months, as originally reported value: ta reportTypeExample7: summary: Trailing 12 months, preliminary value: tp reportTypeExample8: summary: Trailing 12 months, restated (formal) value: tr reportTypeExample9: summary: Trailing 12 months, restated (preliminary) value: td reportTypeExample10: summary: Trailing 12 months, best known value: tb - name: period in: query required: true schema: enum: - sa2 - q1 - sa1 - a - q2 - q3 - q4 - q6 - q9 - ir type: string x-enumDescriptions: a: 'Annual (full fiscal year). Example: 1 January to 31 December' sa1: 'First semi-annual. Example: 1 January to 30 June' sa2: 'Second semi-annual. Example: 1 July to 31 December' q1: 'First quarter. Example: 1 January to 31 March' q2: 'Second quarter. Example: 1 April to 30 June' q3: 'Third quarter. Example: 1 July to 30 September' q4: 'Fourth quarter. Example: 1 October to 31 December' q6: 'Cumulative six-month period to the end of Q2. Example: 1 January to 30 June' q9: 'Cumulative nine-month period to the end of Q3. Example: 1 January to 30 September' ir: Irregular report. No standardized date range description: ' Filters results by the duration period of financial statements reported by the company. Must be used together with `reportType`. - `a` = Annual (full fiscal year). Example: 1 January to 31 December - `sa1` = First semi-annual. Example: 1 January to 30 June - `sa2` = Second semi-annual. Example: 1 July to 31 December - `q1` = First quarter. Example: 1 January to 31 March - `q2` = Second quarter. Example: 1 April to 30 June - `q3` = Third quarter. Example: 1 July to 30 September - `q4` = Fourth quarter. Example: 1 October to 31 December - `q6` = Cumulative six-month period to the end of Q2. Example: 1 January to 30 June - `q9` = Cumulative nine-month period to the end of Q3. Example: 1 January to 30 September - `ir` = Irregular report. No standardized date range' examples: periodExample1: summary: Annual (full fiscal year) value: a periodExample2: summary: First semi-annual value: sa1 periodExample3: summary: Second semi-annual value: sa2 periodExample4: summary: First quarter value: q1 periodExample5: summary: Second quarter value: q2 periodExample6: summary: Third quarter value: q3 periodExample7: summary: Fourth quarter value: q4 periodExample8: summary: Cumulative six-month period (to end of Q2) value: q6 periodExample9: summary: Cumulative nine-month period (to end of Q3) value: q9 periodExample10: summary: Irregular report value: ir - name: numberOfMonths in: query schema: enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' type: string - name: startDate in: query schema: type: string format: yyyy-MM-dd description: Time series start date. Accepts `yyyy-MM-dd`. examples: startDateExample1: summary: Example 1 value: '2025-06-01' startDateExample2: summary: Example 2 value: '2025-06-30' - name: endDate in: query schema: type: string format: yyyy-MM-dd description: Time series end date. Accepts `yyyy-MM-dd`. examples: endDateExample1: summary: Example 1 value: '2025-12-01' endDateExample2: summary: Example 2 value: '2025-12-31' - name: viewType in: query required: true schema: enum: - dataset - package type: string description: Most recent and time series data supported. operationId: getEquityAnalystNormalizedFinancialStatementsDataset tags: - Analyst Normalized Financials responses: '200': $ref: '#/components/responses/ResponseEquityAnalystNormalizedFinancialStatements' '400': $ref: '#/components/responses/ResponseBadRequest' '500': $ref: '#/components/responses/ResponseInternalServerError' x-cpqId: 944 /direct-web-services/v1/investments/{id}/equity-analyst-normalized-financial-statements-per-share: get: summary: Get Analyst Normalized Financials view parameters: - name: id in: path description: "\nSpecifies the investment to query. \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: reportType in: query required: true schema: enum: - a - r - d - b - tb - p - ta - td - tr - tp type: string x-enumDescriptions: a: Value as originally reported in a formal document. p: Value reported in a preliminary announcement of results prior to a formal document. r: Restated value reported in a formal document. d: Restated value reported in a preliminary announcement of results prior to a formal document. b: 'Best known value chosen from the available report types: A, P, R, D.' ta: Calculated Trailing 12 months of as originally reported values in a formal document. tp: Calculated Trailing 12 months of values reported in a preliminary announcement of results prior to a formal document. tr: Calculated Trailing 12 months of restated values reported in a formal document. td: Calculated Trailing 12 months of restated values reported in a preliminary announcement of results prior to a formal document. tb: 'Calculated Trailing 12 months of ''best known'' value chosen from the available report types: A, P, R, D.' description: "\nFilters results by report type. Must be used together with `period`.\n\n - `a` = Value as originally reported in a formal document.\n\n - `p` = Value reported in a preliminary announcement of results prior to a formal document.\n\n - `r` = Restated value reported in a formal document.\n\n - `d` = Restated value reported in a preliminary announcement of results prior to a formal document.\n\n - `b` = Best known value chosen from the available report types: A, P, R, D.\n\n - `ta` = Calculated Trailing 12 months of as originally reported values in a formal document.\n\n - `tp` = Calculated Trailing 12 months of values reported in a preliminary announcement of results prior to a formal document.\n\n - `tr` = Calculated Trailing 12 months of restated values reported in a formal document.\n\n - `td` = Calculated Trailing 12 months of restated values reported in a preliminary announcement of results prior to a formal document.\n\n - `tb` = Calculated Trailing 12 months of ‘best known’ value chosen from the available report types: A, P, R, D." examples: reportTypeExample1: summary: As originally reported value: a reportTypeExample2: summary: Preliminary announcement value: p reportTypeExample3: summary: Restated (formal document) value: r reportTypeExample4: summary: Restated (preliminary announcement) value: d reportTypeExample5: summary: Best known value: b reportTypeExample6: summary: Trailing 12 months, as originally reported value: ta reportTypeExample7: summary: Trailing 12 months, preliminary value: tp reportTypeExample8: summary: Trailing 12 months, restated (formal) value: tr reportTypeExample9: summary: Trailing 12 months, restated (preliminary) value: td reportTypeExample10: summary: Trailing 12 months, best known value: tb - name: period in: query required: true schema: enum: - sa2 - q1 - sa1 - a - q2 - q3 - q4 - q6 - q9 - ir type: string x-enumDescriptions: a: 'Annual (full fiscal year). Example: 1 January to 31 December' sa1: 'First semi-annual. Example: 1 January to 30 June' sa2: 'Second semi-annual. Example: 1 July to 31 December' q1: 'First quarter. Example: 1 January to 31 March' q2: 'Second quarter. Example: 1 April to 30 June' q3: 'Third quarter. Example: 1 July to 30 September' q4: 'Fourth quarter. Example: 1 October to 31 December' q6: 'Cumulative six-month period to the end of Q2. Example: 1 January to 30 June' q9: 'Cumulative nine-month period to the end of Q3. Example: 1 January to 30 September' ir: Irregular report. No standardized date range description: ' Filters results by the duration period of financial statements reported by the company. Must be used together with `reportType`. - `a` = Annual (full fiscal year). Example: 1 January to 31 December - `sa1` = First semi-annual. Example: 1 January to 30 June - `sa2` = Second semi-annual. Example: 1 July to 31 December - `q1` = First quarter. Example: 1 January to 31 March - `q2` = Second quarter. Example: 1 April to 30 June - `q3` = Third quarter. Example: 1 July to 30 September - `q4` = Fourth quarter. Example: 1 October to 31 December - `q6` = Cumulative six-month period to the end of Q2. Example: 1 January to 30 June - `q9` = Cumulative nine-month period to the end of Q3. Example: 1 January to 30 September - `ir` = Irregular report. No standardized date range' examples: periodExample1: summary: Annual (full fiscal year) value: a periodExample2: summary: First semi-annual value: sa1 periodExample3: summary: Second semi-annual value: sa2 periodExample4: summary: First quarter value: q1 periodExample5: summary: Second quarter value: q2 periodExample6: summary: Third quarter value: q3 periodExample7: summary: Fourth quarter value: q4 periodExample8: summary: Cumulative six-month period (to end of Q2) value: q6 periodExample9: summary: Cumulative nine-month period (to end of Q3) value: q9 periodExample10: summary: Irregular report value: ir - name: numberOfMonths in: query schema: enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' type: string - name: startDate in: query schema: type: string format: yyyy-MM-dd description: Time series start date. Accepts `yyyy-MM-dd`. examples: startDateExample1: summary: Example 1 value: '2025-06-01' startDateExample2: summary: Example 2 value: '2025-06-30' - name: endDate in: query schema: type: string format: yyyy-MM-dd description: Time series end date. Accepts `yyyy-MM-dd`. examples: endDateExample1: summary: Example 1 value: '2025-12-01' endDateExample2: summary: Example 2 value: '2025-12-31' - name: viewType in: query required: true schema: enum: - dataset - package type: string description: Most recent and time series data supported. operationId: getEquityAnalystNormalizedFinancialStatementsPerShareDataset tags: - Analyst Normalized Financials responses: '200': $ref: '#/components/responses/ResponseEquityAnalystNormalizedFinancialStatementsPerShare' '400': $ref: '#/components/responses/ResponseBadRequest' '500': $ref: '#/components/responses/ResponseInternalServerError' x-cpqId: 944 /direct-web-services/v1/investments/{id}/equity-analyst-normalized-financials: get: summary: Get Analyst Normalized Financial Statements package view parameters: - name: id in: path description: "\nSpecifies the investment to query. \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: reportType in: query required: true schema: enum: - a - r - d - b - tb - p - ta - td - tr - tp type: string x-enumDescriptions: a: Value as originally reported in a formal document. p: Value reported in a preliminary announcement of results prior to a formal document. r: Restated value reported in a formal document. d: Restated value reported in a preliminary announcement of results prior to a formal document. b: 'Best known value chosen from the available report types: A, P, R, D.' ta: Calculated Trailing 12 months of as originally reported values in a formal document. tp: Calculated Trailing 12 months of values reported in a preliminary announcement of results prior to a formal document. tr: Calculated Trailing 12 months of restated values reported in a formal document. td: Calculated Trailing 12 months of restated values reported in a preliminary announcement of results prior to a formal document. tb: 'Calculated Trailing 12 months of ''best known'' value chosen from the available report types: A, P, R, D.' description: "\nFilters results by report type. Must be used together with `period`.\n\n - `a` = Value as originally reported in a formal document.\n\n - `p` = Value reported in a preliminary announcement of results prior to a formal document.\n\n - `r` = Restated value reported in a formal document.\n\n - `d` = Restated value reported in a preliminary announcement of results prior to a formal document.\n\n - `b` = Best known value chosen from the available report types: A, P, R, D.\n\n - `ta` = Calculated Trailing 12 months of as originally reported values in a formal document.\n\n - `tp` = Calculated Trailing 12 months of values reported in a preliminary announcement of results prior to a formal document.\n\n - `tr` = Calculated Trailing 12 months of restated values reported in a formal document.\n\n - `td` = Calculated Trailing 12 months of restated values reported in a preliminary announcement of results prior to a formal document.\n\n - `tb` = Calculated Trailing 12 months of ‘best known’ value chosen from the available report types: A, P, R, D." examples: reportTypeExample1: summary: As originally reported value: a reportTypeExample2: summary: Preliminary announcement value: p reportTypeExample3: summary: Restated (formal document) value: r reportTypeExample4: summary: Restated (preliminary announcement) value: d reportTypeExample5: summary: Best known value: b reportTypeExample6: summary: Trailing 12 months, as originally reported value: ta reportTypeExample7: summary: Trailing 12 months, preliminary value: tp reportTypeExample8: summary: Trailing 12 months, restated (formal) value: tr reportTypeExample9: summary: Trailing 12 months, restated (preliminary) value: td reportTypeExample10: summary: Trailing 12 months, best known value: tb - name: period in: query required: true schema: enum: - sa2 - q1 - sa1 - a - q2 - q3 - q4 - q6 - q9 - ir type: string x-enumDescriptions: a: 'Annual (full fiscal year). Example: 1 January to 31 December' sa1: 'First semi-annual. Example: 1 January to 30 June' sa2: 'Second semi-annual. Example: 1 July to 31 December' q1: 'First quarter. Example: 1 January to 31 March' q2: 'Second quarter. Example: 1 April to 30 June' q3: 'Third quarter. Example: 1 July to 30 September' q4: 'Fourth quarter. Example: 1 October to 31 December' q6: 'Cumulative six-month period to the end of Q2. Example: 1 January to 30 June' q9: 'Cumulative nine-month period to the end of Q3. Example: 1 January to 30 September' ir: Irregular report. No standardized date range description: ' Filters results by the duration period of financial statements reported by the company. Must be used together with `reportType`. - `a` = Annual (full fiscal year). Example: 1 January to 31 December - `sa1` = First semi-annual. Example: 1 January to 30 June - `sa2` = Second semi-annual. Example: 1 July to 31 December - `q1` = First quarter. Example: 1 January to 31 March - `q2` = Second quarter. Example: 1 April to 30 June - `q3` = Third quarter. Example: 1 July to 30 September - `q4` = Fourth quarter. Example: 1 October to 31 December - `q6` = Cumulative six-month period to the end of Q2. Example: 1 January to 30 June - `q9` = Cumulative nine-month period to the end of Q3. Example: 1 January to 30 September - `ir` = Irregular report. No standardized date range' examples: periodExample1: summary: Annual (full fiscal year) value: a periodExample2: summary: First semi-annual value: sa1 periodExample3: summary: Second semi-annual value: sa2 periodExample4: summary: First quarter value: q1 periodExample5: summary: Second quarter value: q2 periodExample6: summary: Third quarter value: q3 periodExample7: summary: Fourth quarter value: q4 periodExample8: summary: Cumulative six-month period (to end of Q2) value: q6 periodExample9: summary: Cumulative nine-month period (to end of Q3) value: q9 periodExample10: summary: Irregular report value: ir - name: numberOfMonths in: query schema: enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' type: string - name: startDate in: query schema: type: string format: yyyy-MM-dd description: Time series start date. Accepts `yyyy-MM-dd`. examples: startDateExample1: summary: Example 1 value: '2025-06-01' startDateExample2: summary: Example 2 value: '2025-06-30' - name: endDate in: query schema: type: string format: yyyy-MM-dd description: Time series end date. Accepts `yyyy-MM-dd`. examples: endDateExample1: summary: Example 1 value: '2025-12-01' endDateExample2: summary: Example 2 value: '2025-12-31' description: "\nThe Analyst Normalized Financials package provides enhanced normalization of a company’s reported financial data. While companies report normalized financial items as part of their financial filings, interpretations of for which line items adjustments should, and should not, be made can vary from company to company. While the Financials package includes data that uses algorithms to make normalization adjustments based on reported exceptional items, each of the companies covered by our Analyst Normalized Financials package has had an in-depth analysis of all reported items performed by our experienced data analyst to provide even more precision in the normalization process.\nThe package contains the following datasets:\n\n - Analyst Normalized Financial Statements\n\n- Analyst Normalized Financial Statements Per Share\n- Analyst Normalized Price Ratios\nMost recent and time series data supported." operationId: getEquityAnalystNormalizedFinancialsPackage tags: - Analyst Normalized Financials responses: '200': $ref: '#/components/responses/ResponseEquityAnalystNormalizedFinancials' '400': $ref: '#/components/responses/ResponseBadRequest' '500': $ref: '#/components/responses/ResponseInternalServerError' x-cpqId: 944 /direct-web-services/v1/investments/{id}/equity-analyst-normalized-valuation-ratios: get: summary: Get Analyst Normalized Valuation Ratios view parameters: - name: id in: path description: "\nSpecifies the investment to query. \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: startDate in: query schema: type: string format: yyyy-MM-dd description: Time series start date. Accepts `yyyy-MM-dd`. examples: startDateExample1: summary: Example 1 value: '2025-06-01' startDateExample2: summary: Example 2 value: '2025-06-30' - name: endDate in: query schema: type: string format: yyyy-MM-dd description: Time series end date. Accepts `yyyy-MM-dd`. examples: endDateExample1: summary: Example 1 value: '2025-12-01' endDateExample2: summary: Example 2 value: '2025-12-31' - name: viewType in: query required: true schema: enum: - dataset - package type: string description: Most recent and time series data supported. operationId: getEquityAnalystNormalizedValuationRatiosDataset tags: - Analyst Normalized Financials responses: '200': $ref: '#/components/responses/ResponseEquityAnalystNormalizedValuationRatios' '400': $ref: '#/components/responses/ResponseBadRequest' '500': $ref: '#/components/responses/ResponseInternalServerError' x-cpqId: 944 components: schemas: 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 CodeMappingString: type: object properties: value: type: string nullable: true code: type: string nullable: true additionalProperties: false title: CodeMappingString 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 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 OutputProfitability: type: object properties: reportPeriodEndDate: type: string description: The standardized report date when the company reports its financial statements. Standardized report date will be either 28 or 29 (February); 30 or 31. nullable: true analystNormalizedEbit: type: number description: This data point represents earnings before interest and taxes adjusted for items that are irregular; unusual in nature; and/or are non-recurring. This is calculated by using Earnings before Interest and Tax plus/minus any tax affected irregular or unusual items. EBIT can be used to measure a company's profitability. This is an analyst-screened datapoint; meaning an analyst is identifying and taking judgment on what should or should not be adjusted. format: double nullable: true analystNormalizedEbitda: type: number description: This data point represents the earnings the company generated before interest; tax; depreciation and amortization expenses adjusted for items that are irregular; unusual in nature; and/or are non-recurring. This is calculated using Earnings Before Interest; Tax; Depreciation and Amortization plus/minus any irregular or unusual Items. EBITDA can be used to fairly measure a company's profitability. This is an analyst-screened datapoint; meaning an analyst is identifying and taking judgment on what should or should not be adjusted. format: double nullable: true analystNormalizedEbitdar: type: number description: This data point represents the earnings the company generated before interest; tax; depreciation; amortization and rent expenses adjusted for items that are irregular; unusual in nature; and/or are non-recurring. This is calculated using Earnings Before Interest; Tax; Depreciation; Amortization and Rent expenses plus/minus any irregular or unusual Items. EBITDAR can be used to measure a company's profitability. This is an analyst-screened datapoint; meaning an analyst is identifying and taking judgment on what should or should not be adjusted. format: double nullable: true analystNormalizedNetIncome: type: number description: This data point represents earnings adjusted for items that are irregular; unusual in nature; and/or are non-recurring. This can be used to fairly measure a company's profitability. This is calculated using Net Income from Continuing Operations plus/minus any tax affected unusual Items and Goodwill Impairments/Write Offs. This is an analyst-screened datapoint; meaning an analyst is identifying and taking judgment on what should or should not be adjusted. format: double nullable: true bookValueToEbitdaRatio: type: number description: This ratio represents the value of a company's book value relative to its EBITDA. This can be used to determine a company's fair value when comparing this ratio among different companies within the same sector. This is calculated using Book Value divided by EBITDA (TTM). format: double nullable: true bookValueToEbitRatio: type: number description: This ratio represents the value of a company's book value relative to its EBIT. This can be used to determine a company's fair value when comparing this ratio among different companies within the same sector. This is calculated using Book Value divided by EBIT (TTM). format: double nullable: true bookValueToNetIncomeRatio: type: number description: This ratio represents the value of a company's book value relative to its net income. This can be used to determine a company's fair value when comparing this ratio among different companies within the same sector. This is calculated using Book Value divided by Net Income (TTM). format: double nullable: true bookValueToRevenueRatio: type: number description: This ratio represents the value of a company's book value relative to its revenue. This can be used to determine a company's fair value when comparing this ratio among different companies within the same sector. This is calculated using Book Value divided by Revenue (TTM). format: double nullable: true currencyCode: $ref: '#/components/schemas/CodeMappingString' earningsBeforeInterestAndTax: type: number description: This data point represents the earnings the company generated before paying interest and tax expenses. This can be used to measure a company's profitability. This is calculated by using the summation of Pretax Income and Net Interest Income/Expenses. format: double nullable: true earningsBeforeInterestTaxAndAmortization: type: number description: This data point represents the earnings the company generated before interest; tax and amortization expenses. This can be used to measure a company's profitability. This is calculated using Earnings Before Interest; Tax; Depreciation and Amortization minus Depreciation. format: double nullable: true earningsBeforeInterestTaxDepreciationAmortizationAndRent: type: number description: This data point represents the earnings the company generated before interest; tax; depreciation; amortization and rent expenses. This can be used to measure a company's profitability. This is calculated using EBITDA + Rent Expenses + Rent and Landing Fees. format: double nullable: true earningsBeforeInterestTaxDepreciationAndAmortization: type: number description: This data point represents the earnings the company generated before interest; tax; depreciation and amortization expenses. This can be used to measure a company's profitability. This is calculated using EBIT + Depreciation; Amortization and Depletion. format: double nullable: true freeCashFlowToAssetsRatio: type: number description: This ratio represents the value of a company's free cash flow relative to its total assets. This can be used to measure a company's ability to transfer each dollar worth of assets into cash. This is calculated using the Free Cash Flow (TTM) divided by Average Total Assets. format: double nullable: true freeCashFlowToEquityRatio: type: number description: This ratio represents the value of a company's free cash flow relative to its total equity. This can be used to measure the amount of cash available for distribution for each dollar worth of equity. This is calculated using the Free Cash Flow (TTM) divided by Average Total Equity. format: double nullable: true freeCashFlowToNetIncomeRatio: type: number description: This ratio represents the value of a company's free cash flow relative to its net income. This can be used to measure a company's ability to transfer each dollar worth of earnings into cash. This is calculated using the Free Cash Flow divided by Net Income. format: double nullable: true freeCashFlowToSalesRatio: type: number description: This ratio represents the value of a company's free cash flow relative to its total revenue. This can be used to measure a company's ability to convert each dollar worth of revenue into cash. This is calculated using the Free Cash Flow divided by Total Revenue. format: double nullable: true netOperatingProfitAfterTax: type: number description: This calculation represents the tax affected operating earnings the company generated for the period. This can be used to measure a company's profitability. This is calculated using Net Income from Continuing Operations plus tax affected Net Interest Income/Expense minus tax affected Dividend and Investment Income. format: double nullable: true normalizedEarningsBeforeInterestAndTax: type: number description: This represents earnings before interest and taxes adjusted for items that are irregular or unusual in nature; and/or are non-recurring. This can be used to measure a company's profitability. This is calculated by using Earnings before Interest and Tax plus/minus any tax affected unusual items. format: double nullable: true normalizedEarningsBeforeInterestTaxDepreciationAmortizationAndRent: type: number description: This data point represents the earnings the company generated before interest; tax; depreciation; amortization and rent expenses adjusted for items that are irregular or unusual in nature; and/or are non-recurring. This can be used to measure a company's profitability. This is calculated using Earnings Before Interest; Tax; Depreciation; Amortization and Rent expenses plus/minus any unusual Items. format: double nullable: true normalizedEarningsBeforeInterestTaxDepreciationAndAmortization: type: number description: This data point represents the earnings the company generated before interest; tax; depreciation and amortization expenses adjusted for items that are irregular or unusual in nature; and/or are non-recurring. This can be used to fairly measure a company's profitability. This is calculated using Earnings Before Interest; Tax; Depreciation and Amortization plus/minus any unusual Items. format: double nullable: true normalizedIncome: type: number description: This calculation represents earnings adjusted for items that are irregular or unusual in nature; and/or are non-recurring. This can be used to fairly measure a company's profitability. This is calculated using Net Income from Continuing Operations plus/minus any tax affected unusual Items and Goodwill Impairments/Write Offs. format: double nullable: true normalizedReturnOnAsset: type: number description: This ratio represents the value of a company's normalized income relative to its total assets. This can be used to measure the company's ability to utilize its assets efficiently to generate earnings from its normal operations. This is calculated using Normalized Income (TTM) divided by Average Total Assets. format: double nullable: true normalizedReturnOnEquity: type: number description: This ratio represents the value of a company's normalized income relative to its total equity. This can be used to measure the company's ability to utilize its equity efficiently to generate earnings from its normal operations. This is calculated using Normalized Income (TTM) divided by Average Total Equity. format: double nullable: true normalizedReturnOnInvestedCapital: type: number description: This ratio represents the value of a company's normalized net operating profit after tax relative to its Invested Capital. This can be used to measure the company's ability to utilize its invested capital efficiently to generate earnings from its normal operations. This is calculated using Normalized Net operating profit after tax (TTM) divided by Invested Capital. format: double nullable: true returnOnAsset: type: number description: This ratio represents the value of a company's net income relative to its total assets. This can be used to determine how much profit a company generates on its asset base. This is calculated using Net Income from Continuing Operations (TTM) divided by Average Total Assets. format: double nullable: true returnOnCapitalEmployed: type: number description: This ratio represents the value of a company's earnings before interest and tax (EBIT) relative to its Capital Employed. This can be used to measure how much profit a company generates on its capital base. This is calculated using Earnings Before Interest and Tax (EBIT) (TTM); divided by Average Total Assets minus Average Current Liabilities format: double nullable: true returnOnEquity: type: number description: This ratio represents the value of a company's net income relative to its total equity. This can be used to determine how much profit a company generates on the money shareholders have invested in the firm. This is calculated using Net Income from Continuing Operations (TTM) divided by Average Total Equity format: double nullable: true returnOnInvestedCapital: type: number description: This ratio represents the value of a company's net operating profit after tax relative to its Invested Capital. This can be used to measure how much profit a company generates on its capital base. This is calculated using Net operating profit after tax (TTM) divided by Invested Capital. format: double nullable: true returnOnNetOperatingAssets: type: number description: This ratio represents the value of a company's net income relative to its net operating assets. This can be used to determine how much profit a company generates on its asset base. This is calculated using Net Income from Continuing Operations (TTM) divided by Average Net Operating Assets. format: double nullable: true numberOfMonths: type: integer description: '' format: int32 nullable: true reportPeriod: type: string description: '' nullable: true reportType: type: string description: '' nullable: true additionalProperties: false title: OutputProfitability OutputEnterpriseValueCalculations: type: object properties: asOfDate: type: string description: The calendar date when enterprise value data points are calculated nullable: true analystNormalizedEnterpriseValueToEbitdaRatio: type: number description: This ratio represents a company's enterprise value relative to its Normalized EBITDA. The ratio can be used to measure a company's fair value. This is calculated using Enterprise Value divided by Normalized EBITDA which is an analyst-screened datapoint; meaning an analyst is identifying and taking judgment on what should or should not be adjusted. format: double nullable: true analystNormalizedEnterpriseValueToEbitRatio: type: number description: This ratio represents a company's enterprise value relative to its Normalized EBIT. The ratio can be used to measure a company's fair value. This is calculated using Enterprise Value divided by Normalized EBIT; which is an analyst-screened datapoint; meaning an analyst is identifying and taking judgment on what should or should not be adjusted. format: double nullable: true cashReturn: type: number description: This ratio represents a company's free cash flow relative to its enterprise value. This can be used to measure how efficiently the company is using its capital; both equity and debt; to generate free cash flow. In other words; cash return shows how much free cash flow a company generates as a percentage of how much it would cost an investor to buy out the entire business. This is calculated using Free Cash Flow to Firm divided by Enterprise Value. format: double nullable: true currencyCode: $ref: '#/components/schemas/CodeMappingString' enterpriseValue: type: number description: This calculations represents the entire value of a company. This can be used to measure a company's theoretical purchase price. This is calculated using Market Cap + Preferred Stock/Units + Non-Controlling/Minority Interests in Equity + Net Debt. format: double nullable: true enterpriseValueIncludingCash: type: number description: This calculations represents the entire value of a company. This can be used to measure a company's theoretical purchase price. This is calculated using Market Capital + Total Preferred Stock/Units/Securities + Non-Controlling/Minority Interests in Equity + Total Debt format: double nullable: true enterpriseValueToAssetsRatio: type: number description: This ratio represents a company's enterprise value relative to its total assets. This can be used to measure a company's fair value. This is calculated using Enterprise Value divided by Total Assets. format: double nullable: true enterpriseValueToEbitdaRatio: type: number description: This ratio represents a company's enterprise value relative to its EBITDA. This can be used to measure a company's fair value. This is calculated using Enterprise Value divided by EBITDA (TTM). format: double nullable: true enterpriseValueToEbitRatio: type: number description: This ratio represents a company's enterprise value relative to its EBIT. This can be used to measure a company's fair value. This is calculated using Enterprise Value divided by EBIT (TTM). format: double nullable: true enterpriseValueToFreeCashFlowRatio: type: number description: This ratio represents a company's enterprise value relative to its free cash flow. This can be used to measure a company's fair value. This is calculated using Enterprise Value divided by Free Cash Flow (TTM). format: double nullable: true enterpriseValueToPretaxIncomeRatio: type: number description: This ratio represents a company's enterprise value relative to its pre-tax income. This can be used to measure a company's fair value. This is calculated using Enterprise Value divided by Pre-Tax Income (TTM). format: double nullable: true enterpriseValueToRevenueRatio: type: number description: This ratio represents a company's enterprise value relative to revenue. This can be used to measure a company's fair value. This is calculated using Enterprise Value divided by Total Revenue (TTM). format: double nullable: true normalizedEnterpriseValueToEbitdaRatio: type: number description: This ratio represents the value of a company's enterprise value relative to its Normalized EBITDA. This can be used to measure a company's fair value. This is calculated using Enterprise Value divided by Normalized EBITDA (TTM). format: double nullable: true normalizedEnterpriseValueToEbitRatio: type: number description: This ratio represents a company's enterprise value relative to its Normalized EBIT. This can be used to measure a company's fair value. This is calculated using Enterprise Value divided by Normalized EBIT (TTM). format: double nullable: true totalDebtToEnterpriseValue: type: number description: This ratio represents the value of a company's total debt relative to its enterprise value. This can be used to measure the company's financial leverage. This is calculated using Total Debt divided by Enterprise Value. format: double nullable: true additionalProperties: false title: OutputEnterpriseValueCalculations 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 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 OutputProfitabilityPerShare: type: object properties: reportPeriodEndDate: type: string description: The standardized report date when the company reports its financial statements. Standardized report date will be either 28 or 29 (February); 30 or 31. nullable: true analystNormalizedEps: type: number description: The data point represents earnings per share adjusted for income/expenses that are considered irregular; unusual or non-recurring. The adjustment values are usually reported in the notes to financial statements; management; discussion and analysis or as Non-Gaap metrics. This is an analyst-screened datapoint; meaning an analyst is identifying and taking judgment on what should or should not be adjusted. format: double nullable: true currencyCode: $ref: '#/components/schemas/CodeMappingString' ebitdaPerShare: type: number description: 'The per share value of earnings before interest; tax; depreciation and amortization expenses (EBITDA). EBITDA: This data point represents the earnings the company generated before interest; tax; depreciation and amortization expenses. This can be used to measure a company''s profitability. This is calculated using EBIT + Depreciation; Amortization and Depletion.' format: double nullable: true ebitdarPerShare: type: number description: 'The per share value of earnings before interest; tax; depreciation; amortization and rent expenses (EBITDAR). EBITDAR: This data point represents the earnings the company generated before interest; tax; depreciation; amortization and rent expenses. This can be used to measure a company''s profitability. This is calculated using EBITDA + Rent Expenses + Rent and Landing Fees.' format: double nullable: true ebitPerShare: type: number description: 'The per share value of earnings before interest and tax (EBIT). EBIT: This data point represents the earnings the company generated before paying the interest and tax expenses. This can be used to measure a company''s profitability. This is calculated by using the summation of Pretax Income and Net Interest Income/Expenses.' format: double nullable: true normalizedEbitdaPerShare: type: number description: 'The per share value of normalized earnings before interest; tax; depreciation and amortization expenses (EBITDA). Normalized EBITDA: This data point represents the earnings the company generated before interest; tax; depreciation and amortization expenses adjusted for items that are irregular or unusual in nature; and/or are non-recurring. This can be used to fairly measure a company''s profitability. This is calculated using Earnings Before Interest; Tax; Depreciation and Amortization plus/minus any unusual Items.' format: double nullable: true normalizedEbitdarPerShare: type: number description: 'The per share value of normalized earnings before interest; tax; depreciation; amortization and rent expenses (EBITDAR). Normalized EBITDAR: This data point represents the earnings the company generated before interest; tax; depreciation; amortization and rent expenses adjusted for items that are irregular or unusual in nature; and/or are non-recurring. This can be used to measure a company''s profitability. This is calculated using Earnings Before Interest; Tax; Depreciation; Amortization and Rent expenses plus/minus any unusual Items.' format: double nullable: true normalizedEbitPerShare: type: number description: 'The per share value of normalized earnings before interest and tax (EBIT). Normalized EBIT: This represents earnings before interest and taxes adjusted for items that are irregular or unusual in nature; and/or are non-recurring. This can be used to measure a company''s profitability. This is calculated by using Earnings before Interest and Tax plus/minus any tax affected unusual items.' format: double nullable: true normalizedEps: type: number description: This data point represents earnings per share adjusted for irregular and/or non-recurring items based on CPMS (Computerized Portfolio Management Services) methodology standards. This is an analyst-screened datapoint. format: double nullable: true numberOfMonths: type: integer description: '' format: int32 nullable: true reportPeriod: type: string description: '' nullable: true reportType: type: string description: '' nullable: true additionalProperties: false title: OutputProfitabilityPerShare responses: ResponseEquityAnalystNormalizedValuationRatios: description: OK content: application/json: schema: type: object properties: enterpriseValueCalculations: $ref: '#/components/schemas/OutputEnterpriseValueCalculations' identifiers: $ref: '#/components/schemas/OutputIdentifiers' metadata: $ref: '#/components/schemas/OutputMetadata' ResponseBadRequest: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/OutputErrorDetails' ResponseInternalServerError: description: Internal Server content: application/json: schema: $ref: '#/components/schemas/OutputErrorDetails' ResponseEquityAnalystNormalizedFinancials: description: OK content: application/json: schema: type: object properties: profitability: $ref: '#/components/schemas/OutputProfitability' profitabilityPerShare: $ref: '#/components/schemas/OutputProfitabilityPerShare' enterpriseValueCalculations: $ref: '#/components/schemas/OutputEnterpriseValueCalculations' identifiers: $ref: '#/components/schemas/OutputIdentifiers' metadata: $ref: '#/components/schemas/OutputMetadata' ResponseEquityAnalystNormalizedFinancialStatementsPerShare: description: OK content: application/json: schema: type: object properties: profitabilityPerShare: $ref: '#/components/schemas/OutputProfitabilityPerShare' identifiers: $ref: '#/components/schemas/OutputIdentifiers' metadata: $ref: '#/components/schemas/OutputMetadata' ResponseEquityAnalystNormalizedFinancialStatements: description: OK content: application/json: schema: type: object properties: profitability: $ref: '#/components/schemas/OutputProfitability' identifiers: $ref: '#/components/schemas/OutputIdentifiers' metadata: $ref: '#/components/schemas/OutputMetadata' securitySchemes: BasicAuth: type: http scheme: basic