Charthop approval API

The approval API from Charthop — 12 operation(s) for approval.

Operations 21

GET /v1/org/{orgId}/approval-chain Return approval chains #
POST /v1/org/{orgId}/approval-chain Create an approval chain #
GET /v1/org/{orgId}/approval-chain/{approvalChainId} Return a particular approval chain by id #
PATCH /v1/org/{orgId}/approval-chain/{approvalChainId} Update a approval chain #
DELETE /v1/org/{orgId}/approval-chain/{approvalChainId} Delete a approval chain #
POST /v1/org/{orgId}/approval-chain/{approvalChainId}/duplicate Duplicate an approval chain including all of its stages and settings #
POST /v1/org/{orgId}/approval-chain/{approvalChainId}/export Export an approval chain's stages to CSV format #
GET /v1/org/{orgId}/approval-chain/{approvalChainId}/request Return all approval requests for an approval chain #
POST /v1/org/{orgId}/approval-chain/{approvalChainId}/request Create an approval request #
GET /v1/org/{orgId}/approval-chain/{approvalChainId}/request/entity/comp-review Return all approval request comp review responses for an approval chain #
GET /v1/org/{orgId}/approval-chain/{approvalChainId}/request/entity/scenario Return all approval request scenario responses for an approval chain #
GET /v1/org/{orgId}/approval-chain/{approvalChainId}/request/{approvalRequestId} Return an approval request #
PATCH /v1/org/{orgId}/approval-chain/{approvalChainId}/request/{approvalRequestId} Update an existing approval request #
DELETE /v1/org/{orgId}/approval-chain/{approvalChainId}/request/{approvalRequestId} Delete an approval request #
POST /v1/org/{orgId}/approval-chain/{approvalChainId}/request/{approvalRequestId}/reassign-approver Reassigning an approver at a stage #
POST /v1/org/{orgId}/approval-chain/{approvalChainId}/request/{approvalRequestId}/send-reminder Send a reminder for a stage reviewer in an existing approval request #
GET /v1/org/{orgId}/approval-chain/{approvalChainId}/stage Return all approval chain stages for an approval chain #
POST /v1/org/{orgId}/approval-chain/{approvalChainId}/stage Create an approval chain stage #
GET /v1/org/{orgId}/approval-chain/{approvalChainId}/stage/{approvalChainStageId} Return all approval chain stages for an approval chain #
PATCH /v1/org/{orgId}/approval-chain/{approvalChainId}/stage/{approvalChainStageId} Update an existing approval chain stage #
DELETE /v1/org/{orgId}/approval-chain/{approvalChainId}/stage/{approvalChainStageId} Delete an approval chain stage #

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-approval-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-approval-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: REST API for ChartHop
  version: V1.0.0
  title: ChartHop Approval API
  contact:
    name: ChartHop
    url: https://www.charthop.com
    email: support@charthop.com
servers:
- url: https://localhost
- url: http://localhost
tags:
- name: Approval
paths:
  /v1/org/{orgId}/approval-chain:
    get:
      tags:
      - Approval
      summary: Return approval chains
      operationId: getApprovalChains
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: entityType
        in: query
        description: The type of entity
        required: false
        schema:
          type: string
          enum:
          - COMP_REVIEW
          - SCENARIO
          - TIMEOFF
      - name: entityId
        in: query
        description: the id of the entity
        required: false
        schema:
          type: string
      - name: from
        in: query
        description: Approval chain id to start paginating from
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to return
        required: false
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultsApprovalChain'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
    post:
      tags:
      - Approval
      summary: Create an approval chain
      operationId: createApprovalChain
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: createDefaultStages
        in: query
        description: Create default stages
        required: false
        schema:
          type: boolean
      responses:
        '201':
          description: approval chain created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApprovalChain'
        '202':
          description: snapshot currently building
        '400':
          description: bad request
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApprovalChain'
        description: ApprovalChain data to create
        required: true
  /v1/org/{orgId}/approval-chain/{approvalChainId}:
    get:
      tags:
      - Approval
      summary: Return a particular approval chain by id
      operationId: getApprovalChainById
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApprovalChain'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
    patch:
      tags:
      - Approval
      summary: Update a approval chain
      operationId: updateApprovalChain
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: approval chain id
        required: true
        schema:
          type: string
      responses:
        '202':
          description: snapshot currently building
        '400':
          description: bad request
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateApprovalChain'
        required: true
    delete:
      tags:
      - Approval
      summary: Delete a approval chain
      operationId: deleteApprovalChain
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      responses:
        '202':
          description: snapshot currently building
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
  /v1/org/{orgId}/approval-chain/{approvalChainId}/duplicate:
    post:
      tags:
      - Approval
      summary: Duplicate an approval chain including all of its stages and settings
      operationId: duplicateApprovalChain
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id to duplicate
        required: true
        schema:
          type: string
      responses:
        '201':
          description: approval chain duplicated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApprovalChain'
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
  /v1/org/{orgId}/approval-chain/{approvalChainId}/export:
    post:
      tags:
      - Approval
      summary: Export an approval chain's stages to CSV format
      operationId: exportApprovalChain
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      responses:
        '201':
          description: process started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '401':
          description: not authorized
        '404':
          description: not found
  /v1/org/{orgId}/approval-chain/{approvalChainId}/request:
    get:
      tags:
      - Approval
      summary: Return all approval requests for an approval chain
      operationId: getApprovalRequests
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to return
        required: false
        schema:
          type: integer
          format: int32
      - name: entityType
        in: query
        description: entity type to filter on
        required: false
        schema:
          type: string
          enum:
          - COMP_REVIEW
          - SCENARIO
          - TIMEOFF
      - name: entityIds
        in: query
        description: entity ids to filter on
        required: false
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultsApprovalRequest'
        '400':
          description: bad request
        '404':
          description: not found
    post:
      tags:
      - Approval
      summary: Create an approval request
      operationId: createApprovalRequest
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: dryRun
        in: query
        description: Dry run without creating real request
        required: false
        schema:
          type: boolean
      - name: previewJobId
        in: query
        description: preview-as job id
        required: false
        schema:
          type: string
      responses:
        '201':
          description: approval request created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApprovalRequest'
        '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/ApprovalRequestCreateBody'
        description: Approval request data to create
        required: true
  /v1/org/{orgId}/approval-chain/{approvalChainId}/request/entity/comp-review:
    get:
      tags:
      - Approval
      summary: Return all approval request comp review responses for an approval chain
      operationId: getApprovalRequestResponsesByCompReview
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to return
        required: false
        schema:
          type: integer
          format: int32
      - name: entityIds
        in: query
        description: entity ids to filter on
        required: true
        schema:
          type: array
          items:
            type: string
            example: 588f7ee98f138b19220041a7
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultsApprovalRequestCompReviewResponse'
        '400':
          description: bad request
        '404':
          description: not found
  /v1/org/{orgId}/approval-chain/{approvalChainId}/request/entity/scenario:
    get:
      tags:
      - Approval
      summary: Return all approval request scenario responses for an approval chain
      operationId: getApprovalRequestResponsesByScenario
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to return
        required: false
        schema:
          type: integer
          format: int32
      - name: entityIds
        in: query
        description: entity ids to filter on
        required: false
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultsApprovalRequestScenarioResponse'
        '400':
          description: bad request
        '404':
          description: not found
  /v1/org/{orgId}/approval-chain/{approvalChainId}/request/{approvalRequestId}:
    get:
      tags:
      - Approval
      summary: Return an approval request
      operationId: getApprovalRequest
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: approvalRequestId
        in: path
        description: Approval request id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApprovalRequest'
        '400':
          description: bad request
        '404':
          description: not found
    patch:
      tags:
      - Approval
      summary: Update an existing approval request
      operationId: updateApprovalRequest
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: approvalRequestId
        in: path
        description: approval request id
        required: true
        schema:
          type: string
      - name: previewJobId
        in: query
        description: preview-as job id
        required: false
        schema:
          type: string
      - name: targetApproverJobId
        in: query
        description: jobId of the approver the caller is acting for as their approval delegate
        required: false
        schema:
          type: string
      responses:
        '204':
          description: approval request 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/ApprovalRequestPatchBody'
        description: approval request data to update
        required: true
    delete:
      tags:
      - Approval
      summary: Delete an approval request
      operationId: deleteApprovalRequest
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: approvalRequestId
        in: path
        description: Approval request id
        required: true
        schema:
          type: string
      responses:
        '202':
          description: snapshot currently building
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApprovalRequestDeleteBody'
        description: Body params for deletion
        required: true
  /v1/org/{orgId}/approval-chain/{approvalChainId}/request/{approvalRequestId}/reassign-approver:
    post:
      tags:
      - Approval
      summary: Reassigning an approver at a stage
      operationId: reassignApproverAtStage
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: approvalRequestId
        in: path
        description: approval request id
        required: true
        schema:
          type: string
      responses:
        '204':
          description: approver reassigned
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReassignApproverPatchBody'
        description: approval request data to update
        required: true
  /v1/org/{orgId}/approval-chain/{approvalChainId}/request/{approvalRequestId}/send-reminder:
    post:
      tags:
      - Approval
      summary: Send a reminder for a stage reviewer in an existing approval request
      operationId: sendReminder
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: approvalRequestId
        in: path
        description: approval request id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: reminder sent
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendReminderBody'
        description: reminder body
        required: true
  /v1/org/{orgId}/approval-chain/{approvalChainId}/stage:
    get:
      tags:
      - Approval
      summary: Return all approval chain stages for an approval chain
      operationId: getApprovalChainStages
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Number of results to return
        required: false
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultsApprovalChainStage'
        '400':
          description: bad request
        '404':
          description: not found
    post:
      tags:
      - Approval
      summary: Create an approval chain stage
      operationId: createApprovalChainStage
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      responses:
        '201':
          description: approval chain stage created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApprovalChainStage'
        '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/CreateApprovalChainStage'
        description: Approval chain stage data to create
        required: true
  /v1/org/{orgId}/approval-chain/{approvalChainId}/stage/{approvalChainStageId}:
    get:
      tags:
      - Approval
      summary: Return all approval chain stages for an approval chain
      operationId: getApprovalChainStage
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: approvalChainStageId
        in: path
        description: Approval chain stage id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApprovalChainStage'
        '400':
          description: bad request
        '404':
          description: not found
    patch:
      tags:
      - Approval
      summary: Update an existing approval chain stage
      operationId: updateApprovalChainStage
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: approvalChainStageId
        in: path
        description: approval chain stage id
        required: true
        schema:
          type: string
      responses:
        '204':
          description: approval chain stage 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/UpdateApprovalChainStage'
        description: approval chain stage data to update
        required: true
    delete:
      tags:
      - Approval
      summary: Delete an approval chain stage
      operationId: deleteApprovalChainStage
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        schema:
          type: string
      - name: approvalChainId
        in: path
        description: Approval chain id
        required: true
        schema:
          type: string
      - name: approvalChainStageId
        in: path
        description: Approval chain stage id
        required: true
        schema:
          type: string
      responses:
        '202':
          description: snapshot currently building
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
components:
  schemas:
    ApprovalRequestPatchBody:
      type: object
      required:
      - status
      properties:
        status:
          type: string
          enum:
          - CANCELED
          - REJECTED
          - PENDING
          - ACTIVE
          - REVIEWED
          - APPROVED
          - SKIPPED
          - SUBMITTED
        message:
          type: string
    ApprovalGroup:
      type: object
      required:
      - type
      - approvers
      properties:
        groupId:
          type: string
          description: globally unique id
          example: 588f7ee98f138b19220041a7
        type:
          type: string
          description: What type of group this is
          enum:
          - REVIEWER
          - COLLABORATOR
          - FINAL_APPROVER
        approvers:
          type: array
          description: approvers that make up the group
          items:
            $ref: '#/components/schemas/ApprovalGroupApprover'
        expandExpression:
          type: string
          description: optional custom expression to determine approval request tree
        minApproversNeeded:
          type: integer
          format: int32
          description: minimum number of approvers required in this group for approval (null means all approvers required)
    ResultsApprovalRequestScenarioResponse:
      type: object
      required:
      - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ApprovalRequestScenarioResponse'
        next:
          type: string
        access:
          type: array
          items:
            $ref: '#/components/schemas/ResultsAccess'
    ApprovalRequestScenarioResponse:
      type: object
      required:
      - id
      - isComplete
      - stageOverrides
      - isApprovalCommentRequiredForActiveStage
      - isRejectionCommentRequiredForActiveStage
      - approvalChainId
      - scenarioId
      - createId
      - createAt
      - updateId
      - updateAt
      properties:
        id:
          type: string
          example: 588f7ee98f138b19220041a7
        activeStage:
          $ref: '#/components/schemas/ApprovalChainStageOverride'
        proposerStage:
          $ref: '#/components/schemas/ApprovalChainStageOverride'
        nextReviewerStage:
          $ref: '#/components/schemas/ApprovalChainStageOverride'
        isComplete:
          type: boolean
        rejectedStage:
          $ref: '#/components/schemas/ApprovalChainStageOverride'
        stageOverrides:
          type: array
          items:
            $ref: '#/components/schemas/ApprovalChainStageOverride'
        isApprovalCommentRequiredForActiveStage:
          type: boolean
        isRejectionCommentRequiredForActiveStage:
          type: boolean
        approvalChainId:
          type: string
          example: 588f7ee98f138b19220041a7
        scenarioId:
          type: string
          example: 588f7ee98f138b19220041a7
        createId:
          type: string
          example: 588f7ee98f138b19220041a7
        createAt:
          type: string
        updateId:
          type: string
          example: 588f7ee98f138b19220041a7
        updateAt:
          type: string
        deleteId:
          type: string
          example: 588f7ee98f138b19220041a7
        deleteAt:
          type: string
        delegatedApproverJobId:
          type: string
          example: 588f7ee98f138b19220041a7
        delegatedApproverJobIds:
          type: array
          items:
            type: string
            example: 588f7ee98f138b19220041a7
    ResultsApprovalChainStage:
      type: object
      required:
      - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ApprovalChainStage'
        next:
          type: string
        access:
          type: array
          items:
            $ref: '#/components/schemas/ResultsAccess'
    UpdateApprovalChainStage:
      type: object
      properties:
        inclusionExpression:
          type: string
          description: optional custom expression to determine stage inclusion behavior
        inclusionBehavior:
          type: string
          description: determines whether stage is conditional based on an expression
          enum:
          - ONLY_INCLUDE_IF
          - EXCLUDE_IF
        rejectBehavior:
          type: string
          description: determines which stage becomes active when a rejection event happens
          enum:
          - BACK_TO_BEGINNING
          - PREVIOUS_PHASE
        dynamicStagesExpression:
          type: string
          description: if set to an expression that returns jobs or persons, the result of this expression will be expanded into multiple approval stages. For example, if set to `managerPersons`, then one stage will be created for each manager of the requester
        status:
          type: string
          description: status of the stage
          enum:
          - CANCELED
          - REJECTED
          - PENDING
          - ACTIVE
          - REVIEWED
          - APPROVED
          - SKIPPED
          - SUBMITTED
        approvalCommentRequired:
          type: boolean
          description: requires a comment on an approval event
        rejectionCommentRequired:
          type: boolean
          description: requires a comment on an rejection event
        order:
          type: integer
          format: int32
          description: order of stage in approval chain
        groups:
          type: array
          description: list of groups that are involved in this approval stage
          items:
            $ref: '#/components/schemas/ApprovalGroup'
        autoApproveIfApproverIsSubmitter:
          type: boolean
          description: if true, when an approver in this stage equals the scenario submitter, that approver is auto-approved at request creation time. If every approver matches the submitter, the entire stage is auto-approved.
    ApprovalRequest:
      type: object
      required:
      - id
      - orgId
      - entityId
      - entityType
      - approvalChainId
      - stageOverrides
      properties:
        id:
          type: string
          description: globally unique id
          example: 588f7ee98f138b19220041a7
        orgId:
          type: string
          description: parent organization id
          example: 588f7ee98f138b19220041a7
        entityId:
          type: string
          description: entity id
          example: 588f7ee98f138b19220041a7
        entityType:
          type: string
          description: entity type
          enum:
          - COMP_REVIEW
          - SCENARIO
          - TIMEOFF
        compReviewId:
          type: string
          description: comp review id
          example: 588f7ee98f138b19220041a7
        approvalChainId:
          type: string
          description: parent approval chain id
          example: 588f7ee98f138b19220041a7
        createId:
          type: string
          description: the user who requested the approval
          example: 588f7ee98f138b19220041a7
        createBehalfId:
          type: string
          description: created on behalf of user id
          example: 588f7ee98f138b19220041a7
        createAttribution:
          $ref: '#/components/schemas/Attribution'
        stageOverrides:
          type: array
          description: list of configuration fields
          items:
            $ref: '#/components/schemas/ApprovalChainStageOverride'
        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'
        deleteId:
          type: string
          description: deleted by user id
          example: 588f7ee98f138b19220041a7
        deleteBehalfId:
          type: string
          description: deleted on behalf of user id
          example: 588f7ee98f138b19220041a7
        deleteAttribution:
          $ref: '#/components/schemas/Attribution'
        deleteAt:
          type: string
          description: deleted timestamp
          example: '2017-01-24T13:57:52Z'
    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
    ApprovalRequestCreateBody:
      type: object
      required:
      - entityId
      properties:
        entityId:
          type: string
          example: 588f7ee98f138b19220041a7
    ResultsAccess:
      type: object
      required:
      - allowed
      properties:
        ids:
          type: array
          uniqueItems: true
          items:
            type: string
            

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