FactSet Vermilion API

The Vermilion API, enables users to programmatically access FactSet's Vermilion Reporting Suite (VRS) and seamlessly integrate into customer's 3rd party applications. The API is referred to as two key product initiatives, the REST API and the SCIM API.

OpenAPI Specification

vermilion-openapi-original.yml Raw ↑
openapi: 3.0.0
info:
  version: 1.0.0
  title: Factset VRS API documentation
  contact:
    name: FactSet Research Systems
    email: [email protected]
    url: https://developer.factset.com/contact
  license:
    name: Apache License, Version 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  description: Documentation on all available end points in the VRSAPI
security:
  - FactSetApiKey: []
  - FactSetOAuth2: []
externalDocs:
  description: API Documentation
  url: https://developer.factset.com/api-catalog/vermilion-api
tags:
  - name: Data Sources
  - name: Entities
  - name: Report Instances
  - name: Reports
  - name: Scim
paths:
  /v1/{tenant}/data-sources:
    get:
      operationId: getAllDataSources
      tags:
        - Data Sources
      summary: Factset Lists all datasources
      description: List all datasources the user has permission to see
      parameters:
        - in: path
          name: tenant
          description: The code of the tenancy
          schema:
            type: string
          required: true
        - in: query
          name: _sort
          description: >-
            The column to sort on. Append - to sort in descending order. If
            parameter is not given, no sorting will be done
          required: false
          style: form
          explode: false
          schema:
            type: array
            maxItems: 1
            items:
              type: string
          examples:
            name:
              value:
                - name
              description: The name of the datasource to sort
            type:
              value:
                - type
              description: The type of the datasource to sort
            outputRecordSet:
              value:
                - outputRecordSet
              description: The output recordset of the datasource to sort
            code:
              value:
                - code
              description: The code of the datasource to sort
            releaseTag:
              value:
                - releaseTag
              description: The release tag of the datasource to sort
            lastUpdatedBy:
              value:
                - lastUpdatedBy
              description: The last updated by user of the datasource to sort
            lastUpdated:
              value:
                - lastUpdated
              description: The last updated by date of the datasource to sort
        - in: query
          name: _paginationLimit
          description: Non-negative maximum number of entries to return. Default is 25
          schema:
            type: integer
          examples:
            pageSize:
              value: 25
              description: Non-negative maximum number of entries to return
        - in: query
          name: _paginationOffset
          description: Non-negative number of entries to skip. Default is 0
          schema:
            type: integer
          examples:
            startIndex:
              value: 0
              description: Non-negative number of entries to skip
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSourceList'
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthenticated
                    title: User is not authenticated
        '403':
          description: No permissions to view datasources in VRS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthorized
                    title: No permissions to view this item
        '406':
          description: >-
            Unsupported Accept header. Header needs to be set to
            application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAcceptable
                    title: >-
                      Unsupported Accept header. Header needs to be set to
                      application/json
  /v1/{tenant}/data-sources/{dataSourceCode}:
    get:
      operationId: getDataSourceByCode
      tags:
        - Data Sources
      summary: Factset Gets a datasource
      description: Gets a datasource based on the code passed
      parameters:
        - in: path
          name: tenant
          description: The code of the tenancy
          schema:
            type: string
          required: true
        - in: path
          name: dataSourceCode
          description: The code of the datasource
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSourceData'
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthenticated
                    title: User is not authenticated
        '403':
          description: No permissions to view datasources in VRS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthorized
                    title: No permissions to view this item
        '404':
          description: The supplied datasource code was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notFound
                    title: The datasource code passed was not found
        '406':
          description: >-
            Unsupported Accept header. Header needs to be set to
            application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAcceptable
                    title: >-
                      Unsupported Accept header. Header needs to be set to
                      application/json
  /v1/{tenant}/data-sources/{dataSourceCode}/data:
    get:
      operationId: getDataSourceData
      tags:
        - Data Sources
      summary: Factset Gets the data for the datasource
      description: >-
        Gets the data for the datasource. There are optional query parameters to
        filter the data
      parameters:
        - in: path
          name: tenant
          description: The code of the tenancy
          schema:
            type: string
          required: true
        - in: path
          name: dataSourceCode
          description: The code of the datasource
          schema:
            type: string
          required: true
        - in: query
          name: entityCodes
          description: >-
            A series of query parameter used to filter the data for a
            datasource. This represents the entities for the datasource. E.g.:
            entityCodes=ACCOUNT&entityCodes=FUNDS
          schema:
            type: string
        - in: query
          name: entityKeys
          description: >-
            A series of query parameter used to filter the data for a
            datasource. This is the entity key value for an entity selection.
            E.g.: entityKeys=1&entityKeys=Test2
          schema:
            type: string
        - in: query
          name: _paginationLimit
          description: Non-negative maximum number of entries to return. Default is 25
          schema:
            type: integer
          examples:
            pageSize:
              value: 25
              description: Non-negative maximum number of entries to return
        - in: query
          name: _paginationOffset
          description: Non-negative number of entries to skip. Default is 0
          schema:
            type: integer
          examples:
            startIndex:
              value: 0
              description: Non-negative number of entries to skip
      responses:
        '200':
          description: Successful operation - returns data for the datasource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSourceDataInstance'
        '400':
          description: >-
            The supplied datasource code was either missing or invalid, or the
            query parameters are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: parameterError
                    title: The datasource code passed was invalid
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthenticated
                    title: User is not authenticated
        '403':
          description: No permissions to view datasources in VRS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthorized
                    title: No permissions to view this item
        '404':
          description: The supplied datasource code was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notFound
                    title: The datasource code passed was not found
        '406':
          description: >-
            Unsupported Accept header. Header needs to be set to
            application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAcceptable
                    title: >-
                      Unsupported Accept header. Header needs to be set to
                      application/json
  /v1/{tenant}/entities/{entityCode}/values:
    get:
      operationId: getEntityValuesByCode
      tags:
        - Entities
      summary: Factset Gets the entity values
      description: Gets the entity values for the specified entity
      parameters:
        - in: path
          name: tenant
          description: The code of the tenancy
          schema:
            type: string
          required: true
        - in: path
          name: entityCode
          description: The code of the entity
          schema:
            type: string
          required: true
        - in: query
          name: _sort
          description: >-
            The entity field to sort on. Can only be sorted on entity key,
            description or secondary key fields. Append "-" to sort in
            descending order. If no parameter given, it will be sorted by key
            field in ascending order by default
          required: false
          style: form
          explode: false
          schema:
            type: array
            maxItems: 1
            items:
              type: string
          examples:
            entity key field:
              value:
                - entity key field
              description: The name of the entity key field
            entity description field:
              value:
                - entity description field
              description: The name of the entity description field
            entity secondary key field:
              value:
                - entity secondary key field
              description: The name of the entity secondary key field
        - in: query
          name: _paginationLimit
          description: Non-negative maximum number of entries to return. Default is 25
          schema:
            type: integer
          examples:
            pageSize:
              value: 25
              description: Non-negative maximum number of entries to return
        - in: query
          name: _paginationOffset
          description: Non-negative number of entries to skip. Default is 0
          schema:
            type: integer
          examples:
            startIndex:
              value: 0
              description: Non-negative number of entries to skip
        - in: query
          name: showAll
          description: >-
            Whether to show all field values for each entity row. Value should
            either be 1 or 0. Default is 0 (false)
          schema:
            type: integer
          examples:
            showAll:
              value: 1
              description: >-
                Show all field values in a JSON array named "fieldsWithValues",
                with each array value being a string in the format of
                "**<FIELD_NAME> : <FIELD_VALUE>**". Both key and description
                field values will be included in this JSON array too.
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityFieldValueDTO'
        '400':
          description: >-
            The supplied entity code was either missing or invalid, or the
            entity was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: parameterError
                    title: The entity code passed was invalid
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthenticated
                    title: User is not authenticated
        '403':
          description: No permissions to view datasources in VRS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthorized
                    title: No permissions to view this item
        '404':
          description: The supplied entity code was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notFound
                    title: The entity code passed was not found
        '406':
          description: >-
            Unsupported Accept header. Header needs to be set to
            application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAcceptable
                    title: >-
                      Unsupported Accept header. Header needs to be set to
                      application/json
  /v1/{tenant}/reports:
    get:
      operationId: getAllReportDefinitions
      tags:
        - Reports
      summary: Factset Gets all report definitions
      description: Gets all report definitions the user has permissions for
      parameters:
        - in: path
          name: tenant
          description: The code of the tenancy
          schema:
            type: string
          required: true
        - in: query
          name: _sort
          description: The column to sort on. Can add - to sort
          required: false
          style: form
          explode: false
          schema:
            type: array
            maxItems: 1
            items:
              type: string
          examples:
            name:
              value:
                - name
              description: The name of the report to sort
            type:
              value:
                - templateOwner
              description: The template owner of the report to sort
            code:
              value:
                - code
              description: The code of the report to sort
            releaseTag:
              value:
                - releaseTag
              description: The release tag of the report to sort
            lastUpdatedBy:
              value:
                - lastUpdatedBy
              description: The last updated by user of the report to sort
            lastModifiedBy:
              value:
                - lastModifiedBy
              description: The last updated by date of the report to sort
        - in: query
          name: _paginationLimit
          description: Non-negative maximum number of entries to return
          schema:
            type: integer
          examples:
            pageSize:
              value: 25
              description: Non-negative maximum number of entries to return
        - in: query
          name: _paginationOffset
          description: Non-negative number of entries to skip
          schema:
            type: integer
          examples:
            startIndex:
              value: 0
              description: Non-negative maximum number of entries to return
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportDefinitionList'
        '400':
          description: >-
            The supplied report definition code was either missing or invalid,
            or the report definition was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: parameterError
                    title: The report definition code passed was invalid
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthenticated
                    title: User is not authenticated
        '403':
          description: No permissions to view reports in VRS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthorized
                    title: No permissions to view this item
        '406':
          description: >-
            Unsupported Accept header. Header needs to be set to
            application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAcceptable
                    title: >-
                      Unsupported Accept header. Header needs to be set to
                      application/json
  /v1/{tenant}/reports/{reportDefinitionCode}:
    get:
      operationId: getReportDefinitionByCode
      tags:
        - Reports
      summary: Factset Gets a report definition
      description: Gets a report defintion based on the code specified
      parameters:
        - in: path
          name: tenant
          description: The code of the tenancy
          schema:
            type: string
          required: true
        - in: path
          name: reportDefinitionCode
          description: The code of the report definition
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportDefinitionData'
        '400':
          description: >-
            The supplied report definition code was either missing or invalid,
            or the report definition was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: parameterError
                    title: The report definition code passed was invalid
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthenticated
                    title: User is not authenticated
        '403':
          description: No permissions to view reports in VRS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthorized
                    title: No permissions to view this item
        '404':
          description: The supplied report definition code was was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notFound
                    title: The report definition code passed was not found
        '406':
          description: >-
            Unsupported Accept header. Header needs to be set to
            application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAcceptable
                    title: >-
                      Unsupported Accept header. Header needs to be set to
                      application/json
  /v1/report-instances/generate:
    post:
      operationId: generateReport
      tags:
        - Report Instances
      summary: Factset Generates a report
      description: >-
        Generates a report using the specified ID and the JSON in the request
        body
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportGenerationRequestBody'
            example:
              vrs:
                '1':
                  report: MONTHLY_REPORT
                  tenancy: CLIENT_REPORTING
                  outputFormat: PDF
                  sectionFilter: Section One
                  priority: '2'
                  startDate: 15 December 2023 00:00:00
                  entitySelection:
                    ACCOUNT:
                      key: Account name
                    PORTFOLIO:
                      key: Test fund
                    DATE:
                      key: '2020-01-01 00:00:00'
      responses:
        '202':
          description: >-
            Report generation request succeeded and report generation is in
            progress
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportInstanceDataResponse'
          headers:
            Location:
              schema:
                type: string
              description: >-
                End point location to retrieve the latest status of the report
                generation. This is
                v1/{tenant}/report-instances/{reportInstanceId}
        '400':
          description: >-
            The supplied report definition code was either missing or invalid,
            or the report definition was not found
          headers:
            Location:
              schema:
                type: string
              description: >-
                End point location to retrieve the latest status of the report
                generation. This is
                v1/{tenant}/report-instances/{reportInstanceId}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: parameterError
                    title: The report definition code passed was invalid
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthenticated
                    title: User is not authenticated
          headers:
            Location:
              schema:
                type: string
              description: >-
                End point location to retrieve the latest status of the report
                generation. This is
                v1/{tenant}/report-instances/{reportInstanceId}
        '403':
          description: No permissions to view reports in VRS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthorized
                    title: No permissions to view this item
        '404':
          description: The report code could not be found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notFound
                    title: The report definition code passed was not found
        '406':
          description: >-
            Unsupported Accept header. Header needs to be set to
            application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAcceptable
                    title: >-
                      Unsupported Accept header. Header needs to be set to
                      application/json
  /v1/{tenant}/report-instances/{reportInstanceId}:
    delete:
      operationId: cancelReport
      tags:
        - Report Instances
      summary: Factset Cancels a report generation
      description: >-
        Sends a request to cancel a report generation based on the report
        instance id passed
      parameters:
        - in: path
          name: tenant
          description: The code of the tenancy
          schema:
            type: string
          required: true
        - in: path
          name: reportInstanceId
          description: The id of the report instance
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Successful operation - no response
        '400':
          description: The supplied report instance id was either missing or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: parameterError
                    title: The ID passed is not a numerical value
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthenticated
                    title: User is not authenticated
        '403':
          description: No permissions to view reports in VRS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAuthorized
                    title: No permissions to view this item
        '404':
          description: The supplied report instance ID could not be found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notFound
                    title: The report definition code passed was not found
        '406':
          description: >-
            Unsupported Accept header. Header needs to be set to
            application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: notAcceptable
                    title: >-
                      Unsupported Accept header. Header needs to be set to
                      application/json
    get:
      operationId: getReportInstanceById
      tags:
        - Report Instances
      summary: Factset Gets a report instance based on the ID
      description: Gets a report instance object based on the ID passed
      parameters:
        - in: path
          name: reportInstanceId
          description: The ID of the report instance
          schema:
            type: string
          required: true
        - in: path
          name: tenant
          description: The code of the tenancy
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Report generation has completed and the report is ready to download
          headers:
            Location:
              schema:
                type: string
              description: A callback URL to the report file on VRS ready to download
        '202':
          description: >-
            Expected response returned if the report generation is not yet
            completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportInstanceData'
        '400':
          description: >-
            The supplied report instance id was either missing or invalid, or
            the report instance was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              example:
                errors:
                  - id: ID of the error
                    code: parameterError
                    title: The ID passed is not a numerical value
        '401':
          description: Unauthorised
          content:
            application/json:
              schema:
 

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