Charthop preload API
The preload API from Charthop — 1 operation(s) for preload.
The preload API from Charthop — 1 operation(s) for preload.
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-preload-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 Preload API
contact:
name: ChartHop
url: https://www.charthop.com
email: support@charthop.com
servers:
- url: https://localhost
- url: http://localhost
tags:
- name: preload
paths:
/v1/org/{orgId}/preload:
get:
tags:
- preload
summary: Return a set of pre-loaded data required by the web app
operationId: getPreloadData
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/PreloadResponse'
'400':
description: bad request
'404':
description: not found
components:
schemas:
Money:
type: object
required:
- amount
- currency
properties:
amount:
type: number
currency:
type: string
places:
type: integer
format: int32
FeatureAccessOption:
type: object
required:
- name
- type
properties:
name:
type: string
description: The name of the feature option tied to the feature access
example: smart_fields
enum:
- CONFIGURED_ROLES
- SMART_FIELDS
- APP_FIELD_MAPPERS
- MULTI_PAYROLL_INSTALLS
description:
type: string
description: The description of the feature option
type:
type: string
description: The feature option type
enum:
- LIMIT
- FULL_ACCESS
limit:
type: integer
format: int32
description: The feature option limit
DueDate:
type: object
required:
- type
- dueDay
- dueTime
properties:
type:
type: string
enum:
- EXACT
- RELATIVE
dueDay:
type: string
description: due day, in either relative (-7d) or exact (YYYY-MM-DD) format
dueTime:
type: string
description: due time, which is a LocalTime
ProductItem:
type: object
required:
- productId
- stripePriceId
properties:
productId:
type: string
example: 588f7ee98f138b19220041a7
stripePriceId:
type: string
LayoutColumn:
type: object
required:
- blocks
properties:
blocks:
type: array
items:
$ref: '#/components/schemas/Block'
FieldOptions:
type: object
properties:
min:
type: string
description: minimum value, for numeric and date fields
max:
type: string
description: maximum value, for numeric and date fields
minItems:
type: integer
format: int32
maxItems:
type: integer
format: int32
stackRank:
type: boolean
step:
type: number
enableEditDialog:
type: boolean
requiredJobField:
type: boolean
excludeTargetPersonId:
type: boolean
maxLength:
type: integer
format: int32
readOnly:
type: boolean
includeFormer:
type: boolean
effectiveDated:
type: boolean
unique:
type: boolean
required:
type: boolean
Block:
type: object
properties:
type:
type: string
description: the type of this block, or null if legacy
enum:
- CONTENT
- TASK
- CALENDAR
label:
type: string
description: human readable label for this block
height:
type: object
description: fixed height in px, or expand if “stretch”, or fit to contents if null
targetFilter:
type: string
description: filter condition expression applied to this block, used to determine whether the content appears on the target or not
readFilter:
type: string
description: filter condition expression applied to this block, relative to the viewer
formIds:
type: array
description: form ids to surface responses in this block
uniqueItems: true
items:
type: string
example: 588f7ee98f138b19220041a7
fields:
type: array
description: fields retrieved in this block
items:
type: string
title:
type: string
description: title to show in block header
content:
type: string
description: template content returned in this block
contentTr:
description: template content returned in this block, translated
$ref: '#/components/schemas/Translations'
primaryButton:
description: primary CTA button
$ref: '#/components/schemas/LayoutButton'
secondaryButton:
description: secondary CTA button
$ref: '#/components/schemas/LayoutButton'
BundleInstallEntity:
type: object
required:
- entityType
- entityId
- originalId
properties:
entityType:
type: string
enum:
- ACTION
- CALENDAR
- CALENDAR_ENTRY
- CATEGORY
- FIELD
- FORM
- GROUP
- PROFILE_TAB
- QUESTION
- REPORT
- REPORT_CHART
- TASK_CONFIG
- TEMPLATE
- TIME_OFF_POLICY
- CONTENT
entityId:
type: string
example: 588f7ee98f138b19220041a7
originalId:
type: string
example: 588f7ee98f138b19220041a7
InternalOrgOptions:
type: object
properties:
adpOrganizationOID:
type: string
assessmentCount:
type: integer
format: int32
dashboardGettingStartedHidden:
type: boolean
dashboardNeedHelpHidden:
type: boolean
enableUniversalSso:
type: boolean
sequoiaOrgId:
type: string
tosAgreement:
type: boolean
fileUploadLimit:
type: integer
format: int64
maxFileUploadSize:
type: integer
format: int64
lowPriorityReports:
type: boolean
isInitialDataSynced:
type: boolean
maxReportDatapoints:
type: integer
format: int64
disableImportEvents:
type: boolean
description: Whether to disable event notifications on imports -- should only be used temporarily in performance-critical initial imports
useAlphaSlackApp:
type: boolean
description: Use the alpha Slack app (a second real Slack app sharing the global 'slack' install) instead of the default for inbound hooks and outbound messages — ChartHop-staff only, for Slack-team app-review testing
extraFields:
type: object
additionalProperties:
type: object
PreloadResponse:
type: object
required:
- org
- orgs
- user
- groupTypes
- fields
- forms
- featureAccess
- categories
properties:
org:
$ref: '#/components/schemas/Org'
orgs:
type: array
items:
$ref: '#/components/schemas/Org'
user:
$ref: '#/components/schemas/User'
role:
$ref: '#/components/schemas/Role'
viewUser:
$ref: '#/components/schemas/User'
viewRole:
$ref: '#/components/schemas/Role'
groupTypes:
type: array
items:
$ref: '#/components/schemas/GroupType'
fields:
type: array
items:
$ref: '#/components/schemas/Field'
forms:
type: array
items:
$ref: '#/components/schemas/Form'
exchangeRate:
$ref: '#/components/schemas/ExchangeRate'
stock:
$ref: '#/components/schemas/OrgStockData'
job:
$ref: '#/components/schemas/Job'
customer:
$ref: '#/components/schemas/Customer'
customerDetails:
$ref: '#/components/schemas/CustomerDetails'
featureAccess:
type: array
items:
type: string
enum:
- AI_ACTION
- AI_AGENT
- AI_API_WRITE
- AI_SLACK_TEAM_CHAT
- ATS_SYNC
- BUDGET
- COMPENSATION_REVIEW
- CUSTOM_CALENDAR
- CUSTOM_FIELD
- CUSTOM_FIELD_READONLY
- CUSTOM_FORM
- CUSTOM_PROFILE_TAB
- CUSTOM_ROLE
- FORM_ANONYMOUS
- FORM_RELEASE
- FORM_SIGNATURE
- GOAL
- MULTI_PAYROLL
- PERFORMANCE_REVIEW
- REPORT
- REPORT_READONLY
- SCENARIO
- SIGNATURE
- SIGNATURE_QES
- SIMPLE_WORKFLOWS
- SURVEY
- TABLE
- TEMPLATE
- WORKDAY_ADAPTIVE
- PAYROLL_OUTBOUND
- APPROVAL_WORKFLOWS
- CONTENT
- IDENTITY_OUTBOUND
- ONBOARDING_OFFBOARDING
- TIMEOFF
enabledFeatureOptions:
type: array
items:
$ref: '#/components/schemas/FeatureAccessOption'
categories:
type: array
items:
$ref: '#/components/schemas/Category'
categorySort:
$ref: '#/components/schemas/CategorySort'
orgConfig:
$ref: '#/components/schemas/OrgConfig'
uiAccess:
type: array
uniqueItems: true
items:
type: string
GrantAlias:
type: object
required:
- grantType
- enabled
properties:
alias:
type: string
grantType:
type: string
enum:
- ISO
- NSO
- RSU
- SAR
- PERFORMANCE_SHARES
- PHANTOM_STOCK
- RSA
enabled:
type: boolean
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'
ExchangeRate:
type: object
required:
- id
- date
- currency
- rates
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: org id, if an org-specific exchange rate is in use
example: 588f7ee98f138b19220041a7
date:
type: string
format: date
description: date
currency:
type: string
description: base currency
rates:
type: object
description: exchange rates, per currency - the multiplier to convert the base currency into the foreign currency
additionalProperties:
type: number
updateAt:
type: string
description: updated timestamp
example: '2017-01-24T13:57:52Z'
Policy:
type: object
required:
- id
- label
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent organization id (empty if global)
example: 588f7ee98f138b19220041a7
label:
type: string
description: human-readable full name of policy
example: View Compensation
minItems: 3
maxItems: 80
description:
type: string
description: description of policy
example: This policy allows compensation to be viewed.
minItems: 0
maxItems: 1000
rules:
type: array
description: the rules that define the policy
items:
$ref: '#/components/schemas/PolicyRule'
roles:
type: array
description: the roles the policy is attached to
uniqueItems: true
items:
$ref: '#/components/schemas/Role'
users:
type: array
description: the users the policy is attached to
uniqueItems: true
items:
$ref: '#/components/schemas/User'
userCount:
type: integer
format: int32
description: number of users the policy is attached to; populated when expand=true on the list endpoint
createId:
type: string
description: created by user id
example: 588f7ee98f138b19220041a7
createAt:
type: string
description: created timestamp
example: '2017-01-24T13:57:52Z'
updateId:
type: string
description: last updated by user id
example: 588f7ee98f138b19220041a7
updateAt:
type: string
description: last updated timestamp
example: '2017-01-24T13:57:52Z'
deleteId:
type: string
description: deleted by user id
example: 588f7ee98f138b19220041a7
deleteAt:
type: string
description: deleted timestamp
example: '2017-01-24T13:57:52Z'
FormEditAccess:
type: object
properties:
allow:
type: string
enum:
- ALWAYS
- WHILE_PROPOSED
- UNTIL_ACTIVE
- WHILE_ASSESSMENT_ACTIVE
- TIME_LIMIT
timeLimitSecs:
type: integer
format: int64
Customer:
type: object
required:
- id
- name
- status
properties:
id:
type: string
description: unique id of customer
example: 588f7ee98f138b19220041a7
name:
type: string
description: name of customer
email:
type: string
description: email address for billing purposes
billAddress:
description: mailing address for billing purposes
$ref: '#/components/schemas/Address'
industry:
type: string
description: industry that customer is in
source:
type: string
description: source of customer signup
enum:
- ADP_MARKETPLACE
- SELF_SERVE
- SELF_SERVE_TEST
- SEQUOIA_ONE
- CONNECT
status:
type: string
description: current status
enum:
- ACTIVE
- INACTIVE
- TRIAL
- CHURN
- PAYMENT_ERROR
stripeCustomerId:
type: string
description: stripe customer id
salesforceAccountId:
type: string
description: salesforce account id
pattern: ^[a-zA-Z0-9]{15}|[a-zA-Z0-9]{18}$
products:
type: array
description: products that this customer has purchased
items:
$ref: '#/components/schemas/ProductItem'
trialProducts:
type: array
description: products this customer has temporary trial access to, each bounded by a date range
items:
$ref: '#/components/schemas/TrialProduct'
restrictedFeatures:
type: array
description: features that are restricted for the customer
items:
type: string
enum:
- AI_ACTION
- AI_AGENT
- AI_API_WRITE
- AI_SLACK_TEAM_CHAT
- ATS_SYNC
- BUDGET
- COMPENSATION_REVIEW
- CUSTOM_CALENDAR
- CUSTOM_FIELD
- CUSTOM_FIELD_READONLY
- CUSTOM_FORM
- CUSTOM_PROFILE_TAB
- CUSTOM_ROLE
- FORM_ANONYMOUS
- FORM_RELEASE
- FORM_SIGNATURE
- GOAL
- MULTI_PAYROLL
- PERFORMANCE_REVIEW
- REPORT
- REPORT_READONLY
- SCENARIO
- SIGNATURE
- SIGNATURE_QES
- SIMPLE_WORKFLOWS
- SURVEY
- TABLE
- TEMPLATE
- WORKDAY_ADAPTIVE
- PAYROLL_OUTBOUND
- APPROVAL_WORKFLOWS
- CONTENT
- IDENTITY_OUTBOUND
- ONBOARDING_OFFBOARDING
- TIMEOFF
featureOptionOverrides:
type: array
description: override feature options for the customer
items:
$ref: '#/components/schemas/FeatureAccessOption'
startDate:
type: string
format: date
description: initial date of billing
endDate:
type: string
format: date
description: end of service date for churning customers -- on or after this date, service should be disabled
nextInvoiceDate:
type: string
format: date
description: date of next invoice
orgCount:
type: integer
format: int32
description: number of orgs covered by this customer
primaryHeadCount:
type: integer
format: int32
description: number of total headcount across all orgs
secondaryHeadCount:
type: integer
format: int32
description: number of total headcount across all orgs
tertiaryHeadCount:
type: integer
format: int32
description: number of total headcount across all orgs
primaryHeadCountFilter:
type: string
description: primary headcount filter - used for billing purposes
secondaryHeadCountFilter:
type: string
description: secondary headcount filter - used for billing purposes
tertiaryHeadCountFilter:
type: string
description: tertiary headcount filter - used for billing purposes
arr:
type: number
description: current ARR of the customer based on most recent invoice
trialStartDate:
type: string
format: date
description: date this customer begins their trial period
trialEndDate:
type: string
format: date
description: date this customer ends their trial period
stripeSubscriptionSync:
type: string
description: Stripe subscription settings
enum:
- SYNC
- DELETE
createAt:
type: string
description: created timestamp
example: '2017-01-24T13:57:52Z'
createId:
type: string
description: created by
example: 588f7ee98f138b19220041a7
createBehalfId:
type: string
description: created on behalf of user id
example: 588f7ee98f138b19220041a7
createAttribution:
$ref: '#/components/schemas/Attribution'
updateAt:
type: string
description: updated timestamp
example: '2017-01-24T13:57:52Z'
updateId:
type: string
description: updated by
example: 588f7ee98f138b19220041a7
updateBehalfId:
type: string
description: last updated on behalf of user id
example: 588f7ee98f138b19220041a7
updateAttribution:
$ref: '#/components/schemas/Attribution'
MessageChannelConfig:
type: object
required:
- channels
- alwaysEmail
properties:
channels:
type: array
items:
type: string
enum:
- EMAIL
- CHAT
- CHAT_SLACK
- CHAT_TEAMS
alwaysEmail:
type: boolean
WebRegisteredCredential:
type: object
required:
- credentialId
- publicKeyBase64
- userHandleBase64
- signatureCount
- createdAt
properties:
credentialId:
type: string
description: Credential id
publicKeyBase64:
type: string
description: The public key we're saving
userHandleBase64:
type: string
description: The user handle - a random 64 bits of data
signatureCount:
type: integer
format: int64
description: This is used to protect against duplicated key attacks
createdAt:
type: string
description: When was this created
MessagingConfig:
type: object
properties:
slackAppId:
type: string
slackClientId:
type: string
slackBotUserId:
type: string
CategorySort:
type: object
required:
- id
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent organization id (empty if built-in)
example: 588f7ee98f138b19220041a7
categoryIds:
type: array
description: ordered list of category ids of an org
items:
type: string
example: 588f7ee98f138b19220041a7
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'
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'
Role:
type: object
required:
- id
- label
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent organization id (empty if global)
example: 588f7ee98f138b19220041a7
label:
type: string
description: human-readable full name of role
example: Engineering People Manager
minItems: 3
maxItems: 80
description:
type: string
description: description of role
example: This role is able to create and update new job data for the engineering department.
minItems: 0
maxItems: 1000
policyIds:
type: array
description: the policies that define the role
uniqueItems: true
items:
type: string
example: 588f7ee98f138b19220041a7
policies:
type: array
description: the policies attached to the role
uniqueItems: true
items:
$ref: '#/components/schemas/Policy'
users:
type: array
description: the users the role is attached to
uniqueItems: true
items:
$ref: '#/components/schemas/User'
userCount:
type: integer
format: int32
description: number of users the role is attached to; populated when expand=true on the list endpoint
createId:
type: string
description: created by user id
example: 588f7ee98f138b19220041a7
createAt:
type: string
description: created timestamp
example: '2017-01-24T13:57:52Z'
updateId:
type: string
description: last updated by user id
example: 588f7ee98f138b19220041a7
updateAt:
type: string
description: last updated timestamp
example: '2017-01-24T13:57:52Z'
deleteId:
type: string
description: deleted by user id
example: 588f7ee98f138b19220041a7
deleteAt:
type: string
description: deleted timestamp
example: '2017-01-24T13:57:52Z'
BuiltInCategoryMap:
type: object
required:
- categoryId
- fieldIds
properties:
categoryId:
type: string
description: id of the built-in category
example: 588f7ee98f138b19220041a7
fieldIds:
type: array
description: set of custom field ids that belongs to the built-in category
uniqueItems: true
items:
type: string
example: 588f7ee98f138b19220041a7
LayoutButton:
type: object
required:
- url
- label
properties:
url:
type: string
label:
type: string
FormAiConfig:
type: object
required:
- enableRead
- enableWrite
properties:
enableRead:
type: boolean
enableWrite:
type: boolean
agentUserId:
type: string
example: 588f7ee98f138b19220041a7
instructions:
type: string
label:
type: string
agentSubmit:
type: string
description: 'whether AI agents are allowed to submit this form: null/absent (never), CHAT (only when in an interactive chat with a human), AUTO (also when running autonomously). Defaults to never.'
enum:
- CHAT
- AUTO
TrialProduct:
type: object
required:
- productId
- startDate
- endDate
properties:
productId:
type: string
description: id of the product the customer is trialing
example: 588f7ee98f138b19220041a7
startDate:
type: string
format: date
description: first date the trial grants access (inclusive)
endDate:
type: string
format: date
description: last date the trial grants access (inclusive)
GroupType:
type: object
required:
- id
- name
- fieldName
- membershipType
- assignmentType
- parentTypesAllowed
- enableApprovals
- defaultSensitivity
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent organization id
example: 588f7ee98f138b19220041a7
name:
type: string
description: unique name of group
example: Engineering
minItems: 1
maxItems: 80
fieldName:
type: string
description: field name for field representing membership in this type of group
example: engineering
pattern: ^[a-zA-Z][a-zA-Z0-9_]+$
code:
type: string
description: external code identifier of the group type
example: D123
requirePositions:
type: boolean
description: whether the group requires members to be positions
description:
type: string
description: description of the group type
minItems: 0
maxItems: 1000
membershipType:
type: string
description: whether members can be in multiple groups or only a single group of this type
enum:
- SINGLE
- MULTIPLE
assignmentType:
type: string
description: whether members are added by manual assignment or by matching a filter expression (or both)
enum:
- ASSIGNED
- EXPR
- COMBINATION
parentTypesAllowed:
type: string
description: group types allowed for parent groups
enum:
- SAME
- OTHER
- BOTH
- NONE
otherGroupTypeId:
type: string
description: if parents can be another group type the ID of that group type
example: 588f7ee98f138b19220041a7
sourceGroupTypeId:
type: string
description: for a portfolio mirror, the child org group type this type was replicated from
example: 588f7ee98f138b19220041a7
enableApprovals:
type: boolean
description: whether approvals can be used when changing membership
hidden:
type: boolean
description: when true, hides groups of this type from the Org Chart Groups view and from profile tags; null is treated as visible
defaultSensitivity:
type: string
description: default sensitivity for groups of this type
enum:
- GLOBAL
- ORG
- SENSITIVE
- PERSONAL
- MANAGER
- HIGH
- PRIVATE
positions:
type: array
description: list of positions (e.g. 'lead') that exist on groups of this type
items:
$ref: '#/components/schemas/GroupPosition'
membershipFieldId:
type: string
description: ID of the field that indicates membership in groups of this type
example: 588f7ee98f138b19220041a7
shareAccess:
type: array
description: list of users and groups who have the content shared with them
items:
$ref: '#/components/schemas/ShareAccess'
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-24
# --- truncated at 32 KB (126 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/charthop/refs/heads/main/openapi/charthop-preload-api-openapi.yml