openapi: 3.0.3 info: title: Factset StreetAccount News API description: >- The StreetAccount News API provides access to FactSet's proprietary news provider, StreetAccount. StreetAccount, is a premium real-time market intelligence news service that delivers comprehensive U.S., Canadian, and European coverage (and expanding Asia coverage). All possible sources for corporate news are scanned and key story facts are highlighted and presented in an easy-to-read format. **StreetAccount Filters, Headlines, and Views:** These endpoints allow for the retrieval of news headlines using filters such as Watchlists/Indices/Tickers, Company Filters, Market Topics, Regions, and Sectors. Headlines can also be retrieved based on saved views within the Workstation. **StreetAccount Historical Stories:** These endpoints provide access to historical StreetAccount (SA) news. The API delivers SA stories in XML format based on user-specified date input parameters. Output files are securely available to users through a URL. This API has three endpoints: Request Files, Check Status, and Get Files. Please note that this API only supports adhoc requests for historical files and does not support real-time files. If real-time push is required, consider using other methods such as SFTP, QNT account, or Azure Storage. Both historical and real-time Street Account news can be delivered via SFTP, QNT account, or Azure Storage. The files delivered contain both metadata and content body, eliminating the need for multiple requests through multiple services to retrieve all the information. version: 0.1.0 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 servers: - url: https://api.factset.com/research/news/v0 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' externalDocs: description: API Documentation url: https://developer.factset.com/api-catalog/streetaccount-news-api security: - FactSetApiKey: [] - FactSetOAuth2: [] components: securitySchemes: FactSetOAuth2: type: oauth2 flows: clientCredentials: tokenUrl: https://auth.factset.com/as/token.oauth2 scopes: {} FactSetApiKey: type: http scheme: basic requestBodies: 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 createOrEditViewBody: content: application/json: schema: $ref: '#/components/schemas/createOrEditViewBody' description: Create or Edit View Body which needs to be sent with request examples: 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 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 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 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 StreetAccountExample: summary: Sample error Response value: id: 0ad3e09c-d8a2-4223-a1a3-0244d1247351 error_message: parameterError:Missing required parameter jobID 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 StreetAccount500Example: summary: Sample error Response value: id: 0ad3e09c-d8a2-4223-a1a3-0244d1247351 error_message: An unexpected error happened schemas: 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 checkstatusResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/checkstatus' meta: $ref: '#/components/schemas/metaOne' 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 getfilesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/getfiles' meta: $ref: '#/components/schemas/metaOne' 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 StreetAccountStatus: title: Response Status of SA type: object properties: id: type: string error_message: description: Textual error message type: string error: type: object properties: meta: type: object errors: type: array items: $ref: '#/components/schemas/errorObject' errorObject: type: object properties: id: type: string title: type: string code: type: string 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. metaOne: title: Meta description: Array of metadata objects type: object properties: pagination: $ref: '#/components/schemas/paginationOne' partial: $ref: '#/components/schemas/isPartialOne' 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 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 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. 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 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 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 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 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 views: type: object description: StreetAccount views properties: data: type: array items: $ref: '#/components/schemas/viewsObject' 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 FilterResponse: type: object description: Filters Object properties: data: type: object properties: structuredFilters: $ref: '#/components/schemas/structuredFilters' flattenedFilters: $ref: '#/components/schemas/flattenedFilters' 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' flattenedFiltersCategoriesObject: type: object properties: name: type: string value: type: array items: type: string example: name: Dividends value: - SA_DIVIDENDS flattenedFiltersTopicsObject: type: object properties: name: type: string value: type: array items: type: string example: name: '13F Summary ' value: - SA_13F_SUMMARY flattenedFiltersRegionsObject: type: object properties: name: type: string value: type: array items: type: number example: name: Canada value: - 5 flattenedFiltersSectorsObject: type: object properties: name: type: string value: type: array items: type: number example: name: Chemical Manufacturing value: - 106 flattenedFiltersWatchlistsObject: type: object properties: name: type: string type: type: string value: type: string example: name: S&P 500 type: Index value: SP50 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' structuredFiltersChildrenObject: type: object properties: name: type: string value: type: array items: type: string structuredFiltersTopicsObject: type: object properties: name: type: string value: type: array items: type: string children: type: array items: $ref: '#/components/schemas/structuredFiltersChildrenObject' structuredFiltersRegionsObject: type: object properties: name: type: string value: type: array items: type: number structuredFiltersSectorsObject: type: object properties: name: type: string expanded: type: boolean children: type: array items: $ref: '#/components/schemas/structuredFiltersChildrenObject' structuredFiltersWatchlistsObject: type: object properties: name: type: string type: type: string value: type: string