FactSet StreetAccount News API

Accessing streetAccount news along with business logic contained in the workstation experience.

OpenAPI Specification

streetaccount-news-openapi-original.yml Raw ↑
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: [email protected]
  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)

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/factset/refs/heads/main/openapi/streetaccount-news-openapi-original.yml