Charthop form API
The form API from Charthop — 15 operation(s) for form.
The form API from Charthop — 15 operation(s) for form.
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-form-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 access Form API
contact:
name: ChartHop
url: https://www.charthop.com
email: support@charthop.com
servers:
- url: https://localhost
- url: http://localhost
tags:
- name: form
paths:
/v1/org/{orgId}/form:
get:
tags:
- form
summary: Return all forms in the organization paginated
operationId: findForms
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: status
in: query
description: Status to filter by
required: false
schema:
type: string
enum:
- ACTIVE
- INACTIVE
- ARCHIVED
- name: from
in: query
description: Form 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
- 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/ResultsForm'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
post:
tags:
- form
summary: Create a form
operationId: createForm
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'201':
description: form created
content:
application/json:
schema:
$ref: '#/components/schemas/Form'
'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/CreateForm'
description: Form data to create
required: true
/v1/org/{orgId}/form/available:
get:
tags:
- form
summary: Return all active forms applicable to a particular entity
operationId: getAvailableForms
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: targetId
in: query
description: Target id
required: false
schema:
type: string
- name: targetType
in: query
description: Target type
required: false
schema:
type: string
enum:
- NONE
- PERSON
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ResultsFormSummary'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
/v1/org/{orgId}/form/delete:
delete:
tags:
- form
summary: Delete forms
operationId: deleteForms
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'204':
description: forms deleted
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
type: array
items:
type: string
example: 588f7ee98f138b19220041a7
description: Form ids
required: true
/v1/org/{orgId}/form/person/{personId}:
get:
tags:
- form
summary: Return all active forms applicable to a particular person
operationId: findFormsForPerson
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: personId
in: path
description: Person id
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ResultsForm'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
/v1/org/{orgId}/form/status:
post:
tags:
- form
summary: Update status for existing forms
operationId: updateFormStatus
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'200':
description: form status 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/FormStatusUpdateRequest'
description: Form data to update
required: true
/v1/org/{orgId}/form/{formId}:
get:
tags:
- form
summary: Return a particular form by id
operationId: getForm
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Form'
'400':
description: bad request
'404':
description: not found
patch:
tags:
- form
summary: Update an existing form
operationId: updateForm
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
responses:
'204':
description: form 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/UpdateForm'
description: Form data to update
required: true
delete:
tags:
- form
summary: Delete a form
operationId: deleteForm
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
responses:
'204':
description: form deleted
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
post:
tags:
- form
summary: Submit data from a form
operationId: legacySubmitForm
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Org id
required: true
schema:
type: string
responses:
'204':
description: form submitted
'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/FormSubmitRequest'
description: Form data to submit
required: true
/v1/org/{orgId}/form/{formId}/collect:
post:
tags:
- form
summary: Collect data for an existing form, sending emails and chat notifications to people being requested
operationId: collectFormData
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
responses:
'201':
description: form collection started
content:
application/json:
schema:
$ref: '#/components/schemas/FormCollectionResponse'
'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/FormCollectRequest'
description: Details on the data collection
/v1/org/{orgId}/form/{formId}/draft:
get:
tags:
- form
summary: Get the current state of form draft data
operationId: getFormDraft
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
- name: personId
in: query
description: Person id
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/PartialFormDraft'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: org not found
/v1/org/{orgId}/form/{formId}/duplicate:
post:
tags:
- form
summary: Duplicate a form
operationId: duplicateForm
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id to duplicate
required: true
schema:
type: string
responses:
'201':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Form'
'400':
description: invalid data
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DuplicateFormOptions'
description: Form duplication options
required: true
/v1/org/{orgId}/form/{formId}/preview-render:
post:
tags:
- form
summary: Render a preview of a form
operationId: renderPreviewForm
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/FormRender'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FormPreviewRenderRequest'
required: true
/v1/org/{orgId}/form/{formId}/remind:
post:
tags:
- form
summary: Sends reminder for a form with existing tasks, sending emails/chat notifications to people being requested
operationId: remindFormData
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
responses:
'201':
description: form reminder started
content:
application/json:
schema:
$ref: '#/components/schemas/Process'
'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/FormCollectRequest'
description: Details on the data collection
/v1/org/{orgId}/form/{formId}/render:
get:
tags:
- form
summary: Render a form for display
operationId: renderForm
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
- name: targetId
in: query
description: Target id
required: false
schema:
type: string
- name: targetType
in: query
description: Target type
required: false
schema:
type: string
enum:
- NONE
- PERSON
- name: formResponseId
in: query
description: Form response id, if editing a prior form response
required: false
schema:
type: string
- name: formResponseChangeId
in: query
description: Form response change id, if editing a prior form response (deprecated)
required: false
schema:
type: string
- name: formVersionId
in: query
description: Form version id, if rendering a previous version of the form
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/FormRender'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
/v1/org/{orgId}/form/{formId}/rerender/question/{updateQuestionId}:
post:
tags:
- form
summary: Re-render form blocks based on changes to the form values
operationId: rerenderForm
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
- name: updateQuestionId
in: path
description: The question id that is being updated to trigger the re-render
required: true
schema:
type: string
- name: targetId
in: query
description: Target id
required: false
schema:
type: string
- name: targetType
in: query
description: Target type
required: false
schema:
type: string
enum:
- NONE
- PERSON
- name: formVersionId
in: query
description: Form version id, if rendering a previous version of the form
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/FormRerender'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: object
description: Form data to submit
required: true
/v1/org/{orgId}/form/{formId}/submit:
post:
tags:
- form
summary: Submit data from a form
operationId: submitForm
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
- name: targetId
in: query
description: Target id
required: false
schema:
type: string
- name: targetType
in: query
description: Target type
required: false
schema:
type: string
enum:
- NONE
- PERSON
responses:
'204':
description: form submitted
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: org not found
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: object
description: Form data to submit
required: true
/v1/org/{orgId}/form/{formId}/submit/draft:
post:
tags:
- form
summary: Submit data from a form draft
operationId: submitFormDraft
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: formId
in: path
description: Form id
required: true
schema:
type: string
- name: targetId
in: query
description: Target id
required: false
schema:
type: string
- name: targetType
in: query
description: Target type
required: false
schema:
type: string
enum:
- NONE
- PERSON
responses:
'201':
description: form draft submitted
content:
application/json:
schema:
$ref: '#/components/schemas/FormDraft'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: org not found
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: object
description: Form data to submit
required: true
components:
schemas:
FormSummary:
type: object
required:
- id
- label
- displayName
properties:
id:
type: string
example: 588f7ee98f138b19220041a7
label:
type: string
displayName:
type: string
displayNameTr:
$ref: '#/components/schemas/Translations'
FormStatusUpdateRequest:
type: object
required:
- updateStatus
- formIds
properties:
updateStatus:
type: string
description: New status to update
enum:
- ACTIVE
- INACTIVE
- ARCHIVED
formIds:
type: array
description: Form ids
items:
type: string
example: 588f7ee98f138b19220041a7
PartialFormDraft:
type: object
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent organization id
example: 588f7ee98f138b19220041a7
formId:
type: string
description: form being submitted
example: 588f7ee98f138b19220041a7
personId:
type: string
description: person form is being filled out on
example: 588f7ee98f138b19220041a7
data:
type: object
description: draft submission data - map of field names to data
additionalProperties:
type: object
createId:
type: string
description: created by user id
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'
pendingApprovalChangeId:
type: string
example: 588f7ee98f138b19220041a7
format:
type: string
description: whether the draft is using extended-json format for data storage
enum:
- EXTENDED_JSON
- LEGACY
FormRender:
type: object
required:
- id
- label
- displayName
- options
- blocks
- rerenderQuestionIds
- responseSensitive
properties:
id:
type: string
example: 588f7ee98f138b19220041a7
label:
type: string
displayName:
type: string
displayNameTr:
$ref: '#/components/schemas/Translations'
options:
$ref: '#/components/schemas/FormOptions'
blocks:
type: array
items:
$ref: '#/components/schemas/FormRenderBlock'
rerenderQuestionIds:
type: array
uniqueItems: true
items:
type: string
example: 588f7ee98f138b19220041a7
responseSensitive:
type: string
enum:
- GLOBAL
- ORG
- SENSITIVE
- PERSONAL
- MANAGER
- HIGH
- PRIVATE
authorSensitive:
type: string
enum:
- ANONYMOUS
- PRIVATE
- HIGH
- MANAGER
ai:
$ref: '#/components/schemas/FormAiConfig'
formVersionId:
type: string
example: 588f7ee98f138b19220041a7
FormRenderBlock:
type: object
required:
- type
- id
properties:
type:
type: string
enum:
- QUESTION
- CONTENT
id:
type: string
example: 588f7ee98f138b19220041a7
name:
type: string
question:
type: string
questionTr:
$ref: '#/components/schemas/Translations'
dataType:
type: string
enum:
- ADDRESS
- AUDIO
- BOOLEAN
- COMP
- COMPOUND
- COMP_BAND
- CONTACTS
- CURRENCY
- DATE
- DECIMAL
- ELAPSED_DAYS
- ELAPSED_MONTHS
- ELAPSED_YEARS
- EMAIL
- ENUM
- ENUM_EXPR
- ENUM_MULTI
- ENUM_SCALE
- EXPR
- FILE
- GROUP
- GROUPS
- GROUP_ASSIGNMENTS
- GROUP_TYPE
- GROUP_POSITION_ASSIGNMENTS
- IMAGE
- INTEGER
- JOB
- JOB_CODE
- JOBS
- JOB_TIER
- LIST
- MAP
- MONEY
- NAME
- OBJECT
- PAY_INTERVAL
- PERCENT
- PERSON
- PERSONS
- PHONE
- STOCKGRANT
- STRING
- TABLE_REF
- TEXT
- TIMEOFF
- TIMESTAMP
- TRACKED_GROUP
- URL
- USER
- VARIABLE_COMP
- VARIABLE_COMPS
plural:
type: string
enum:
- SINGLE
- LIST
- SET
values:
type: array
items:
$ref: '#/components/schemas/EnumValue'
options:
$ref: '#/components/schemas/FieldOptions'
value:
type: object
required:
type: boolean
content:
type: string
contentTr:
$ref: '#/components/schemas/Translations'
label:
type: string
EnumValue:
type: object
required:
- name
- label
properties:
name:
type: string
description: enum value name
label:
type: string
description: enum value label
color:
type: string
description: color of property
pattern: ^#[a-f0-9]{6}$
expr:
type: string
description: computed expression, for ENUM_EXPR type
num:
type: number
description: numeric value, for ENUM_SCALE type
sort:
type: integer
format: int32
description: sort order
rank:
type: integer
format: int32
description: rank order, if selected in rank order
id:
type: string
description: unique identifier for enum
example: 588f7ee98f138b19220041a7
labelTr:
description: translations for the label
$ref: '#/components/schemas/Translations'
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
ResultsForm:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/Form'
next:
type: string
access:
type: array
items:
$ref: '#/components/schemas/ResultsAccess'
FormDraft:
type: object
required:
- id
- orgId
- formId
- data
- createId
- createAt
- updateId
- updateAt
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent organization id
example: 588f7ee98f138b19220041a7
formId:
type: string
description: form being submitted
example: 588f7ee98f138b19220041a7
personId:
type: string
description: person form is being filled out on
example: 588f7ee98f138b19220041a7
data:
type: object
description: draft submission data - map of field names to data
additionalProperties:
type: object
createId:
type: string
description: created by user id
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'
pendingApprovalChangeId:
type: string
example: 588f7ee98f138b19220041a7
format:
type: string
description: whether the draft is using extended-json format for data storage
enum:
- EXTENDED_JSON
- LEGACY
DuplicateFormOptions:
type: object
required:
- unlinkFields
properties:
unlinkFields:
type: boolean
unlinkQuestionIds:
type: array
uniqueItems: true
items:
type: string
example: 588f7ee98f138b19220041a7
Task:
type: object
required:
- id
- orgId
- userId
- type
- entityId
- status
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent organization id
example: 588f7ee98f138b19220041a7
userId:
type: string
description: user who is responsible for the task
example: 588f7ee98f138b19220041a7
assessmentId:
type: string
description: parent assessment id that this task belongs to
example: 588f7ee98f138b19220041a7
parentEntityId:
type: string
description: parent entity id that this task belongs to, should be used with entityId
example: 588f7ee98f138b19220041a7
type:
type: string
description: type of task
enum:
- FORM_SUBMIT
- FORM_RESPONSE_APPROVE
# --- truncated at 32 KB (75 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/charthop/refs/heads/main/openapi/charthop-form-api-openapi.yml