openapi: 3.0.3 info: title: Factset Analytics Datastore About Streetaccount 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: Streetaccount paths: /streetaccount/headlines: post: summary: Factset Retrieve StreetAccount headlines for given filters description: This endpoint will pull all headlines produced by StreetAccount and the full story body will be returned by the data set. Filters can be specified via the endpoint below. tags: - Streetaccount operationId: getStreetAccountHeadlines requestBody: $ref: '#/components/requestBodies/saHeadlinesRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/searchResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/error' /streetaccount/views/{id}/headlines: post: summary: Factset Retrieve StreetAccount headlines for given view description: This endpoint allows you to pull all headlines produced by StreetAccount for a saved view. The full story body will be returned by the data set. Views can be created via the ‘Create Views’ endpoint. tags: - Streetaccount operationId: getStreetAccountHeadlinesByView requestBody: $ref: '#/components/requestBodies/saHeadlinesRequestByView' parameters: - in: path name: id example: SA News View schema: type: string required: true description: view id of the view to return headlines for responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/searchResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/error' /streetaccount/views: get: summary: Factset Retrieves StreetAccount search views description: This endpoint allows you to pull the full list of StreetAccount views that have been previously saved. tags: - Streetaccount operationId: getStreetAccountViews responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/views' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/error' /streetaccount/views/{id}: post: summary: Factset Creates and saves a StreetAccount view description: This endpoint allows you to create a new StreetAccount view. Select watchlists/tickers and filters of your choice to create and save a view. tags: - Streetaccount operationId: createStreetAccountView requestBody: $ref: '#/components/requestBodies/createOrEditViewBody' parameters: - in: path name: id example: SA News View schema: type: string required: true description: view id of the view which is the be created responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/createEditDeleteViewResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/error' put: summary: Factset Edits and saves an existing StreetAccount view description: This endpoint allows you to edit the criteria used for a previously saved StreetAccount view. tags: - Streetaccount operationId: editStreetAccountView requestBody: $ref: '#/components/requestBodies/createOrEditViewBody' parameters: - in: path name: id example: SA News View schema: type: string required: true description: view id of the view to be edited responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/createEditDeleteViewResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/error' delete: summary: Factset Deletes an existing StreetAccount view description: This endpoint allows you to delete a previously saved StreetAccount view. tags: - Streetaccount operationId: deleteStreetAccountView parameters: - in: path name: id example: SA News View schema: type: string required: true description: view id of the view to be deleted responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/createEditDeleteViewResponse' '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/error' /streetaccount/filters: get: summary: Factset Retrieve all StreetAccount filters tags: - Streetaccount operationId: getStreetAccountFilters parameters: - in: query name: structured schema: type: boolean required: false allowEmptyValue: true description: Pass structured to generate a structured view of the available filters. - in: query name: flattened schema: type: boolean required: false allowEmptyValue: true description: Pass flattened to generate a structured view of the available filters. description: Add StreetAccount filters (watchlists, company filters, market topics, regions and sectors) to filter down StreetAccount headlines by the relevant categories. Set the structured and/or flattened flag. If structured flag is set, parent and child filter information will be returned. If flattened flag is set, flattened filters will be returned which can be used with the headlines and createView endpoints. Both flags can be set to return both sets of filters. If no params are provided it will return both responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FilterResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/error' /streetaccount/historical/request-files: get: tags: - Streetaccount summary: Factset Returns the jobID description: Give the startDate and endDate parameters as request parameters in the /request-files endpoint, it returns the jobID. startDate and endDate should be in YYYY-MM-DDTHH:MM:SSZ format. This API only supports adhoc requests to retrieve historical files and does not support real-time files and if you interested in require real-time push should consider the other three methods (pushed via SFTP, to QNT account, or your Azure Storage). Per API request able to query till 2 years of data parameters: - name: startDate in: query description: Date from which data is required. Should be YYYY-MM-DDTHH:MM:SSZ format required: true schema: type: string format: date-time - name: endDate in: query description: The date until which the data is to be fetched. Should be YYYY-MM-DDTHH:MM:SSZ format required: true schema: type: string format: date-time responses: '200': description: success content: application/json: schema: $ref: '#/components/schemas/requestfilesResponse' examples: default200ResponseExample: $ref: '#/components/examples/200RequestFilesExample' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccountExample' '401': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccount401Example' '403': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccount403Example' '500': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccount500Example' /streetaccount/historical/check-status: get: tags: - Streetaccount summary: Factset Returns the status and percentage of completion for the requested jobID description: Need to plug-in the jobID from /request-files into /check-status endpoint parameters: - name: jobID in: query description: jobID returned by the request-files endpoint to know the status and percentDone required: true schema: type: string - name: _paginationLimit in: query description: Specifies the maximum number of results to return per result required: false schema: type: integer - name: _paginationOffset in: query description: Specifies the starting point for pagination. This parameter is used to identify the beginning of next set of results required: false schema: type: integer responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/checkstatusResponse' examples: default200ResponseExample: $ref: '#/components/examples/200CheckStatusExample' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccountExample' '401': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccount401Example' '403': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccount403Example' '500': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccount500Example' /streetaccount/historical/get-files: get: tags: - Streetaccount summary: Factset Returns the StreetAccount XML files for the specified date range description: Need to plug-in the jobID from /check-status into /get-files endpoint parameters: - name: jobID in: query description: jobID returned by the request-files endpoint to collect the results of the query required: true schema: type: string - name: _paginationLimit in: query description: Specifies the maximum number of results to return per result required: false schema: type: integer - name: _paginationOffset in: query description: Specifies the starting point for pagination. This parameter is used to identify the beginning of next set of results required: false schema: type: integer responses: '200': description: success content: application/json: schema: $ref: '#/components/schemas/getfilesResponse' examples: default200ResponseExample: $ref: '#/components/examples/200GetFilesExample' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccountExample' '401': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccount401Example' '403': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccount403Example' '500': description: Bad request content: application/json: schema: $ref: '#/components/schemas/StreetAccountStatus' examples: default400ResponseExample: $ref: '#/components/examples/StreetAccount500Example' components: schemas: flattenedFiltersTopicsObject: type: object properties: name: type: string value: type: array items: type: string example: name: '13F Summary ' value: - SA_13F_SUMMARY structuredFiltersRegionsObject: type: object properties: name: type: string value: type: array items: type: number error: type: object properties: meta: type: object errors: type: array items: $ref: '#/components/schemas/errorObject' requestfilesResponse: type: object properties: jobID: description: Unique id to get the xml files for the requested date type: string status: description: Returns the value as submitted. Tells the request has been submitted type: string searchResponseArrayObject: type: object properties: docsStoryDateAndTime: type: string example: '2022-09-15T06:48:19Z' docsHeadlines: type: string example: Sample Headline docsId: type: string example: sa_story_3393235 docsPrimarySymbols: type: array items: type: string example: AAPL-US docsSymbols: type: array items: type: string example: AAPL-US docsSubjects: type: array items: type: string example: SA_EARNINGS docsStoryBody: type: string example: Sample Body docsReferenceUris: type: string example: Sample URI checkstatusResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/checkstatus' meta: $ref: '#/components/schemas/metaOne' structuredFiltersTopicsObject: type: object properties: name: type: string value: type: array items: type: string children: type: array items: $ref: '#/components/schemas/structuredFiltersChildrenObject' getfiles: type: object properties: product: description: Defines the name of the product type: string startDate: description: The startDate from which the data is required in YYYY-MM-DDTHH:MM:SSZ format type: string format: date endDate: description: The endDate until which the data is fetched in YYYY-MM-DDTHH:MM:SSZ format type: string format: date jobID: description: Unique id to get the xml files for the requested date type: string status: description: Defines the status of the request type: string url: description: Link to download the zip file which contains xml files type: string part: description: Returns the part number of the jobID type: integer structuredFiltersSectorsObject: type: object properties: name: type: string expanded: type: boolean children: type: array items: $ref: '#/components/schemas/structuredFiltersChildrenObject' saHeadlinesRequest: type: object properties: data: type: object properties: tickers: type: array items: $ref: '#/components/schemas/saHeadlinesRequestTickersObject' categories: type: array items: type: string example: Earnings regions: type: array items: type: string example: North America topics: type: array items: type: string example: Market Summaries sectors: type: array items: type: string example: Gold & Silver isPrimary: type: boolean example: true searchDate: type: object properties: start: type: string description: Start time for custom search. startTime must follow the ISO 8601 standard format, YYYY-MM-DDTHH:mm:ssZ (UTC). It also supports offsets ±[hh]:[mm] example: '2022-08-21T12:35:45Z' end: type: string description: End time for custom search. If end time is not present end time is automatically set to the time of the search. endTime must follow the ISO 8601 standard format, YYYY-MM-DDTHH:mm:ssZ (UTC). It also supports offsets ±[hh]:[mm] example: '2022-08-29T08:10:30Z' meta: type: object properties: pagination: type: object description: Object defining pagination for the results pageable attribute. Offset-based strategy is used for Pagination. properties: limit: type: integer example: 50 default: 500 description: Non-negative maximum number of entries to return. offset: type: integer example: 100 default: 0 description: Non-negative number of entries to skip. flattenedFiltersSectorsObject: type: object properties: name: type: string value: type: array items: type: number example: name: Chemical Manufacturing value: - 106 viewsObject: type: object properties: viewName: type: string example: Sample View tickers: type: array items: type: string example: FDS-US categories: type: array items: type: string example: News Media topics: type: array items: type: string example: 'Market Summaries ' regions: type: array items: type: string example: North America sectors: type: array items: type: string example: Chemicals - Plastics & Rubber isPrimary: type: boolean createOrEditViewBody: type: object properties: data: type: object properties: tickers: type: array items: $ref: '#/components/schemas/createOrEditViewTickers' categories: type: array items: type: string example: Earnings regions: type: array items: type: string example: North America topics: type: array items: type: string example: Market Summaries sectors: type: array items: type: string example: Gold & Silver isPrimary: type: boolean example: true quickAlert: type: boolean example: false checkstatus: type: object properties: product: description: Defines the name of the product type: string jobID: description: Unique id to get the xml files for the requested date type: string status: description: Returns any of the 2 results Submitted ->Running->Completed and Failed type: string percentDone: description: Returns how much percentage of task is completed for the requested jobID type: integer startDate: description: The date from which the data is required in YYYY-MM-DDTHH:MM:SSZ format type: string format: date endDate: description: The date until which the data is fetched in YYYY-MM-DDTHH:MM:SSZ format type: string format: date part: description: Returns the part number of the jobID type: integer paginationOne: title: PaginationItems description: List of pagination objects type: object properties: total: description: Total number of files the API returns for a particular query type: integer isEstimatedTotal: description: Boolean value that represents whether the total count of files returned is exact or an estimate. This is defaulted to “False” as the API should always return the exact count type: boolean limit: description: Number of results returned per page type: integer offset: description: The flag indicating the position in the results array if additional results are available beyond the default value or the value in paginationLimit parameter (if used). This value is passed in the _paginationOffset parameter to retreieve subsequent results type: integer flattenedFilters: type: object description: Flattened Filters Object properties: categories: type: array items: $ref: '#/components/schemas/flattenedFiltersCategoriesObject' topics: type: array items: $ref: '#/components/schemas/flattenedFiltersTopicsObject' regions: type: array items: $ref: '#/components/schemas/flattenedFiltersRegionsObject' sectors: type: array items: $ref: '#/components/schemas/flattenedFiltersSectorsObject' watchlists: type: array items: $ref: '#/components/schemas/flattenedFiltersWatchlistsObject' isPartialOne: title: IsPartialItems description: If the value is true, it indicates additional results are available. False represents that this is the last set of results for this request. type: object properties: isPartial: type: boolean saHeadlinesRequestTickersObject: type: object properties: name: type: string example: S&P 500 value: type: string example: SP50 type: type: string example: Index enum: - Index - ETF - Mutual_Fund - Portfolios flattenedFiltersWatchlistsObject: type: object properties: name: type: string type: type: string value: type: string example: name: S&P 500 type: Index value: SP50 searchResponse: type: object description: Properties in results objects are based on return values properties: data: type: object properties: results: type: array items: $ref: '#/components/schemas/searchResponseArrayObject' meta: type: object properties: requestGuid: type: string pagination: type: object properties: total: type: integer example: 100 isEstimatedTotal: type: boolean example: false structuredFiltersWatchlistsObject: type: object properties: name: type: string type: type: string value: type: string errorObject: type: object properties: id: type: string title: type: string code: type: string flattenedFiltersCategoriesObject: type: object properties: name: type: string value: type: array items: type: string example: name: Dividends value: - SA_DIVIDENDS views: type: object description: StreetAccount views properties: data: type: array items: $ref: '#/components/schemas/viewsObject' getfilesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/getfiles' meta: $ref: '#/components/schemas/metaOne' structuredFilters: type: object description: Structured Filters Object properties: categories: type: array items: $ref: '#/components/schemas/structuredFiltersCategoriesObject' topics: type: array items: $ref: '#/components/schemas/structuredFiltersTopicsObject' regions: type: array items: $ref: '#/components/schemas/structuredFiltersRegionsObject' sectors: type: array items: $ref: '#/components/schemas/structuredFiltersSectorsObject' watchlists: type: array items: $ref: '#/components/schemas/structuredFiltersWatchlistsObject' structuredFiltersCategoriesObject: type: object properties: name: type: string value: type: array items: type: string children: type: array items: $ref: '#/components/schemas/structuredFiltersChildrenObject' flattenedFiltersRegionsObject: type: object properties: name: type: string value: type: array items: type: number example: name: Canada value: - 5 saHeadlinesRequestByView: type: object properties: data: type: object properties: searchDate: type: object properties: start: type: string description: Start time for custom search. startTime must follow the ISO 8601 standard format, YYYY-MM-DDTHH:mm:ssZ (UTC). It also supports offsets ±[hh]:[mm] example: '2022-08-21T12:35:45Z' end: type: string description: End time for custom search. If end time is not present end time is automatically set to the time of the search. endTime must follow the ISO 8601 standard format, YYYY-MM-DDTHH:mm:ssZ (UTC). It also supports offsets ±[hh]:[mm] example: '2022-08-29T08:10:30Z' meta: type: object properties: pagination: type: object description: Object defining pagination for the results pageable attribute. Offset-based strategy is used for Pagination. properties: limit: type: integer example: 50 default: 500 description: Non-negative maximum number of entries to return. offset: type: integer example: 100 default: 0 description: Non-negative number of entries to skip. createOrEditViewTickers: type: object properties: name: type: string example: Russell 1000 value: type: string example: R.1000 type: type: string example: Index enum: - Index - ETF - Holder - Mutual_Fund - Portfolios structuredFiltersChildrenObject: type: object properties: name: type: string value: type: array items: type: string metaOne: title: Meta description: Array of metadata objects type: object properties: pagination: $ref: '#/components/schemas/paginationOne' partial: $ref: '#/components/schemas/isPartialOne' FilterResponse: type: object description: Filters Object properties: data: type: object properties: structuredFilters: $ref: '#/components/schemas/structuredFilters' flattenedFilters: $ref: '#/components/schemas/flattenedFilters' StreetAccountStatus: title: Response Status of SA type: object properties: id: type: string error_message: description: Textual error message type: string createEditDeleteViewResponse: type: object description: Properties in object are results of the create or save operation properties: data: type: object properties: id: type: string example: StreetAccount News Summaries Europe message: type: object properties: view: type: string example: View created/edited/deleted sucessfully examples: 200CheckStatusExample: summary: Sample Response value: data: - product: SA jobID: 9ffa3ffb-0ed3-40a0-a98f-8ed7da0a8ad5 status: completed percentDone: 100 startDate: '2021-11-21T00:00:00Z' endDate: '2021-11-28T00:00:00Z' part: 1 meta: pagination: total: 105 isEstimatedTotal: false limit: 200 offset: 105 partial: isPartial: false StreetAccountExample: summary: Sample error Response value: id: 0ad3e09c-d8a2-4223-a1a3-0244d1247351 error_message: parameterError:Missing required parameter jobID searchDate: summary: Using searchDate value: data: tickers: - name: S&P 500 value: SP50 type: Index categories: - Earnings regions: - North America topics: - Market Summaries sectors: - Gold & Silver isPrimary: true searchDate: start: '2022-08-21T12:35:45Z' end: '2022-08-29T08:10:30Z' meta: pagination: limit: 50 offset: 100 200GetFilesExample: summary: Sample Response value: data: - product: SA startDate: '2021-11-21T00:00:00Z' endDate: '2021-11-28T00:00:00Z' jobID: 9ffa3ffb-0ed3-40a0-a98f-8ed7da0a8ad5 status: completed part: 1 url: https://structured-data-delivery-streetaccount/download/get/link meta: pagination: total: 105 isEstimatedTotal: false limit: 200 offset: 105 partial: isPartial: false searchDateid: summary: Using searchDate with id value: data: searchDate: start: '2022-08-21T12:35:45Z' end: '2022-08-29T08:10:30Z' meta: pagination: limit: 50 offset: 100 200RequestFilesExample: summary: Sample Response value: jobID: 9ffa3ffb-0ed3-40a0-a98f-8ed7da0a8ad5 status: submitted StreetAccount500Example: summary: Sample error Response value: id: 0ad3e09c-d8a2-4223-a1a3-0244d1247351 error_message: An unexpected error happened StreetAccount403Example: summary: Sample error Response value: id: 0ad3e09c-d8a2-4223-a1a3-0244d1247351 error_message: USERNAME-SERIAL does not have permission StreetAccount401Example: summary: Sample error Response value: id: 0ad3e09c-d8a2-4223-a1a3-0244d1247351 error_message: USERNAME-SERIAL does not have permission requestBodies: createOrEditViewBody: content: application/json: schema: $ref: '#/components/schemas/createOrEditViewBody' description: Create or Edit View Body which needs to be sent with request saHeadlinesRequest: content: application/json: schema: $ref: '#/components/schemas/saHeadlinesRequest' examples: Using searchDate: $ref: '#/components/examples/searchDate' description: Filter Body which needs to be sent with request saHeadlinesRequestByView: content: application/json: schema: $ref: '#/components/schemas/saHeadlinesRequestByView' examples: Using searchDate with id: $ref: '#/components/examples/searchDateid' description: View body which needs to be sent with request securitySchemes: basicAuth: type: http scheme: basic externalDocs: url: https://developer.factset.com/api-catalog/analytics-datastore-api description: API Documentation