FactSet Universal Screening API

Use the Universal Screening API to calculate your saved screens and then output the results in a convenient JSON format or archive the results to an Open FactSet Database (OFDB) file.

OpenAPI Specification

universal-screening-openapi-original.yml Raw ↑
components:
  parameters:
    ArchiveID:
      description: Unique identifier for a screen archive to OFDB job
      in: path
      name: id
      required: true
      schema:
        type: string
    PaginationCursor:
      description: Paging index (Initial request may omit)
      in: query
      name: _paginationCursor
      schema:
        type: integer
    PaginationLimit:
      description: Page size limit (minumum 1000, default 10,000, maximum 100,000)
      in: query
      name: _paginationLimit
      schema:
        type: integer
    ScreenCalcID:
      description: Unique identifier for a screen calculation job
      in: path
      name: id
      required: true
      schema:
        type: string
  requestBodies:
    submitArchiveOFDBRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ScreenArchiveOFDBParameters'
      description: Data required for an archive to OFDB request
    submitCalcRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ScreenCalcParameters'
      description: Data required for a calculation request
  responses:
    ActiveJobsResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ActiveJobsData'
      description: ActiveJobsResponse contains id of all of a user's active jobs
    ArchiveOFDBInProgressResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResourceStatusResponse'
      description: Archive job still in progress
      headers:
        Location:
          description: Relative location to poll for archive status
          schema:
            type: string
        X-FactSet-Api-PickUp-Progress:
          description: Screen archive progress
          schema:
            type: string
    ArchiveOFDBSuccessResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResourceStatusResponse'
      description: Archive job completed
      headers:
        X-FactSet-Api-PickUp-Progress:
          description: Screen progress
          schema:
            type: string
    CalculateInProgressResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResourceStatusResponse'
      description: Calculation job still in progress
      headers:
        Location:
          description: Relative location to poll for status
          schema:
            type: string
        X-FactSet-Api-PickUp-Progress:
          description: Screen progress
          schema:
            type: string
    CalculateSuccessResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResourceStatusResponse'
      description: Job completed
      headers:
        Location:
          description: Relative location to pick up screen results, calculate route only
          schema:
            type: string
        X-FactSet-Api-PickUp-Progress:
          description: Screen progress
          schema:
            type: string
    PaginatedCalculateResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PaginatedCalculationResponse'
      description: Paginated Screen Results and Metadata
    Error400InvalidRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorArray'
      description: Invalid request body.
    Error400ScreenOpen:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorArray'
      description: The requested screen could not be opened.
    Error401Response:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorArray'
      description: Invalid or missing authentication.
    Error404Response:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorArray'
      description: Job ID not found.
    Error410Response:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorArray'
      description: The results have been fetched for this ID.
    Error429Response:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorArray'
      description: Too many requests.
      headers:
        X-FactSet-Api-Units-Limit:
          description: Maximum number of jobs.
          schema:
            type: string
        X-FactSet-Api-Units-Remaining:
          description: Number of available jobs.
          schema:
            type: string
    Generic500ErrorResponse:
      description: Internal Server Error
      headers:
        Request-Key:
          description: Provide this key when reporting this issue
          schema:
            type: string
    SubmitArchiveOFDBResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResourceStatusResponse'
      description: >-
        Successful archive OFDB submission response, returns the job ID unique
        to this archive and the URL in the Location header to check the status
        of the archive.
      headers:
        Location:
          description: Relative location to poll for archive status
          schema:
            type: string
        X-FactSet-Api-Units-Limit:
          description: Maximum number of jobs.
          schema:
            type: string
        X-FactSet-Api-Units-Remaining:
          description: Number of available jobs.
          schema:
            type: string
        RateLimit-Limit:
          description: Number of weekly jobs available.
          schema:
            type: string
        RateLimit-Remaining:
          description: Number of remaining weekly jobs.
          schema:
            type: string
        RateLimit-Reset:
          description: Time, in seconds, until weekly limit resets.
          schema:
            type: string
    SubmitCalculateResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResourceStatusResponse'
      description: >-
        Successful calculation submission response, returns the job ID unique to
        this calculation and the URL in the Location header to check the status
        of the calculation.
      headers:
        Location:
          description: Relative location to poll for calculation status
          schema:
            type: string
        X-FactSet-Api-Units-Limit:
          description: Maximum number of jobs.
          schema:
            type: string
        X-FactSet-Api-Units-Remaining:
          description: Number of available jobs.
          schema:
            type: string
        RateLimit-Limit:
          description: Number of weekly jobs available.
          schema:
            type: string
        RateLimit-Remaining:
          description: Number of remaining weekly jobs.
          schema:
            type: string
        RateLimit-Reset:
          description: Time, in seconds, until weekly limit resets.
          schema:
            type: string
  schemas:
    ActiveJobsData:
      description: Object containing active jobs ids
      properties:
        data:
          $ref: '#/components/schemas/ActiveJobIDs'
    ActiveJobIDs:
      properties:
        id:
          items:
            type: string
          type: array
      description: Array of active jobs ids associated with the account
      type: object
    ErrorArray:
      description: An array of errors
      properties:
        errors:
          items:
            $ref: '#/components/schemas/ErrorObject'
          type: array
          description: Array of Error Objects
      type: object
    ErrorCode:
      description: Factset API specific error codes
      enum:
        - notAuthenticated
        - notAuthorized
        - notFound
        - endpointNotFound
        - parameterError
        - genericServerError
        - resourceGone
        - quantityLimitsExceeded
        - universal_screening_parameterError
        - universal_screening_parameterWarning
      type: string
    ErrorObject:
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
        id:
          description: >-
            A unique ID for the occurrence of the error. It is advised to log
            this code and include it if you contact FactSet support desk.
          type: string
        source:
          $ref: '#/components/schemas/ErrorObjectSource'
        title:
          description: a description of the error
          type: string
      type: object
      description: Associated Error Objects
    ErrorObjectSource:
      properties:
        parameter:
          type: string
      description: >-
        For errors and warnings found in screens, contains the paramID the
        error/warning belongs to
      type: object
    PaginationResponse:
      properties:
        isEstimatedTotal:
          description: Denotes if the 'total' property is an estimation
          type: boolean
        next:
          description: Next cursor to be sent, will be null when there are no more results
          type: string
          nullable: true
        prev:
          description: Previous cursor, currently not supported
          type: integer
          nullable: true
        total:
          description: Total number of rows in the screen
          type: integer
      type: object
    ResourceStatusResponse:
      description: >-
        ResourceStatusResponse contains information regarding the status of a
        calculation job
      properties:
        data:
          properties:
            error:
              $ref: '#/components/schemas/ErrorObject'
            id:
              description: ID of the submitted calculation job
              type: string
            status:
              description: Current status of the calculation job
              type: string
          type: object
      type: object
    ResultsMetadata:
      description: Metadata containing results pagination information
      properties:
        pagination:
          $ref: '#/components/schemas/PaginationResponse'
      type: object
    StachPackage:
      description: Stach v2 column oriented paginated screen results
      type: object
    PaginatedCalculationResponse:
      description: Paged results from screen calculation
      properties:
        meta:
          $ref: '#/components/schemas/ResultsMetadata'
        data:
          $ref: '#/components/schemas/StachPackage'
      type: object
    ScreenArchiveOFDBParameters:
      properties:
        data:
          description: Object containing archive request payload
          properties:
            archiveOptions:
              properties:
                archiveDate:
                  description: YYYYMMDD date to archive to
                  type: string
                archiveType:
                  description: >-
                    Type of archive, i.e. ofdbSymbols, ofdbNts, ofdbQuickNts,
                    ofdb
                  type: string
                autoSymbolUpdates:
                  description: Flag to enable automatic symbol updates
                  type: boolean
                existed:
                  description: Indicates that the output file exists
                  type: boolean
                filename:
                  description: OFDB Filename to archive to
                  type: string
                overwriteData:
                  description: >-
                    If true and target file (or date for a time series file)
                    exists, it will be cleared before archiving
                  type: boolean
                quickColumns:
                  description: >-
                    Space delimited list of parameter references to be archived,
                    which are UPPERCASED with the #P. omitted
                  type: string
                symbolType:
                  description: The symbol type for archiving
                  type: string
                timeSeries:
                  description: If true, archive 3D time series OFDB
                  type: boolean
                unsplitHistory:
                  description: Flag indicating split adjust
                  type: boolean
                useReportOrder:
                  description: If true, archive in report order
                  type: boolean
              required:
                - filename
                - archiveType
              type: object
            backtestDate:
              description: >-
                Specifies the backtest date used when running the screen,
                replacing
                  the backtest date saved in the screen, can be written in YYYYMMDD,
                  MM/DD/YYYY or relative (0, -1, 0/-1/0) format.
                Requires addtional access to use.
              type: string
            globalVariablesMap:
              additionalProperties:
                type: string
              description: >-
                Modifies existing global variables for this calculation request,
                temporarily adds them if they do not already exist

                Variable names can only contain the characters A-Z (case
                insensitive). Variable values must be non-empty.
              type: object
            legacyUniverseType:
              description: >-
                Universe type to open legacy screen with. Must be one of
                "equity", "debt", or "fund". Defaults to "equity".
              type: string
            screenName:
              description: File path to a valid screen
              type: string
          required:
            - screenName
          type: object
      required:
        - data
      type: object
    ScreenCalcParameters:
      properties:
        data:
          description: Object containing screen data
          properties:
            backtestDate:
              description: >-
                Specifies the backtest date used when running the screen,
                replacing the backtest date saved in the screen, can be written
                in YYYYMMDD, MM/DD/YYYY or relative (0, -1, 0/-1/0) format.
                Requires addtional access to use.
              type: string
            globalVariablesMap:
              additionalProperties:
                type: string
              description: >-
                Modifies existing global variables for this calculation request,
                temporarily adds them if they do not already exist

                Variable names can only contain the characters A-Z (case
                insensitive). Variable values must be non-empty.
              type: object
            legacyUniverseType:
              description: >-
                Universe type to open legacy screen with. Must be one of
                "equity", "debt", or "fund". Defaults to "equity".
              type: string
            screenName:
              description: File path to a valid screen
              type: string
          required:
            - screenName
          type: object
      required:
        - data
      type: object
  securitySchemes:
    FactSetApiKey:
      type: http
      scheme: basic
info:
  description: >-
    Through the Universal Screening API, you can access the power of FactSet's
    Universal Screening Application.

    Calculate and return the results of your saved Universal Screens.
  title: Factset Universal Screening API
  version: 2.0.2
openapi: 3.0.2
servers:
  - url: https://api.factset.com/universal-screening
security:
  - FactSetApiKey: []
externalDocs:
  description: Read more about STACH 2.0's column organized schema
  url: https://factset.github.io/stachschema/#/v2/ColumnOrganized
paths:
  /v2/job/archive:
    post:
      description: Begins archive of screen to OFDB. Subject to rate limiting by serial.
      operationId: SubmitArchiveOFDB
      requestBody:
        $ref: '#/components/requestBodies/submitArchiveOFDBRequest'
      responses:
        '202':
          $ref: '#/components/responses/SubmitArchiveOFDBResponse'
        '400':
          $ref: '#/components/responses/Error400InvalidRequest'
        '401':
          $ref: '#/components/responses/Error401Response'
        '429':
          $ref: '#/components/responses/Error429Response'
        '500':
          $ref: '#/components/responses/Generic500ErrorResponse'
      tags:
        - Job
  /v2/job/calculate:
    post:
      description: Begins calculation of screen. Subject to rate limiting by serial.
      operationId: SubmitCalculate
      requestBody:
        $ref: '#/components/requestBodies/submitCalcRequest'
      responses:
        '202':
          $ref: '#/components/responses/SubmitCalculateResponse'
        '400':
          $ref: '#/components/responses/Error400InvalidRequest'
        '401':
          $ref: '#/components/responses/Error401Response'
        '429':
          $ref: '#/components/responses/Error429Response'
        '500':
          $ref: '#/components/responses/Generic500ErrorResponse'
      tags:
        - Job
  /v2/job/{id}/status:
    get:
      description: Polls the job with a given screen ID and returns job status
      operationId: PollCalculate
      parameters:
        - $ref: '#/components/parameters/ScreenCalcID'
      responses:
        '201':
          $ref: '#/components/responses/CalculateSuccessResponse'
        '202':
          $ref: '#/components/responses/CalculateInProgressResponse'
        '401':
          $ref: '#/components/responses/Error401Response'
        '404':
          $ref: '#/components/responses/Error404Response'
        '410':
          $ref: '#/components/responses/Error410Response'
        '500':
          $ref: '#/components/responses/Generic500ErrorResponse'
      tags:
        - Job
  /v2/jobs:
    get:
      description: >-
        Retrieve list of all active job ids started by requester's
        username-serial
      operationId: GetAllActiveJobs
      responses:
        '200':
          $ref: '#/components/responses/ActiveJobsResponse'
        '401':
          $ref: '#/components/responses/Error401Response'
        '404':
          $ref: '#/components/responses/Error404Response'
        '500':
          $ref: '#/components/responses/Generic500ErrorResponse'
      tags:
        - Jobs
    delete:
      description: Delete all active jobs started by the requester's username-serial
      operationId: DeleteAllActiveJobs
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/Error401Response'
        '404':
          $ref: '#/components/responses/Error404Response'
        '500':
          $ref: '#/components/responses/Generic500ErrorResponse'
      tags:
        - Jobs
  /v2/job/{id}:
    delete:
      description: Delete a specified job started by the requester's username-serial
      operationId: DeleteActiveJob
      parameters:
        - $ref: '#/components/parameters/ScreenCalcID'
      responses:
        '204':
          description: No content
        '401':
          $ref: '#/components/responses/Error401Response'
        '404':
          $ref: '#/components/responses/Error404Response'
        '500':
          $ref: '#/components/responses/Generic500ErrorResponse'
      tags:
        - Job
    get:
      description: >-
        Retrieve results of complete screen calculation. Screens with more than
        10,000 rows will be returned in a paginated format. Results may be
        fetched in pages of 1,000 - 100,000 results with 10,000 being the
        default page size.
      operationId: GetCalculateResults
      parameters:
        - $ref: '#/components/parameters/ScreenCalcID'
        - $ref: '#/components/parameters/PaginationLimit'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          $ref: '#/components/responses/PaginatedCalculateResponse'
        '202':
          $ref: '#/components/responses/CalculateInProgressResponse'
        '400':
          $ref: '#/components/responses/Error400ScreenOpen'
        '401':
          $ref: '#/components/responses/Error401Response'
        '404':
          $ref: '#/components/responses/Error404Response'
        '410':
          $ref: '#/components/responses/Error410Response'
        '500':
          $ref: '#/components/responses/Generic500ErrorResponse'
      tags:
        - Job
tags:
  - name: Job
  - name: Jobs