Charthop approval API
The approval API from Charthop — 12 operation(s) for approval.
The approval API from Charthop — 12 operation(s) for approval.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/charthop-approval-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 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