FactSet Conversational API Powered by FactSet Mercury

The FactSet Conversational API allows clients to white-label core FactSet Mercury capabilities in a client's chatbot experience.

OpenAPI Specification

conversational-api-powered-by-mercury-openapi-original.yml Raw ↑
openapi: 3.0.3
info:
  title: Factset Conversational API Powered by FactSet Mercury
  description: >
    The FactSet Conversational API allows clients to white-label core FactSet
    Mercury capabilities in a client’s chatbot experience.


    Request data from FactSet using a single natural language query. Start the
    response generation using the `/create` endpoint, poll the status using
    `/status`. Once the result is ready, retrieve it using `/result`.


    **Please note:** "Natural language" in this documentation refers to modern
    conversational English. Support for other languages is currently
    unavailable.
  version: 0.1.0
  license:
    name: Apache License, Version 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  contact:
    name: FactSet Research Systems
    email: [email protected]
    url: https://developer.factset.com/contact
servers:
  - url: https://api.factset.com/conversational/v0
paths:
  /create:
    post:
      operationId: createChat
      summary: Factset Create a chat request for a given natural language query.
      description: >
        Returns a chat ID for polling the response to a natural language query
        for financial data.

          This endpoint is an interface for initializing a request for an answer from FactSet Mercury, our large language model for surfacing FactSet datasets through conversational natural language queries. Use the `/create` endpoint to start generating responses for one-off questions. Responses contain a chat ID and status for the chat process.
      tags:
        - Create
      requestBody:
        description: Natural language query for FactSet data
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateChatRequest'
            examples:
              Example question:
                $ref: '#/components/examples/CreateChatRequestExample'
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateChatResponse'
              examples:
                Example question:
                  $ref: '#/components/examples/CreateChatResponseExample'
          headers:
            Location:
              description: Relative URL to check the status of the request.
              schema:
                type: string
                enum:
                  - /status
            Api-Supported-Versions:
              description: Comma-separated list of supported major versions.
              schema:
                type: string
              example: '0'
            Api-Version:
              description: Full semantic version of the API.
              schema:
                type: string
              example: 0.1.0
            RateLimit-Limit:
              description: Request limit per minute.
              schema:
                type: integer
              example: 50
            RateLimit-Remaining:
              description: Number of available requests in the minute.
              schema:
                type: integer
              example: 49
            RateLimit-Reset:
              description: Time remaining (in seconds) until request limit is reset.
              schema:
                type: integer
              example: 24
            X-DataDirect-Request-Key:
              description: FactSet request ID.
              schema:
                type: string
              example: 65C6BC290A11FB4F
            X-RateLimit-Limit-Hour:
              description: Request limit per hour.
              schema:
                type: integer
              example: 1000
            X-RateLimit-Remaining-Hour:
              description: Number of available requests in the hour.
              schema:
                type: integer
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: >-
            Unauthorized - You are not properly authenticated for use of this
            API. Please make sure you are logged in to the developer portal or
            using a valid API key (managed
            [here](https://developer.factset.com/manage-api-keys)) for access.
            If you believe you are seeing this message in error, please reach
            out to your FactSet Support Team representative.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/401UnauthorizedError'
              examples:
                Example error:
                  $ref: '#/components/examples/401UnauthorizedErrorExample'
        '403':
          description: >-
            Forbidden - You do not have the entitlements enabled for this
            service. Please reach out to your FactSet Support Team
            representative to receive the proper entitlements.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/403ForbiddenError'
              examples:
                Example error:
                  $ref: '#/components/examples/403ForbiddenErrorExample'
        '429':
          description: >-
            Too Many Requests - The /create endpoint is currently rate-limited
            to 50 requests per minute and 1000 requests per hour for an
            individual organization. If you are receiving an unexpected amount
            of these errors, please contact the API team at
            [[email protected]]([email protected]).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitExceededError'
              examples:
                Example error:
                  $ref: '#/components/examples/RateLimitExceededErrorExample'
          headers:
            RateLimit-Limit:
              description: Request limit per minute.
              schema:
                type: integer
              example: 50
            RateLimit-Remaining:
              description: Number of available requests.
              schema:
                type: integer
              example: 49
            RateLimit-Reset:
              description: Time remaining (in seconds) until request limit is reset.
              schema:
                type: integer
              example: 24
            Retry-After:
              description: >-
                How long (in seconds) to wait before attempting to send a new
                request.
              schema:
                type: integer
              example: 24
            X-DataDirect-Request-Key:
              description: FactSet request ID.
              schema:
                type: string
              example: 65C6BC290A11FB4F
            X-RateLimit-Limit-Hour:
              description: Request limit per hour.
              schema:
                type: integer
              example: 1000
            X-RateLimit-Remaining-Hour:
              description: Number of available requests in the hour.
              schema:
                type: integer
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /status:
    post:
      operationId: getChatStatus
      summary: Factset Retrieve the status of a chat response process.
      description: >
        Returns the status of a chat response for a given chat conversation ID
        (recevied from the `/create` endpoint). Poll the `/status` endpoint with
        your conversation ID to confirm when your data is ready.

        Answers may take minutes to generate, depending on the complexity of the
        query.
      tags:
        - Status
      requestBody:
        description: ID representing the chat process for your query
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatPollingRequest'
            examples:
              Example request:
                $ref: '#/components/examples/ChatPollingRequestExample'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusPollResponse'
              examples:
                Example question:
                  $ref: '#/components/examples/StatusPollResponseCreatedExample'
          headers:
            Location:
              description: Relative URL to the query response.
              schema:
                type: string
                enum:
                  - /result
            Api-Supported-Versions:
              description: Comma-separated list of supported major versions.
              schema:
                type: string
              example: '0'
            Api-Version:
              description: Full semantic version of the API.
              schema:
                type: string
              example: 0.1.0
            RateLimit-Limit:
              description: Request limit per second.
              schema:
                type: integer
              example: 10
            RateLimit-Remaining:
              description: Number of available requests.
              schema:
                type: integer
              example: 9
            RateLimit-Reset:
              description: Time remaining (in seconds) until request limit is reset.
              schema:
                type: integer
              example: 1
            X-RateLimit-Limit-minute:
              description: Request limit per minute.
              schema:
                type: integer
              example: 300
            X-RateLimit-Remaining-minute:
              description: Number of available requests in the current minute.
              schema:
                type: integer
              example: 290
            X-DataDirect-Request-Key:
              description: FactSet request ID.
              schema:
                type: string
              example: 65C6BC290A11FB4F
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusPollResponse'
              examples:
                Example question:
                  $ref: '#/components/examples/StatusPollResponseAcceptedExample'
          headers:
            Location:
              description: Relative URL to check the status of the request.
              schema:
                type: string
                enum:
                  - /status
            Api-Supported-Versions:
              description: Comma-separated list of supported major versions.
              schema:
                type: string
              example: '0'
            Api-Version:
              description: Full semantic version of the API.
              schema:
                type: string
              example: 0.1.0
            RateLimit-Limit:
              description: Request limit per second.
              schema:
                type: integer
              example: 10
            RateLimit-Remaining:
              description: Number of available requests.
              schema:
                type: integer
              example: 9
            RateLimit-Reset:
              description: Time remaining (in seconds) until request limit is reset.
              schema:
                type: integer
              example: 1
            X-RateLimit-Limit-minute:
              description: Request limit per minute.
              schema:
                type: integer
              example: 300
            X-RateLimit-Remaining-minute:
              description: Number of available requests in the current minute.
              schema:
                type: integer
              example: 290
            X-DataDirect-Request-Key:
              description: FactSet request ID.
              schema:
                type: string
              example: 65C6BC290A11FB4F
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: >-
            Unauthorized - You are not properly authenticated for use of this
            API. Please make sure you are logged in to the developer portal or
            using a valid API key (managed
            [here](https://developer.factset.com/manage-api-keys)) for access.
            If you believe you are seeing this message in error, please reach
            out to your FactSet Support Team representative.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/401UnauthorizedError'
              examples:
                Example error:
                  $ref: '#/components/examples/401UnauthorizedErrorExample'
        '403':
          description: >-
            Forbidden - You do not have the entitlements enabled for this
            service. Please reach out to your FactSet Support Team
            representative to receive the proper entitlements.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/403ForbiddenError'
              examples:
                Example error:
                  $ref: '#/components/examples/403ForbiddenErrorExample'
        '429':
          description: >-
            Too Many Requests - The /status endpoint is currently rate-limited
            to 10 requests per second for an individual organization. If you are
            receiving an unexpected amount of these errors, please contact the
            API team at
            [[email protected]]([email protected]).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitExceededError'
              examples:
                Example error:
                  $ref: '#/components/examples/RateLimitExceededErrorExample'
          headers:
            RateLimit-Limit:
              description: Request limit per second.
              schema:
                type: integer
              example: 10
            RateLimit-Remaining:
              description: Number of available requests.
              schema:
                type: integer
              example: 9
            RateLimit-Reset:
              description: Time remaining (in seconds) until request limit is reset.
              schema:
                type: integer
              example: 1
            Retry-After:
              description: >-
                How long (in seconds) to wait before attempting to send a new
                request.
              schema:
                type: integer
              example: 1
            X-RateLimit-Limit-minute:
              description: Request limit per minute.
              schema:
                type: integer
              example: 300
            X-RateLimit-Remaining-minute:
              description: Number of available requests in the current minute.
              schema:
                type: integer
              example: 290
            X-DataDirect-Request-Key:
              description: FactSet request ID.
              schema:
                type: string
              example: 65C6BC290A11FB4F
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /result:
    post:
      operationId: getChatResult
      summary: Factset Retrieve the completed response for your query.
      description: >
        Returns FactSet content and data in response to the query provided to
        the `/create` endpoint. This endpoint is the final step in the
        single-question request process.

        Responses contain a combination of Microsoft Adaptive Cards for
        data/tables and markdown for text.
      tags:
        - Result
      requestBody:
        description: ID representing the chat process for your query
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatPollingRequest'
            examples:
              Example request:
                $ref: '#/components/examples/ChatPollingRequestExample'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryResponse'
              examples:
                Example question:
                  $ref: '#/components/examples/QueryResponseExample'
          headers:
            Api-Supported-Versions:
              description: Comma-separated list of supported major versions.
              schema:
                type: string
              example: '0'
            Api-Version:
              description: Full semantic version of the API.
              schema:
                type: string
              example: 0.1.0
            RateLimit-Limit:
              description: Request limit per second.
              schema:
                type: integer
              example: 10
            RateLimit-Remaining:
              description: Number of available requests.
              schema:
                type: integer
              example: 9
            RateLimit-Reset:
              description: Time remaining (in seconds) until request limit is reset.
              schema:
                type: integer
              example: 1
            X-RateLimit-Limit-minute:
              description: Request limit per minute.
              schema:
                type: integer
              example: 300
            X-RateLimit-Remaining-minute:
              description: Number of available requests in the current minute.
              schema:
                type: integer
              example: 290
            X-DataDirect-Request-Key:
              description: FactSet request ID.
              schema:
                type: string
              example: 65C6BC290A11FB4F
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: >-
            Unauthorized - You are not properly authenticated for use of this
            API. Please make sure you are logged in to the developer portal or
            using a valid API key (managed
            [here](https://developer.factset.com/manage-api-keys)) for access.
            If you believe you are seeing this message in error, please reach
            out to your FactSet Support Team representative.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/401UnauthorizedError'
              examples:
                Example error:
                  $ref: '#/components/examples/401UnauthorizedErrorExample'
        '403':
          description: >-
            Forbidden - You do not have the entitlements enabled for this
            service. Please reach out to your FactSet Support Team
            representative to receive the proper entitlements.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/403ForbiddenError'
              examples:
                Example error:
                  $ref: '#/components/examples/403ForbiddenErrorExample'
        '429':
          description: >-
            Too Many Requests - The /result endpoint is currently rate-limited
            to 10 requests per second for an individual organization. If you are
            receiving an unexpected amount of these errors, please contact the
            API team at
            [[email protected]]([email protected]).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitExceededError'
              examples:
                Example error:
                  $ref: '#/components/examples/RateLimitExceededErrorExample'
          headers:
            RateLimit-Limit:
              description: Request limit per second.
              schema:
                type: integer
              example: 10
            RateLimit-Remaining:
              description: Number of available requests.
              schema:
                type: integer
              example: 9
            RateLimit-Reset:
              description: Time remaining (in seconds) until request limit is reset.
              schema:
                type: integer
              example: 1
            Retry-After:
              description: >-
                How long (in seconds) to wait before attempting to send a new
                request.
              schema:
                type: integer
              example: 1
            X-RateLimit-Limit-minute:
              description: Request limit per minute.
              schema:
                type: integer
              example: 300
            X-RateLimit-Remaining-minute:
              description: Number of available requests in the current minute.
              schema:
                type: integer
              example: 290
            X-DataDirect-Request-Key:
              description: FactSet request ID.
              schema:
                type: string
              example: 65C6BC290A11FB4F
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  securitySchemes:
    FactSetOAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://auth.factset.com/as/token.oauth2
          scopes: {}
    FactSetApiKey:
      type: http
      scheme: basic
  schemas:
    CreateChatRequest:
      description: Request body containing the query to be sent to the LLM
      properties:
        data:
          type: object
          required:
            - query
          properties:
            query:
              description: Natural language query for FactSet data
              type: string
              title: Query
      required:
        - data
      type: object
    CreateChatResponse:
      description: Response from `/create` containing the chat ID and executing status
      type: object
      properties:
        data:
          type: object
          properties:
            conversationId:
              type: string
              format: uuid
            status:
              type: string
              enum:
                - executing
    ChatPollingRequest:
      description: Request body containing the chat conversation ID
      type: object
      properties:
        data:
          type: object
          properties:
            conversationId:
              type: string
              format: uuid
    StatusPollResponse:
      description: >-
        Response from `/status` containing the chat ID and status of chat
        processing
      type: object
      properties:
        data:
          type: object
          properties:
            conversationId:
              type: string
              format: uuid
            status:
              type: string
              enum:
                - executing
                - created
    QueryResponse:
      description: >-
        Query response body containing data from FactSet's Mercury LLM and
        metadata describing the model interaction
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              format: uuid
            data:
              type: array
              items:
                $ref: '#/components/schemas/FederationData'
      required:
        - data
    Error:
      description: Wrapper containing metadata and appropriate errors as thrown by the API
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorObject'
    ErrorObject:
      description: Represents a single error, with error name and identifiers
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        code:
          type: string
    RateLimitExceededError:
      description: Error response when rate limit has been exceeded.
      type: object
      properties:
        message:
          type: string
          enum:
            - API rate limit exceeded
    401UnauthorizedError:
      description: Error response for a user without authentication to use the API.
      type: string
    403ForbiddenError:
      description: Error response for a user without entitlements to the API.
      type: string
    FederationData:
      description: >-
        Data surfaced by processing the query through FactSet Mercury. Contains
        financial data, if accessible and available, as well as natural language
        answer to the query
      type: object
      properties:
        type:
          description: |
            Data type contained in the FederationData value.
          type: string
          enum:
            - string
            - AdaptiveCard
            - NextStep
          nullable: true
        value:
          $ref: '#/components/schemas/FederationDataValue'
    FederationDataValue:
      oneOf:
        - $ref: '#/components/schemas/String'
        - $ref: '#/components/schemas/AdaptiveCard'
        - $ref: '#/components/schemas/NextStep'
    String:
      description: >
        String: Chat response to the query. Provides an answer to the question
        or references further attached data. `Value` property of parent
        FederationData contains a string with natural language.
      type: string
    AdaptiveCard:
      description: >
        AdaptiveCard: Microsoft Adaptive Card containing response data surfaced
        from FactSet content sets. `Value` property of parent FederationData
        contains a JSON serialized presentation of a Microsoft Adaptive Card.
        See [Microsoft docs](https://learn.microsoft.com/en-us/adaptive-cards/)
        for Adaptive Card documentation, and the [Adaptive Card schema
        explorer](https://adaptivecards.io/explorer/) for schema details.
      type: object
      properties:
        data:
          type: object
          properties:
            type:
              type: string
            version:
              type: string
          required:
            - type
            - version
          additionalProperties: true
    NextStep:
      description: >
        NextStep: A serialized list of `action` items, which are directives to a
        front-end application to perform a certain task i.e. open a FactSet
        application or component, download an Excel file.
      type: array
      items:
        anyOf:
          - $ref: '#/components/schemas/OpenComponent'
          - $ref: '#/components/schemas/OpenUrl'
          - $ref: '#/components/schemas/OpenActiveGraph'
    OpenComponent:
      type: object
      properties:
        action:
          type: string
          enum:
            - OpenComponent
        name:
          type: string
        label:
          type: string
        category:
          type: string
        parameters:
          type: object
        report:
          type: object
          properties:
            fdsup:
              type: string
            http:
              type: string
    OpenUrl:
      type: object
      properties:
        action:
          type: string
          enum:
            - OpenUrl
        label:
          type: string
        category:
          type: string
        url:
          type: object
          properties:
            fdsup:
              type: string
            http:
              type: string
    OpenActiveGraph:
      type: object
      properties:
        action:
          type: string
          enum:
            - OpenActiveGraph
        label:
          type: string
        xml:
          type: string
  examples:
    CreateChatRequestExample:
      value:
        data:
          query: What is Tesla's enterprise value?
    CreateChatResponseExample:
      value:
        data:
          conversationId: 9c1031c2-5463-47ae-81b3-126a68f0c2a6
          status: executing
    ChatPollingRequestExample:
      value:
        data:
          conversationId: 9c1031c2-5463-47ae-81b3-126a68f0c2a6
    StatusPollResponseAcceptedExample:
      value:
        data:
          conversationId: 9c1031c2-5463-47ae-81b3-126a68f0c2a6
          status: executing
    StatusPollResponseCreatedExample:
      value:
        data:
          conversationId: 9c1031c2-5463-47ae-81b3-126a68f0c2a6
          status: created
    QueryResponseExample:
      value:
        data:
          id: 9c1031c2-5463-47ae-81b3-126a68f0c2a6
          data:
            - type: string
              value: >-
                These banks are ranked to compare the percentage of commercial
                real estate (CRE) loans to their total loan portfolios to show
                which have the least exposure to the downturn in commercial
                occupancy rates.
            - type: AdaptiveCard
              value:
                type: AdaptiveCard
                version: '1.3'
                body:
                  - type: TextBlock
                    size: large
                    weight: lighter
                    text: Tesla, Inc. (TSLA-US)
                  - type: ColumnSet
                    columns:
                      - type: Column
                        width: auto
                        items:
                          - type: TextBlock
                            size: extraLarge
                            text: $619.4 B
                        verticalContentAlignment: bottom
                        spacing: extraLarge
                      - type: Column
                        width: auto
                        items:
                          - type: TextBlock
                            size: medium
                            color: light
                            text: Enterprise Value
                        verticalContentAlignment: bottom
                        spacing: extraLarge
                  - type: Image
                    url: >-
                      data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MDAiIGhlaWdodD0iMTgwIiB2aWV3Qm94PSIwIDAgNDAwIDE4MCI+PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDQwMCAxODAiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHBvaW50ZXItZXZlbnRzOiBub25lOyBsZWZ0OiAwcHg7IHRvcDogMHB4OyI+PGRlZnM+PGNsaXBQYXRoIGlkPSJDTElQMCI+PHBhdGggZD0iTSA1IDExIEwgMzUyIDExIEwgMzUyIDE1MiBMIDUgMTUyIFoiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0iQ0xJUDEiPjxwYXRoIGQ9Ik0gNSAxMSBMIDM1MiAxMSBMIDM1MiAxNTIgTCA1IDE1MiBaIi8+PC9jbGlwUGF0aD48L2RlZnM+PGcgbGluZS1taXRlcj0iNCIgc3R5bGU9InRyYW5zZm9ybTogc2NhbGUoMSwgMSk7Ij48ZyBvcGFjaXR5PSIwLjIiPjxwYXRoIGQ9Ik0gNS41IDE1MiBMIDUuNSAxMSBNIDg3LjUgMTUyIEwgODcuNSAxMSBNIDE2OS41IDE1MiBMIDE2OS41IDExIE0gMjUwLjUgMTUyIEwgMjUwLjUgMTEgTSAzMzIuNSAxNTIgTCAzMzIuNSAxMSBNIDUgMTUyLjUgTCAzNTIgMTUyLjUgTSA1IDEzMi41IEwgMzUyIDEzMi41IE0gNSAxMTIuNSBMIDM1MiAxMTIuNSBNIDUgOTIuNSBMIDM1MiA5Mi41IE0gNSA3MS41IEwgMzUyIDcxLjUgTSA1IDUxLjUgTCAzNTIgNTEuNSBNIDUgMzEuNSBMIDM1MiAzMS41IE0gNSAxMS41IEwgMzUyIDExLjUiIGZpbGw9Im5vbmUiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIgc3Ryb2tlPSJyZ2IoMTA5LDExNywxMzYpIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNIDUgMTUyLjUgTCAzNTIgMTUyLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiKDUxLDYzLDc2KSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHBhdGggZD0iTSA1LjUgMTYxIEwgNS41IDE1MiBNIDg3LjUgMTYxIEwgODcuNSAxNTIgTSAxNjkuNSAxNjEgTCAxNjkuNSAxNTIgTSAyNTAuNSAxNjEgTCAyNTAuNSAxNTIgTSAzMzIuNSAxNjEgTCAzMzIuNSAxNTIgTSA1LjUgMTU3IEwgNS41IDE1MiBNIDI1LjUgMTU3IEwgMjUuNSAxNTIgTSA0Ni41IDE1NyBMIDQ2LjUgMTUyIE0gNjYuNSAxNTcgTCA2Ni41IDE1MiBNIDg3LjUgMTU3IEwgODcuNSAxNTIgTSAxMDcuNSAxNTcgTCAxMDcuNSAxNTIgTSAxMjcuNSAxNTcgTCAxMjcuNSAxNTIgTSAxNDguNSAxNTcgTCAxNDguNSAxNTIgTSAxNjkuNSAxNTcgTCAxNjkuNSAxNTIgTSAxODkuNSAxNTcgTCAxODkuNSAxNTIgTSAyMDkuNSAxNTcgTCAyMDkuNSAxNTIgTSAyMzAuNSAxNTcgTCAyMzAuNSAxNTIgTSAyNTAuNSAxNTcgTCAyNTAuNSAxNTIgTSAyNzEuNSAxNTcgTCAyNzEuNSAxNTIgTSAyOTEuNSAxNTcgTCAyOTEuNSAxNTIgTSAzMTEuNSAxNTcgTCAzMTEuNSAxNTIgTSAzMzIuNSAxNTcgTCAzMzIuNSAxNTIgTSAzNTIuNSAxNTcgTCAzNTIuNSAxNTIiIGZpbGw9Im5vbmUiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIgc3Ryb2tlPSJyZ2IoMTA5LDExNywxMzYpIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJ

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/factset/refs/heads/main/openapi/conversational-api-powered-by-mercury-openapi-original.yml