FactSet Portfolio Reporting Batcher API

The PRB API allows clients to trigger existing PRB jobs.

OpenAPI Specification

portfolio-reporting-batcher-openapi-original.yml Raw ↑
openapi: 3.0.0
info:
  title: Factset Portfolio Reporting Batcher
  version: 0.3.0
  description: >-
    The Portfolio Reporting Batcher (PRB) API allows clients to systematically
    leverage functionalities of the PRB application. With the initial release,
    clients can

    - trigger existing jobs

    - check status of running jobs

    - get various details of existing jobs
  license:
    name: Apache License, Version 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  contact:
    name: FactSet Research Systems
    url: https://developer.factset.com/contact
    email: [email protected]
servers:
  - url: https://api.factset.com/analytics/prb/v0
externalDocs:
  description: API Documentation
  url: https://developer.factset.com/api-catalog/portfolio-reporting-batcher-api
paths:
  /jobs/{type}/{name}:
    parameters:
      - schema:
          $ref: '#/components/schemas/jobTypes'
        name: type
        in: path
        required: true
        description: The jobs type
      - schema:
          type: string
        name: name
        in: path
        required: true
        description: The jobs name
    get:
      summary: Factset Get details for the given PRB job
      tags:
        - Jobs
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/jobDetailsResponse'
              examples:
                PA:
                  value:
                    data:
                      documents:
                        my_task_1:
                          - Client:/equity/long_short/my PA document
                        my_task_2:
                          - Client:/equity/long_short/my other PA document
                          - Client:/equity/long_only/my PA document
                      tasks:
                        - my_task_1
                        - my_task_2
                      accounts:
                        my_task_1:
                          - portfolioId: client:/some_path/some_portfolio.actm
                            isSplit: true
                            includeParent: true
                            level: '1'
                            latestComponentsOnly: true
                        my_task_2:
                          - portfolioId: client:/some_other_path/some__other_portfolio.acct
                            isSplit: true
                            includeParent: true
                            level: all
                            latestComponentsOnly: true
                      runs:
                        - statusDescription: job has completed with success
                          status: created
                          prbStatus: success
                          submitTime: '2019-08-24T14:15:22Z'
                          startTime: '2019-08-24T14:15:22Z'
                          endTime: '2019-08-24T14:15:22Z'
                          runDuration: 0
                          isApiTriggered: true
                          id: '565642'
                PD:
                  value:
                    data:
                      documents:
                        default:
                          - Client:/equity/long_short/my document1
                      runs:
                        - statusDescription: job has completed with success
                          status: created
                          prbStatus: success
                          submitTime: '2019-08-24T14:15:22Z'
                          startTime: '2019-08-24T14:15:22Z'
                          endTime: '2019-08-24T14:15:22Z'
                          runDuration: 1235
                          isApiTriggered: true
                          id: '3456'
                PI:
                  value:
                    data:
                      documents:
                        my_task_1:
                          - Client:/equity/long_short/my PA document
                      tasks:
                        - my_task_1
                      accounts:
                        my_task_1:
                          - portfolioId: client:/some_path/some_portfolio.actm
                      runs:
                        - statusDescription: job has completed with success
                          status: created
                          prbStatus: success
                          submitTime: '2019-08-24T14:15:22Z'
                          startTime: '2019-08-24T14:15:22Z'
                          endTime: '2019-08-24T14:15:22Z'
                          runDuration: 4567
                          isApiTriggered: true
                          id: '1234'
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            X-FactSet-Api-RateLimit-Limit:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Limit'
            X-FactSet-Api-RateLimit-Remaining:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Remaining'
            X-FactSet-Api-RateLimit-Reset:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Reset'
        '400':
          description: Invalid post body parameters.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            X-FactSet-Api-RateLimit-Limit:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Limit'
            X-FactSet-Api-RateLimit-Remaining:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Remaining'
            X-FactSet-Api-RateLimit-Reset:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientErrorResponse'
        '401':
          description: Missing or invalid authentication.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
        '403':
          description: User is forbidden with current credentials
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            X-FactSet-Api-RateLimit-Limit:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Limit'
            X-FactSet-Api-RateLimit-Remaining:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Remaining'
            X-FactSet-Api-RateLimit-Reset:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Reset'
        '404':
          description: Not Found - invalid inputs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientErrorResponse'
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            X-FactSet-Api-RateLimit-Limit:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Limit'
            X-FactSet-Api-RateLimit-Remaining:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Remaining'
            X-FactSet-Api-RateLimit-Reset:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Reset'
        '429':
          description: >-
            Rate limit reached. Wait till the time specified in Retry-After
            header value to make further requests.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            Retry-After:
              description: >-
                Time to wait in seconds before making a new request as the rate
                limit has reached.
              schema:
                type: string
        '500':
          description: >-
            Server error. Log the X-DataDirect-Request-Key header to assist in
            troubleshooting.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
        '503':
          description: Request timed out. Retry the request in sometime.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
      operationId: getDetailsForJob
      parameters:
        - schema:
            type: array
            items:
              enum:
                - documents
                - tasks
                - accounts
                - runs
              type: string
            maxItems: 4
          explode: false
          in: query
          name: attribute
          description: >-
            The attribute parameter accepts a list of the given enums, separated
            by commas. Each of them returns the respective data associated with
            the job. Runs returns the run history of the job.
      description: >-
        Use this endpoint to fetch the documents, tasks, accounts, and/or runs
        for the PRB job given in the path. Please note jobs with type PD will
        not return tasks nor accounts so this will be ignored if given as part
        of the array of attributes in the request.
  /runs:
    post:
      summary: Factset trigger PRB jobs
      operationId: startJobRun
      responses:
        '202':
          description: >-
            Expected response, the job has been accepted, please use
            /runs/{id}/status to poll status and check progress
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/startJobRunResponse'
              examples:
                ADF:
                  value:
                    data:
                      jobName: adf_multi_date
                      jobType: ADF
                      id: '123456'
                      status: queued
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            X-FactSet-Api-RateLimit-Limit:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Limit'
            X-FactSet-Api-RateLimit-Remaining:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Remaining'
            X-FactSet-Api-RateLimit-Reset:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Reset'
        '400':
          description: Invalid post body parameters.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            X-FactSet-Api-RateLimit-Limit:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Limit'
            X-FactSet-Api-RateLimit-Remaining:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Remaining'
            X-FactSet-Api-RateLimit-Reset:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientErrorResponse'
        '401':
          description: Missing or invalid authentication.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
        '403':
          description: User is forbidden with current credentials
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            X-FactSet-Api-RateLimit-Limit:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Limit'
            X-FactSet-Api-RateLimit-Remaining:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Remaining'
            X-FactSet-Api-RateLimit-Reset:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Reset'
        '404':
          description: Not Found - invalid inputs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientErrorResponse'
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            X-FactSet-Api-RateLimit-Limit:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Limit'
            X-FactSet-Api-RateLimit-Remaining:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Remaining'
            X-FactSet-Api-RateLimit-Reset:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Reset'
        '429':
          description: >-
            Rate limit reached. Wait till the time specified in Retry-After
            header value to make further requests.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            Retry-After:
              description: >-
                Time to wait in seconds before making a new request as the rate
                limit has reached.
              schema:
                type: string
        '500':
          description: >-
            Server error. Log the X-DataDirect-Request-Key header to assist in
            troubleshooting.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
        '503':
          description: Request timed out. Retry the request in sometime.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
      description: Use this endpoint with with POST method to trigger PRB jobs.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/startJobRoot'
            examples:
              ADF:
                value:
                  data:
                    jobType: ADF
                    jobName: adf_multi_date
                    overrides:
                      dates:
                        start: '2023-11-10'
                        end: '2023-12-10'
                      frequency: daily
                      calendar: sevenDay
                      runAsSerialNumber: '894550'
              PA:
                value:
                  data:
                    jobType: PA
                    jobName: pa_multi_date
                    overrides:
                      tasks:
                        - task_1
                        - task_2
                      runAsSerialNumber: '894550'
              PD:
                value:
                  data:
                    jobType: PD
                    jobName: my_pd_job
              PI:
                value:
                  data:
                    jobType: PI
                    jobName: my_pi_job
                    overrides:
                      runAsSerialNumber: '894550'
              PUB:
                value:
                  data:
                    jobType: PUB
                    jobName: pub_run_daily
                    overrides:
                      runAsOfDate: '2023-02-05'
                      runAsSerialNumber: '894550'
              Vault (No Overrides):
                value:
                  data:
                    jobType: vault
                    jobName: vault_multi_date
              Vault (With Overrides):
                value:
                  data:
                    jobType: vault
                    jobName: vault_multi_date
                    overrides:
                      combinations:
                        - accounts:
                            - CLIENT:/FPS/VAULTED_RETURNS/7DAYS_VLT.ACCT
                            - CLIENT:/FPS/VAULTED_RETURNS/1MONTH.ACCT
                          dates:
                            - '2022-12-24'
                            - '2022-12-23'
        description: >-
          The main object in the request body contains details for the job to be
          triggered. The "name" and "type" fields will uniquely identify the job
          and both must be provided. Other fields can be provided depending on
          the job's type.
      tags:
        - Runs
  /runs/{id}/status:
    get:
      summary: Factset check the status for a particular run ID
      tags:
        - Runs
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/idStatus'
              examples:
                ADF (With Overrides):
                  value:
                    data:
                      status: queued
                      prbStatus: pending
                      statusDescription: string
                      inputs:
                        jobName: my_adf_job
                        jobType: ADF
                        overrides:
                          dates:
                            start: '2023-12-25'
                            end: '2023-12-27'
                          frequency: daily
                          calendar: sevenDay
                          runAsSerialNumber: '894550'
                      id: '34578'
                PA (With Overrides):
                  value:
                    data:
                      status: executing
                      prbStatus: running
                      statusDescription: string
                      inputs:
                        jobName: my_pa_job
                        jobType: PA
                        overrides:
                          tasks:
                            - task_1
                            - task_2
                          runAsSerialNumber: '894550'
                      id: '123456'
                PD (With Overrides):
                  value:
                    data:
                      status: executing
                      prbStatus: running
                      statusDescription: string
                      inputs:
                        jobName: my_pd_job
                        jobType: PD
                        overrides:
                          runAsSerialNumber: '894550'
                      id: '78904'
                PI:
                  value:
                    data:
                      status: queued
                      prbStatus: pending
                      statusDescription: string
                      inputs:
                        jobName: my_pi_job
                        jobType: PI
                      id: '78904'
                PUB (With Overrides):
                  value:
                    data:
                      status: queued
                      prbStatus: pending
                      statusDescription: string
                      inputs:
                        jobName: my_pub_job
                        jobType: PUB
                        overrides:
                          runAsOfDate: '2023-02-05'
                      id: '3456789'
                Vault (No Overrides):
                  value:
                    data:
                      inputs:
                        jobName: my_vault_job
                        jobType: vault
                      status: created
                      prbStatus: success
                      statusDescription: job has completed with success
                      id: '123456'
                Vault (With Overrides):
                  value:
                    data:
                      inputs:
                        jobName: my_vault_job
                        jobType: vault
                        overrides:
                          combinations:
                            - accounts:
                                - CLIENT:/FPS/VAULTED_RETURNS/7DAYS_VLT.ACCT
                                - CLIENT:/FPS/VAULTED_RETURNS/1MONTH.ACCT
                              dates:
                                - '2022-12-24'
                                - '2022-12-23'
                          runAsSerialNumber: '894550'
                      status: created
                      prbStatus: success
                      statusDescription: job has completed with success
                      id: '123456'
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            X-FactSet-Api-RateLimit-Limit:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Limit'
            X-FactSet-Api-RateLimit-Remaining:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Remaining'
            X-FactSet-Api-RateLimit-Reset:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Reset'
        '401':
          description: Missing or invalid authentication.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
        '403':
          description: User is forbidden with current credentials
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            X-FactSet-Api-RateLimit-Limit:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Limit'
            X-FactSet-Api-RateLimit-Remaining:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Remaining'
            X-FactSet-Api-RateLimit-Reset:
              $ref: '#/components/headers/X-FactSet-Api-RateLimit-Reset'
        '429':
          description: >-
            Rate limit reached. Wait till the time specified in Retry-After
            header value to make further requests.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
            Retry-After:
              description: >-
                Time to wait in seconds before making a new request as the rate
                limit has reached.
              schema:
                type: string
        '500':
          description: >-
            Server error. Log the X-DataDirect-Request-Key header to assist in
            troubleshooting.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
        '503':
          description: Request timed out. Retry the request in sometime.
          headers:
            X-DataDirect-Request-Key:
              $ref: '#/components/headers/X-DataDirect-Request-Key'
            X-FactSet-Api-Request-Key:
              $ref: '#/components/headers/X-FactSet-Api-Request-Key'
      operationId: checkRunStatus
      parameters: []
      description: >-
        Use this endpoint to check the status of a run using the id from the
        POST /runs endpoint
    parameters:
      - schema:
          type: string
          example: '1013456'
        name: id
        in: path
        required: true
        description: run id
components:
  schemas:
    accountsForJob:
      additionalProperties:
        description: >-
          An array of the details of the account/s under the task/s in the
          object key/s
        items:
          $ref: '#/components/schemas/accountsForJobAddProp'
        type: array
      description: Please note for PI jobs you will only see portfolioId
      example:
        my_task_1:
          - includeParent: true
            isSplit: true
            latestComponentsOnly: true
            level: string
            portfolioId: string
      title: accountsForJob
      type: object
    accountsForJobAddProp:
      description: The details of the account under the task in the object key
      properties:
        includeParent:
          description: >-
            Indicates whether or not the parent portfolio is included as a
            separate portfolio when isSplit is true
          nullable: true
          type: boolean
        isSplit:
          description: >-
            Indicates whether the portfolio's components if any would be treated
            as individual portfolios when the job is run
          nullable: true
          type: boolean
        latestComponentsOnly:
          description: >-
            When selected, the ACTM/CSTM will be split and will only return
            components that are still held in the ACTM. I.e., when the end date
            is "Latest," it will not return components where the end date occurs
            before Latest.
          nullable: true
          type: boolean
        level:
          description: >-
            The number of levels when isSplit is true that the job will expand
            down to for a composite portfolio (CSTM or ACTM). "1" means only the
            first level will be expanded. "all" will be the value if all levels
            are expanded down.
          nullable: true
          type: string
        portfolioId:
          description: The full file path including portfolio name and type
          type: string
      type: object
    calendar:
      default: fiveDay
      description: Used for ADF jobs only
      enum:
        - fiveDay
        - sevenDay
      example: fiveDay
      title: calendar
      type: string
    clientErrorResponse:
      description: The response schema for reporting errors
      properties:
        errors:
          description: List of errors
          items:
            $ref: '#/components/schemas/error'
          type: array
      type: object
    documentsForJob:
      additionalProperties:
        description: The tasks under each document
        items:
          type: string
        type: array
      description: >-
        Shows the documents for each job where relevant with a collection of
        tasks under each document
      example:
        my_task_1:
          - Client:/equity/long_short/my PA document
        my_task_2:
          - Client:/equity/long_only/my PA document
          - Client:/equity/long_short/my other PA document
      title: documentsForJob
      type: object
    error:
      description: Full details of any error
      properties:
        code:
          description: The error code
          type: string
        detail:
          description: Explanation specific to the occurrence of the error
          type: string
        id:
          description: Identifier for the error
          type: string
        source:
          $ref: '#/components/schemas/errorSource'
        title:
          description: The title of the error
          type: string
      type: object
    errorSource:
      description: The pointer and parameter of the error
      properties:
        parameter:
          description: Indicates which path or URI query parameter caused the error
          type: string
        pointer:
          description: Pointer to the associated entity in the request body
          type: string
      type: object
    frequency:
      default: daily
      description: >-
        Used for ADF job types only. Will determine the frequency between the
        start and end dates.
      enum:
        - daily
        - monthly
        - weekly
      type: string
    idStatus:
      description: >-
        Details about the instance of the job run specified via id wrapped in a
        data object
      properties:
        data:
          description: Details about the instance of the job run specified via id
          properties:
            id:
              description: The run ID
              type: string
            inputs:
              $ref: '#/components/schemas/startJob'
            prbStatus:
              $ref: '#/components/schemas/prbStatus'
            status:
              $ref: '#/components/schemas/status'
            statusDescription:
              $ref: '#/components/schemas/statusDescription'
          type: object
      type: object
    jobDetailsResponse:
      description: >-
        Provides the requested details for the specified job and if no
        attributes are provided, full details will be given
      properties:
        data:
          description: The main object in the jobDetailsResponse schema
          properties:
            accounts:
              $ref: '#/components/schemas/accountsForJob'
            documents:
              $ref: '#/components/schemas/documentsForJob'
            runs:
              description: An array of information for each run
              items:
                $ref: '#/components/schemas/runsForJob'
              type: array
            tasks:
              $ref: '#/components/schemas/tasksForJob'
          type: object
      title: jobDetailsResponse
      type: object
    jobOverrides:
      description: >-
        If this object is provided, the settings given here will override the
        default settings of the job for the job run (settings will only be used
        temporarily and no changes will be made to the default PRB job). Only
        certain objects can be used for certain job types.
      properties:
        calendar:
          $ref: '#/components/schemas/calendar'
        combinations:
          description: An array of date account combinations
          items:
            $ref: '#/components/schemas/jobOverridesCombinationsRoot'
          type: array
        dates:
          description: >-
            Used only for jobs where type is ADF. If using dates override,
            please provide both start date and end date.
          properties:
            end:
              description: The end date in format YYYY-MM-DD
              format: date
              type: string
            start:
              description: The start date in format YYYY-MM-DD
              format: date
              type: string
          type: object
        frequency:
          $ref: '#/components/schemas/frequency'
        runAsOfDate:
          description: PUB
          format: date
          type: string
        runAsSerialNumber:
          description: >-
            The FactSet serial number which has the credentials wanted to run
            the job
          type: string
        tasks:
          description: Used only for jobs where type is PA
          items:
            type: string
          type: array
      type: object
    jobOverridesCombinationsRoot:
      description: >-
        Used for Vault job type only. This creates a matrix of given accounts
        and dates. When the job is run, it will only run for the accounts and
        dates within this object. (Settings will only be used temporarily and no
        changes will be made to the default PRB job.)
      properties:
        accounts:
          description: An array 

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