Charthop scenario API

The scenario API from Charthop — 13 operation(s) for scenario.

Operations 16

GET /v1/org/{orgId}/scenario Return all scenarios in the organization paginated #
POST /v1/org/{orgId}/scenario Create a scenario #
POST /v1/org/{orgId}/scenario/bulk/archive Archive a set of scenarios #
POST /v1/org/{orgId}/scenario/bulk/delete Delete a set of scenarios #
POST /v1/org/{orgId}/scenario/bulk/unarchive Unarchive a set of scenarios #
GET /v1/org/{orgId}/scenario/{scenarioId} Return a particular scenario by id #
PATCH /v1/org/{orgId}/scenario/{scenarioId} Update an existing scenario #
DELETE /v1/org/{orgId}/scenario/{scenarioId} Delete a scenario #
GET /v1/org/{orgId}/scenario/{scenarioId}/audit-log Return past audit log events for a scenario, paginated #
POST /v1/org/{orgId}/scenario/{scenarioId}/combine Combine multiple scenarios into another scenario #
POST /v1/org/{orgId}/scenario/{scenarioId}/dates Adjust the dates of the changes in a scenario #
POST /v1/org/{orgId}/scenario/{scenarioId}/export/audit Export a scenario's audit log #
POST /v1/org/{orgId}/scenario/{scenarioId}/merge Merge a scenario into the primary timeline #
POST /v1/org/{orgId}/scenario/{scenarioId}/recalculate-metadata Manually recalculate a scenario's metadata #
POST /v1/org/{orgId}/scenario/{scenarioId}/update-shared-view Update a scenario view config #
POST /v1/org/{orgId}/scenario/{scenarioId}/update-shared-views Upsert multiple scenario view configs in a single atomic request #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/charthop-scenario-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

charthop-scenario-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: REST API for ChartHop
  version: V1.0.0
  title: ChartHop access Scenario API
  contact:
    name: ChartHop
    url: https://www.charthop.com
    email: support@charthop.com
servers:
- url: https://localhost
- url: http://localhost
tags:
- name: scenario
paths:
  /v1/org/{orgId}/scenario:
    get:
      tags:
      - scenario
      summary: Return all scenarios in the organization paginated
      operationId: findScenarios
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: from
        in: query
        description: Scenario id to start paginating from
        required: false
        schema:
          type: string
      - name: status
        in: query
        description: Scenario status to filter by
        required: false
        schema:
          type: string
          enum:
          - OPEN
          - INACTIVE
          - MERGED
          - DRAFT
          - ARCHIVED
      - name: limit
        in: query
        description: Number of results to return
        required: false
        schema:
          type: integer
          format: int32
      - name: returnAccess
        in: query
        description: 'Return access information -- pass a list of actions to check, for example: create,update,delete'
        required: false
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultsScenario'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
    post:
      tags:
      - scenario
      summary: Create a scenario
      operationId: createScenario
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: silent
        in: query
        description: Suppress notification emails
        required: false
        schema:
          type: boolean
      - name: skipChangeCreation
        in: query
        description: Skip over change creation for PROMOTION scenarios
        required: false
        schema:
          type: boolean
      responses:
        '201':
          description: scenario created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Scenario'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: org not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateScenario'
        description: Scenario data to create
        required: true
  /v1/org/{orgId}/scenario/bulk/archive:
    post:
      tags:
      - scenario
      summary: Archive a set of scenarios
      operationId: bulkArchiveScenarios
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              type: array
              uniqueItems: true
              items:
                type: string
                example: 588f7ee98f138b19220041a7
        description: List of scenario ids to archive
        required: true
  /v1/org/{orgId}/scenario/bulk/delete:
    post:
      tags:
      - scenario
      summary: Delete a set of scenarios
      operationId: bulkDeleteScenarios
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              type: array
              uniqueItems: true
              items:
                type: string
                example: 588f7ee98f138b19220041a7
        description: List of scenario ids to delete
        required: true
  /v1/org/{orgId}/scenario/bulk/unarchive:
    post:
      tags:
      - scenario
      summary: Unarchive a set of scenarios
      operationId: bulkUnarchiveScenarios
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              type: array
              uniqueItems: true
              items:
                type: string
                example: 588f7ee98f138b19220041a7
        description: List of scenario ids to unarchive
        required: true
  /v1/org/{orgId}/scenario/{scenarioId}:
    get:
      tags:
      - scenario
      summary: Return a particular scenario by id
      operationId: getScenario
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Scenario'
        '400':
          description: bad request
        '404':
          description: not found
    patch:
      tags:
      - scenario
      summary: Update an existing scenario
      operationId: updateScenario
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id
        required: true
        schema:
          type: string
      - name: silent
        in: query
        description: Suppress notification emails
        required: false
        schema:
          type: boolean
      responses:
        '204':
          description: scenario updated
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateScenario'
        description: Scenario data to update
        required: true
    delete:
      tags:
      - scenario
      summary: Delete a scenario
      operationId: deleteScenario
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id
        required: true
        schema:
          type: string
      responses:
        '204':
          description: scenario deleted
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
  /v1/org/{orgId}/scenario/{scenarioId}/audit-log:
    get:
      tags:
      - scenario
      summary: Return past audit log events for a scenario, paginated
      operationId: getScenarioAuditLog
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to return
        required: false
        schema:
          type: integer
          format: int32
      - name: from
        in: query
        description: Timestamp to start search at
        required: false
        schema:
          type: string
      - name: format
        in: query
        description: Data format to use; default is json, can also use json-extended or json-readable
        required: false
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultsEvent'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
  /v1/org/{orgId}/scenario/{scenarioId}/combine:
    post:
      tags:
      - scenario
      summary: Combine multiple scenarios into another scenario
      operationId: combineScenarios
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id to combine the other scenarios into
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CombineScenarioRequest'
        required: true
  /v1/org/{orgId}/scenario/{scenarioId}/dates:
    post:
      tags:
      - scenario
      summary: Adjust the dates of the changes in a scenario
      operationId: adjustDatesScenario
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdjustScenarioDateRequest'
        required: true
  /v1/org/{orgId}/scenario/{scenarioId}/export/audit:
    post:
      tags:
      - scenario
      summary: Export a scenario's audit log
      operationId: exportScenarioAuditLog
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id
        required: true
        schema:
          type: string
      responses:
        '201':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '400':
          description: bad request
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties:
                type: object
        description: Export options
        required: true
  /v1/org/{orgId}/scenario/{scenarioId}/merge:
    post:
      tags:
      - scenario
      summary: Merge a scenario into the primary timeline
      operationId: mergeScenario
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id to merge
        required: true
        schema:
          type: string
      - name: skipErrors
        in: query
        description: If passed, will skip any changes that fail validation
        required: true
        schema:
          type: boolean
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
  /v1/org/{orgId}/scenario/{scenarioId}/recalculate-metadata:
    post:
      tags:
      - scenario
      summary: Manually recalculate a scenario's metadata
      operationId: recalculateScenarioMetadata
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScenarioMetadata'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
  /v1/org/{orgId}/scenario/{scenarioId}/update-shared-view:
    post:
      tags:
      - scenario
      summary: Update a scenario view config
      operationId: updateScenarioSharedView
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id
        required: true
        schema:
          type: string
      responses:
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScenarioSharedViewConfig'
        required: true
  /v1/org/{orgId}/scenario/{scenarioId}/update-shared-views:
    post:
      tags:
      - scenario
      summary: Upsert multiple scenario view configs in a single atomic request
      operationId: updateScenarioSharedViews
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        description: Scenario id
        required: true
        schema:
          type: string
      responses:
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ScenarioSharedViewConfig'
        description: Shared view configs to upsert, each matched and replaced by type
        required: true
components:
  schemas:
    UpdateScenario:
      type: object
      properties:
        name:
          type: string
          description: scenario name
          example: Q4 Conservative Plan
          minItems: 1
          maxItems: 80
        description:
          type: string
          description: scenario description
          example: Q4 Conservative Plan
          minItems: 0
          maxItems: 2000
        startDate:
          type: string
          format: date
          description: date that this scenario diverges from primary
          example: '2017-01-15'
        status:
          type: string
          description: status of scenario
          enum:
          - OPEN
          - INACTIVE
          - MERGED
          - DRAFT
          - ARCHIVED
        shareAccess:
          type: array
          description: users who are specifically granted permission to this scenario
          items:
            $ref: '#/components/schemas/ShareAccess'
        startDateFixed:
          type: string
          description: whether or not the start date should stay fixed in time, or update to today's date as time passes
          enum:
          - FIXED
          - TODAY
        validJobIdSet:
          type: array
          description: This scenario changes are restricted to the following jobIds
          uniqueItems: true
          items:
            type: string
            example: 588f7ee98f138b19220041a7
        entityId:
          type: string
          description: The entity this scenario is associated with
          example: 588f7ee98f138b19220041a7
        entityType:
          type: string
          description: The type of entity associated with this scenario
          enum:
          - COMP_REVIEW
        sharedViewConfig:
          type: array
          description: View configurations associated with this scenario
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ScenarioSharedViewConfig'
        budget:
          description: Total budget associated with the scenario
          $ref: '#/components/schemas/Money'
    CreateScenario:
      type: object
      required:
      - name
      - startDateFixed
      properties:
        name:
          type: string
          description: scenario name
          example: Q4 Conservative Plan
          minItems: 1
          maxItems: 80
        description:
          type: string
          description: scenario description
          example: Q4 Conservative Plan
          minItems: 0
          maxItems: 2000
        startDate:
          type: string
          format: date
          description: date that this scenario diverges from primary
          example: '2017-01-15'
        status:
          type: string
          description: status of scenario
          enum:
          - OPEN
          - INACTIVE
          - MERGED
          - DRAFT
          - ARCHIVED
        shareAccess:
          type: array
          description: users who are specifically granted permission to this scenario
          items:
            $ref: '#/components/schemas/ShareAccess'
        type:
          type: string
          description: Type of scenario to be created
          enum:
          - GENERAL
          - COMP
          - PROMOTION
          - TERMINATE
          - CREATE_JOB
          - UPDATE_JOB
          - BUDGET
          - BACKFILL
        startDateFixed:
          type: string
          description: whether or not the start date should stay fixed in time, or update to today's date as time passes
          enum:
          - FIXED
          - TODAY
        query:
          type: string
          description: Query for selecting which people/jobs are initially included in the scenario (only applies to promotion scenarios)
        validJobIdSet:
          type: array
          description: This scenario changes are restricted to the following jobIds
          uniqueItems: true
          items:
            type: string
            example: 588f7ee98f138b19220041a7
        entityId:
          type: string
          description: The entity this scenario is associated with
          example: 588f7ee98f138b19220041a7
        entityType:
          type: string
          description: The type of entity associated with this scenario
          enum:
          - COMP_REVIEW
        sharedViewConfig:
          type: array
          description: View configurations associated with this scenario
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ScenarioSharedViewConfig'
        budget:
          description: Total budget associated with the scenario
          $ref: '#/components/schemas/Money'
    Money:
      type: object
      required:
      - amount
      - currency
      properties:
        amount:
          type: number
        currency:
          type: string
        places:
          type: integer
          format: int32
    ScenarioBudgetImpact:
      type: object
      required:
      - budgetId
      - budgetLabel
      - primaryUsage
      - scenarioUsage
      - amount
      properties:
        budgetId:
          type: string
          example: 588f7ee98f138b19220041a7
        budgetLabel:
          type: string
        budgetColor:
          type: string
        primaryUsage:
          description: usage in primary absent the scenario's changes
          $ref: '#/components/schemas/Money'
        scenarioUsage:
          description: usage within the scenario
          $ref: '#/components/schemas/Money'
        amount:
          description: total amount available in the budget
          $ref: '#/components/schemas/Money'
    ShareAccess:
      type: object
      required:
      - access
      properties:
        access:
          type: string
          description: access permission level
          enum:
          - NONE
          - LIMITED_READ
          - LIMITED_WRITE
          - STANDARD_READ
          - STANDARD_WRITE
          - COMPENSATION_READ
          - FULL_READ
          - COMP_PLANNING_PARTICIPANT
          - COMPENSATION_WRITE
          - WRITE
          - COMPENSATION_OWNER
          - OWNER
        userId:
          type: string
          description: user id
          example: 5887a7718f138b6a2a0041a7
        groupId:
          type: string
          description: group id
          example: 5887a7718f138b6a2a0041a7
        fields:
          type: string
          description: fields
          example: name,image,title
    ResultsScenario:
      type: object
      required:
      - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Scenario'
        next:
          type: string
        access:
          type: array
          items:
            $ref: '#/components/schemas/ResultsAccess'
    ResultsAccess:
      type: object
      required:
      - allowed
      properties:
        ids:
          type: array
          uniqueItems: true
          items:
            type: string
            example: 588f7ee98f138b19220041a7
        allowed:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/AccessAction'
    AccessAction:
      type: object
      required:
      - action
      properties:
        action:
          type: string
        fields:
          type: array
          uniqueItems: true
          items:
            type: string
        types:
          type: array
          uniqueItems: true
          items:
            type: string
    Process:
      type: object
      required:
      - id
      - orgId
      - label
      - type
      - status
      - runUserId
      - createId
      - createAt
      - options
      properties:
        id:
          type: string
          description: globally unique id
          example: 588f7ee98f138b19220041a7
        orgId:
          type: string
          description: parent org id
          example: 588f7ee98f138b19220041a7
        label:
          type: string
          description: human-readable label that identifies this process
        type:
          type: string
          description: process type
        status:
          type: string
          description: current status of process
          enum:
          - PENDING
          - RUNNING
          - DONE
          - ERROR
        filePath:
          type: string
          description: data file path
        logPath:
          type: string
          description: data log path
        runUserId:
          type: string
          description: user id who is running the process
          example: 588f7ee98f138b19220041a7
        parentProcessId:
          type: string
          description: process id of parent process
          example: 588f7ee98f138b19220041a7
        createId:
          type: string
          description: created by user id (user who requested the process run)
          example: 588f7ee98f138b19220041a7
        createBehalfId:
          type: string
          description: created on behalf of user id
          example: 588f7ee98f138b19220041a7
        createAttribution:
          $ref: '#/components/schemas/Attribution'
        createAt:
          type: string
          description: created timestamp
          example: '2017-01-24T13:57:52Z'
        updateId:
          type: string
          description: last updated by user id
          example: 588f7ee98f138b19220041a7
        updateBehalfId:
          type: string
          description: last updated on behalf of user id
          example: 588f7ee98f138b19220041a7
        updateAttribution:
          $ref: '#/components/schemas/Attribution'
        updateAt:
          type: string
          description: last updated timestamp
          example: '2017-01-24T13:57:52Z'
        startAt:
          type: string
          description: started at timestamp
          example: '2017-01-24T13:57:52Z'
        endAt:
          type: string
          description: ended at timestamp
          example: '2017-01-24T13:57:52Z'
        message:
          type: string
          description: status or error message
        progress:
          type: number
          format: double
          description: percent progress so far
        internalError:
          type: string
          description: internal-only error message
        options:
          type: object
          description: options passed to the process
        results:
          type: object
          description: results summary for the process
          additionalProperties:
            type: object
        logDataList:
          type: array
          description: list of log data that occurred during running of this process
          items:
            $ref: '#/components/schemas/LogData'
        state:
          type: object
          description: process-specific state data
        summary:
          type: string
          description: human-readable, searchable summary of what this process did
        appId:
          type: string
          description: app id of the process
          example: 588f7ee98f138b19220041a7
        uuid:
          type: string
          description: unique ID of the process at queue time
          example: 84db3c6e-0877-4436-8af1-768c06b29586
    ScenarioMetadata:
      type: object
      required:
      - scenarioId
      - access
      - canChange
      - budgetImpacts
      properties:
        scenarioId:
          type: string
          description: scenario id
          example: 588f7ee98f138b19220041a7
        changeCount:
          type: integer
          format: int32
          description: number of changes contained in scenario
        jobCount:
          type: integer
          format: int32
          description: number of job changes contained in scenario
        access:
          type: array
          description: access information on the user for the entity
          items:
            $ref: '#/components/schemas/ResultsAccess'
        canChange:
          type: boolean
          description: whether user can edit the scenario
        cost:
          description: summary of cost impact on scenario
          $ref: '#/components/schemas/CostImpact'
        budgetImpacts:
          type: array
          description: summary of scenario impact on budgets
          items:
            $ref: '#/components/schemas/ScenarioBudgetImpact'
        changeAt:
          type: string
          description: most recent time the scenario was changed
          example: '2017-01-24T13:57:52Z'
        calcEndAt:
          type: string
          description: most recent summary calculation ended at timestamp
          example: '2017-01-24T13:57:52Z'
    Attribution:
      type: object
      properties:
        principalUserId:
          type: string
          example: 588f7ee98f138b19220041a7
        agentUserIds:
          type: array
          items:
            type: string
            example: 588f7ee98f138b19220041a7
        eventId:
          type: string
          example: 588f7ee98f138b19220041a7
        aiChatId:
          type: string
          example: 588f7ee98f138b19220041a7
        aiToolUseId:
          type: string
        channel:
          type: string
          enum:
          - WEB
          - MOBILE
          - SLACK
          - TEAMS
          - MCP
    ResultsEvent:
      type: object
      required:
      - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Event'
        next:
          type: string
        access:
          type: array
          items:
            $ref: '#/components/schemas/ResultsAccess'
    Event:
      type: object
      required:
      - id
      - userId
      - type
      - entityType
      - entityId
      - at
      properties:
        id:
          type: string
          description: globally unique id
          example: 588f7ee98f138b19220041a7
        userId:
          type: string
          description: user id who caused the event
          example: 588f7ee98f138b19220041a7
        orgId:
          type: string
          description: parent organization id
          example: 588f7ee98f138b19220041a7
        type:
          type: string
          description: type of event
          enum:
          - APP
          - APPROVE
          - CANCEL
          - COMBINE
          - CREATE
          - DELETE
          - DONE
          - ERROR
          - EXPORT
          - EXPORT_CSV
          - EXPORT_ORG_CHART
          - GENERATE
          - GEOIP
          - INCOMING
          - INSTALL
          - INVITE
          - INBOUND
          - LOGIN
          - MERGE
          - MESSAGE
          - OUTBOUND
          - PREVIEW_AS
          - READ
          - READ_EXTERNAL
          - READ_SENSITIVE
          - READ_ATS
          - READ_ATS_WEBHOOK
          - READ_FULL_NAME
          - READ_FUTURE_DATE
          - READ_METADATA
          - READ_COMP
          - READ_BILLING
          - READ_PENDING
          - READ_PAYROLL
          - READ_SENSITIVE_FILTERS
          - WRITE_EXTERNAL
          - REASSIGN
          - REJECT
          - RELEASE
          - REMIND
          - REMOVE_PASSWORD
          - REQUEST
          - RESTORE
          - RESUME
          - REVOKE
          - RUN
          - RUN_ATS
          - SECURITY
          - SHARE
          - SHOW_DASHBOARD_DAYS_AHEAD
          - SHOW_OPEN_JOB

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/charthop/refs/heads/main/openapi/charthop-scenario-api-openapi.yml