openapi: 3.0.3 info: title: Factset Analytics Datastore About High API description: Allow clients to fetch precalculated Analytics through predeterministic URLs. contact: name: FactSet Research Systems url: https://developer.factset.com/contact email: api@factset.com license: name: Apache License, Version 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 version: 1.0.0 servers: - url: https://api.factset.com description: Production - url: https://api-sandbox.factset.com description: Sandbox security: - basicAuth: [] tags: - name: High paths: /factset-prices/v1/high-low: get: tags: - High summary: Factset Gets the Price High and Price Low of Securities for a List of `ids` as of Given Date, Period and Frequency. operationId: getHighLow description: 'For given security(s), gets the high and low prices with the respective dates on which they occurred. This service gives options for fetching the price as of the close or intraday. ' parameters: - $ref: '#/components/parameters/idsMax2000' - $ref: '#/components/parameters/date' - $ref: '#/components/parameters/period' - $ref: '#/components/parameters/priceType' - $ref: '#/components/parameters/calendar' - $ref: '#/components/parameters/currency' - $ref: '#/components/parameters/adjust' responses: '200': description: Array of price high and price low values. content: application/json: schema: $ref: '#/components/schemas/highLowResponse' examples: 52 week Price High and Price Low of GOOGL-US as of July 07 2020: $ref: '#/components/examples/singleHighLow' 52 week Price High and Price Low for AAPL-US and TSLA-US as of March 07 2020: $ref: '#/components/examples/multipleHighLow' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '415': $ref: '#/components/responses/415' '500': $ref: '#/components/responses/500' x-microcks-operation: delay: 0 dispatcher: FALLBACK post: tags: - High summary: Factset Requests the Price High and Price Low of Securities for a List of `ids` as of Given Date, Period and Frequency. description: 'For given security(s), gets the high and low prices with the respective dates on which they occurred. This service gives options for fetching the price as of the close or intraday. ' operationId: getHighLowForList requestBody: required: true description: Request object for high low prices. content: application/json: schema: $ref: '#/components/schemas/highLowRequest' examples: Single Company Market Value: $ref: '#/components/examples/singleHighLowPost' Multiple Company Market Values: $ref: '#/components/examples/multipleHighLowPost' responses: '200': description: Array of company price high and price low values. content: application/json: schema: $ref: '#/components/schemas/highLowResponse' examples: 52 week Price High and Price Low of GOOGL-US as of July 07 2020: $ref: '#/components/examples/singleHighLow' 52 week Price High and Price Low of AAPL-US and TSLA-US as of March 07 2020: $ref: '#/components/examples/multipleHighLow' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '415': $ref: '#/components/responses/415' '500': $ref: '#/components/responses/500' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: schemas: highLow: title: High Low Object type: object properties: adjDate: description: Date of last split for which prices have been adjusted. type: string format: date example: '2005-02-07' nullable: true date: description: Specific reference date for the period expressed in YYYY-MM-DD format. type: string format: date example: '2020-07-07' nullable: true period: description: The period of measure requested using the period query parameter. type: string example: 52W nullable: true fsymId: description: Factset Regional Security Identifier. Six alpha-numeric characters, excluding vowels, with an -R suffix (XXXXXX-R). Identifies the security's best regional security data series per currency. For equities, all primary listings per region and currency are allocated a regional-level permanent identifier. The regional-level permanent identifier will be available once a SEDOL representing the region/currency has been allocated and the identifiers are on FactSet. type: string example: HTM0LK-R nullable: true priceHigh: description: High price over the period requested. This can represent the intra-day or closing price depending on the priceType requested. By default the price is as of closing in local trading currency, split adjusted and not spinoff adjusted. type: number format: double example: 126 nullable: true priceLow: description: Low price over the period requested. This can represent the intra-day or closing price depending on the priceType requested. By default the price is as of closing in local trading currency, split adjusted and not spinoff adjusted. type: number format: double example: 121.25 nullable: true priceHighDate: description: Date in which the highest price occurred over the requested period for the given id expressed in YYYY-MM-DD format. type: string format: date example: '2020-03-05' nullable: true priceLowDate: description: Date in which the lowest price occurred over the requested period for the given id expressed in YYYY-MM-DD format. type: string format: date example: '2019-09-14' nullable: true requestId: description: Identifier that was used for the request. type: string example: GOOGL highLowRequest: title: High Low Request Body description: High Low Request Body type: object properties: ids: $ref: '#/components/schemas/idsMax2000' date: $ref: '#/components/schemas/dateHL' period: $ref: '#/components/schemas/period' priceType: $ref: '#/components/schemas/priceType' calendar: $ref: '#/components/schemas/calendar' currency: $ref: '#/components/schemas/currency' adjust: $ref: '#/components/schemas/adjust' required: - ids highLowResponse: type: object title: High Low Response properties: data: description: Array of High Low Objects type: array items: $ref: '#/components/schemas/highLow' example: [] dateHL: type: string description: 'The specific date requested for a given period range in **YYYY-MM-DD** format. If left blank, the API will default to previous close. Future dates (T+1) are not accepted in this endpoint. ' example: '2020-07-07' calendar: type: string enum: - FIVEDAY - SEVENDAY - LOCAL default: FIVEDAY description: Calendar of data returned. SEVENDAY includes weekends. LOCAL calendar will default to the securities' trading calendar which excludes date records for respective holiday periods. example: FIVEDAY period: description: Period of measure for Prices High Low. This does not change display `frequency` but rather the underlying return calculation period. All periods are referencing actual periods of measure, not period-ends. For example, 1M rolling period will go back to that date the previous month, which is not always the month-end date. type: string enum: - 1D - 1W - 1M - 3M - 6M - 52W - 2Y - 3Y - 5Y - 10Y default: 52W idsMax2000: type: array items: type: string minItems: 1 maxItems: 2000 description: 'The requested list of security identifiers. Accepted ID types include Market Tickers, SEDOL, ISINs, CUSIPs, or FactSet Permanent Ids. ' example: - FDS-US errorResponse: type: object title: Error Response properties: status: description: status type: string example: Bad Request timestamp: description: timestamp in YYYY-MM-DD HH:MM:SS.SSS type: string example: '2019-11-01 11:09:41.918' format: date-time path: description: The Endpoint path {package}/version/{endpoint} type: string example: /factset-prices/v1/prices message: description: The plain text error message type: string example: Validation Error subErrors: description: subErrors related to the error message. Null if not applicable. type: object properties: object: description: the operation ID type: string field: description: Parameter Field Name type: string message: description: Error message type: string rejectedValue: description: Rejected Values in an Array type: array items: type: string example: example_value priceType: description: Controls whether price high low data is returned intra-day or at close. type: string enum: - INTRADAY - CLOSE default: CLOSE currency: description: Currency code for adjusting prices. Default is Local. For a list of currency ISO codes, visit [Online Assistant Page 1470](https://oa.apps.factset.com/pages/1470). type: string adjust: type: string enum: - SPLIT - SPINOFF - DIVADJ - UNSPLIT default: SPLIT description: "Controls the split, spinoff, and dividend adjustments for the prices.

For more information, visit [Online Assistant Page 614](https://oa.apps.factset.com/pages/614)

\n * **SPLIT** = Split ONLY Adjusted. This is used by default.\n * **SPINOFF** = Splits & Spinoff Adjusted.\n * **DIVADJ** = Splits, Spinoffs, and Dividends adjusted.\n * **UNSPLIT** = No Adjustments, Controls the split and dividend adjustments for the prices.\n" example: SPLIT examples: badRequestInvalidParameters: summary: Bad Request - Invalid Parameters description: This error message occurs when a request parameter is used in which is not recognized by the service. Please revise your request to include only the parameters listed in the specification. Typical causes are spelling mistakes and use of improper casing. value: status: Bad Request timestamp: '2020-06-12 15:58:54.068' path: /factset-prices/v1/{endpoint} message: 'Invalid Parameter (s): fakeParameterName1 fakeParameterName2. Please modify your request to use parameters outlined in the specification for this endpoint.' subErrors: null badRequestDateFormat: summary: Bad Request - Date Format description: This bad request occurs when a request doesn't use the YYYY-MM-DD in the date parameters. To resolve, convert your date to YYYY-MM-DD. value: status: Bad Request timestamp: '2019-10-31 16:08:07.945' path: /factset-prices/v1/{endpoint} message: 'The date parameter ''startDate'' must be in the following date format: YYYY-MM-DD' subErrors: null notWritable: summary: Internal Server Error - Not Writable description: This error may be returned when the server encounters an error writing the JSON response. value: status: Internal Server Error timestamp: '2019-11-05 09:48:29.18' path: /factset-prices/v1/{endpoint} message: Error writing JSON output subErrors: null unsupportedMediaType: summary: Unsupported Media Type description: This bad request occurs when the media type passed in the request is not supported. Currently the APIs only support 'application/json'. value: status: Unsupported Media Type timestamp: '2019-11-05 09:42:27.237' path: /factset-prices/v1/{endpoint} message: text/html media type is not supported. Supported media types are application/json subErrors: null generalException: summary: Internal Server Error - General Exception description: This is the most general error that can be returned to by the service. Please `Report Issue` to FactSet. value: status: Internal Server Error timestamp: '2019-11-01 10:36:01.944' path: /factset-prices/v1/{endpoint} message: Unexpected error subErrors: null multipleHighLowPost: summary: Requesting Price High and Price Low for Multiple Securities for 52 week period description: Price High and Price Low for Multiple Securities for 52 week period value: ids: - AAPL-US - TSLA-US date: '2020-07-07' period: 52W priceType: CLOSE calendar: FIVEDAY currency: USD adjust: SPLIT badRequestReadTimeout: summary: Bad Request - Read Timeout description: This error may be returned if it takes more than 29 seconds to hear back from the data fetch service. value: status: Bad Request timestamp: '2019-11-04 16:18:38.949' path: /factset-prices/v1/{endpoint} message: The request took too long. Try again with a smaller request. subErrors: null multipleHighLow: summary: Price High and Price Low for Multiple Securities for 52 week period description: Price High and Price Low for a Multiple Securities for 52 week period value: data: - adjDate: '2020-08-31' date: '2020-03-06' fsymId: MH33D6-R period: 52W priceHigh: 81.8 priceLow: 43.125 priceLowDate: '2020-03-27' priceHighDate: '2020-02-12' requestId: AAPL-US - adjDate: '2020-08-31' date: '2020-03-06' fsymId: Q2YN1N-R period: 52W priceHigh: 183.48 priceLow: 35.79 priceLowDate: '2020-06-03' priceHighDate: '2020-02-19' requestId: TSLA-US badRequestFutureDate: summary: Bad Request - Future Date description: This error message occurs when a future date is requested in the startDate and endDate parameters. Please revise your request to include dates as of today's current date or any prior historical date. value: status: Bad Request timestamp: '2020-06-12 15:52:48.091' path: /factset-prices/v1/{endpoint} message: The use of future dates is not applicable in this endpoint. Please revise your request to include dates up to today's current date. subErrors: null forbidden: summary: Forbidden description: The USERNAME-SERIAL attempted to request the endpoint is not authorized to access. The request was a legal request, but the server is refusing to respond. Please reach out to FactSet Account Team for assistance with authorization. value: status: Forbidden timestamp: '2020-06-12 16:08:51.731' path: /factset-prices/v1/{endpoint} message: USERNAME-SERIAL does not have permission to use /factset-prices/v1/{endpoint} subErrors: null unauthenticated: summary: User Authentication Failed description: This occurs when a user is not properly authenticated or recognized by the service. Please double check the USERNAME-SERIAL and API-Key used to request and ensure you are within the IP range specified for the Key. Report Issue under 401 error for help with troubleshooting. value: status: User Authentication Failed timestamp: '2019-10-31 16:08:07.945' path: /factset-prices/v1/{endpoint} message: User Authentication Failed. subErrors: null badRequestMalformedJSON: summary: Bad Request - Malformed JSON Request description: This error may be returned when the request body is specified as JSON, but is not in proper JSON format. value: status: Bad Request timestamp: '2019-11-05 09:48:29.18' path: /factset-prices/v1/{endpoint} message: Malformed JSON Request subErrors: null singleHighLowPost: summary: Requesting Price High and Price Low for a Single Security for 52 week period description: Price High and Price Low for a Single Security for 52 week period value: ids: - GOOGL-US date: '2020-07-07' period: 52W priceType: CLOSE calendar: FIVEDAY currency: USD adjust: SPLIT badRequestRequiredParameter: summary: Bad Request - Required Parameter Missing description: This error message occurs when the request does not include the required parameters. Required parameters are indicated with a red asterisks symbol in the specification file. value: status: Bad Request timestamp: '2020-06-12 15:48:42.016' path: /factset-prices/v1/{endpoint} message: The parameter 'ids' is required and may not be empty. subErrors: null singleHighLow: summary: Price High and Price Low for a Single Security for 52 week period description: Price High and Price Low for a Single Security for 52 week period value: data: - adjDate: '2014-04-03' date: '2020-07-07' fsymId: HTM0LK-R period: 52W priceHigh: 1524.87 priceLow: 1054.13 priceLowDate: '2020-03-23' priceHighDate: '2020-02-19' requestId: GOOGL-US responses: '401': description: Unauthenticated USERNAME-SERIAL. Ensure you are logged in and have successfully generated an API KEY for the IP range you are connecting from. For more help, select the **Report Issue** in the top right corner of this Developer Portal specification card and choose Connectivity 401 or 403 Responses. content: application/json: schema: $ref: '#/components/schemas/errorResponse' examples: Bad Request - Date Format: $ref: '#/components/examples/unauthenticated' '415': description: Unsupported Media Type. This error may be returned when the caller sends a resource in a format that is not accepted by the server. This can be fixed by ensuring that Content-Type header is set to the correct value. In this instance, "application/json" would be the appropriate value. content: application/json: schema: $ref: '#/components/schemas/errorResponse' examples: Bad Request - Date Format: $ref: '#/components/examples/unsupportedMediaType' '403': description: The USERNAME-SERIAL attempted to request the endpoint is not authorized to access. The request was a legal request, but the server is refusing to respond. Please reach out to FactSet Account Team for assistance with authorization. content: application/json: schema: $ref: '#/components/schemas/errorResponse' examples: Bad Request - Date Format: $ref: '#/components/examples/forbidden' '500': description: Internal Server Error. content: application/json: schema: $ref: '#/components/schemas/errorResponse' examples: Internal Server Error - Not Writable: $ref: '#/components/examples/notWritable' Internal Server Error - General Exception: $ref: '#/components/examples/generalException' '400': description: Bad Request. This can occur for several reasons. Please review the "message" for more details. content: application/json: schema: $ref: '#/components/schemas/errorResponse' examples: Bad Request - Date Format: $ref: '#/components/examples/badRequestDateFormat' Bad Request - Missing Required Parameter: $ref: '#/components/examples/badRequestRequiredParameter' Bad Request - Future Date: $ref: '#/components/examples/badRequestFutureDate' Bad Request - Invalid Parameter: $ref: '#/components/examples/badRequestInvalidParameters' Bad Request - Malformed JSON: $ref: '#/components/examples/badRequestMalformedJSON' Bad Request - Read Timeout: $ref: '#/components/examples/badRequestReadTimeout' parameters: period: name: period in: query description: "The period of measure for the security's high and low pricing. This does not change display `frequency` but rather the underlying period. For example, if you wish to fetch the latest 52 week high and low price, select 52W. All periods are referencing actual periods of measure, not period-ends where-\n\n * **D** = Daily\n * **W** = Weekly, based on the last trading day of the week. Use the 52W for representing the latest year.\n * **M** = Monthly, based on the start date (e.g., if the start date is June 16, data is displayed for June 16, May 16, April 16 etc.).\n * **YTD** = Year-to-Date\n * **Y** = Actual Annual, based on the start date.\n" required: false schema: type: string enum: - 1D - 1W - 1M - 3M - 6M - YTD - 52W - 2Y - 3Y - 5Y - 10Y default: 52W idsMax2000: name: ids in: query schema: type: array items: type: string minItems: 1 maxItems: 2000 required: true explode: false description: The requested list of security identifiers. Accepted ID types include Market Tickers, SEDOL, ISINs, CUSIPs, or FactSet Permanent Ids.

***ids limit** = 2000 per request*

*

Make note, GET Method URL request lines are also limited to a total length of 8192 bytes (8KB). In cases where the service allows for thousands of ids, which may lead to exceeding this request line limit of 8KB, its advised for any requests with large request lines to be requested through the respective "POST" method.

* examples: oneEquityId: summary: One Equity Market Identifier value: - AAPL-USA multipleEquityIds: summary: Multiple Equity Market Identifiers value: - FDS-US - AAPL-US - MSFT-US currency: name: currency in: query schema: type: string description: Currency code for adjusting prices. Default is Local. For a list of currency ISO codes, visit [Online Assistant Page 1470](https://oa.apps.factset.com/pages/1470). example: USD date: name: date in: query required: false schema: type: string description: 'The as of date in **YYYY-MM-DD** format. This controls the perspective date in which the period parameter will be computed. If left blank, the API will default to previous close. Future dates (T+1) are not accepted in this endpoint. ' example: '2019-07-07' calendar: name: calendar in: query schema: type: string enum: - FIVEDAY - SEVENDAY - LOCAL default: FIVEDAY description: Calendar of data returned. SEVENDAY includes weekends. LOCAL calendar will default to the securities' trading calendar which excludes date records for respective holiday periods. example: FIVEDAY adjust: name: adjust in: query schema: type: string enum: - SPLIT - SPINOFF - DIVADJ - UNSPLIT default: SPLIT description: "Controls the split, spinoff, and dividend adjustments for the prices.

For more information, visit [Online Assistant Page 614](https://oa.apps.factset.com/pages/614)

\n * **SPLIT** = Split ONLY Adjusted. This is used by default.\n * **SPINOFF** = Splits & Spinoff Adjusted.\n * **DIVADJ** = Splits, Spinoffs, and Dividends adjusted.\n * **UNSPLIT** = No Adjustments.\n" examples: split: summary: Split adjusted by default - accounts for splits over security's history. value: SPLIT spinoff: summary: Spinoff Adjusted - accounts for a company's spinoff. Spinoffs are treated as special dividends. value: SPINOFF Dividend Adjusted: summary: Dividend Adjusted value: DIVADJ Unsplit: summary: Unsplit data - overrides the default split adjustment value: UNSPLIT priceType: name: priceType in: query description: 'Controls whether price high and low data is returned intraday or at the close. For example, by selecting INTRADAY, if a security price reached an all time high of 10 during trading hours over the period of measure but closed that day at 8, then the service will return 10. If CLOSE was selected the service would return 8 if that was the high for the period measured. ' required: false schema: type: string enum: - INTRADAY - CLOSE default: CLOSE securitySchemes: basicAuth: type: http scheme: basic externalDocs: url: https://developer.factset.com/api-catalog/analytics-datastore-api description: API Documentation