Charthop goal API
The goal API from Charthop — 5 operation(s) for goal.
The goal API from Charthop — 5 operation(s) for goal.
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-goal-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 Goal API
contact:
name: ChartHop
url: https://www.charthop.com
email: support@charthop.com
servers:
- url: https://localhost
- url: http://localhost
tags:
- name: goal
paths:
/v1/org/{orgId}/goal:
get:
tags:
- goal
summary: Find goals
operationId: findGoals
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: personId
in: query
description: Person id to filter goals by (owner or support)
required: false
schema:
type: string
- name: groupId
in: query
description: Group id to filter goals by
required: false
schema:
type: string
- name: personFilter
in: query
description: Person filter
required: false
schema:
type: string
- name: originalGoalId
in: query
description: Original goal id to filter by
required: false
schema:
type: string
- name: date
in: query
description: Date to filter goals as-of
required: false
schema:
type: string
format: date
- name: fromId
in: query
description: Starting goal id for pagination
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/ResultsGoal'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
post:
tags:
- goal
summary: Create a new goal
operationId: createGoal
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
responses:
'201':
description: created
content:
application/json:
schema:
$ref: '#/components/schemas/Goal'
'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/CreateGoal'
description: Goal data to create
required: true
/v1/org/{orgId}/goal/export:
post:
tags:
- goal
summary: Export goals to CSV format
operationId: exportGoals
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: date
in: query
description: Date to filter goals as-of
required: false
schema:
type: string
format: date
- name: personFilter
in: query
description: Person filter
required: false
schema:
type: string
- name: format
in: query
description: Output format (e.g. readable for friendly column headers)
required: false
schema:
type: string
responses:
'201':
description: process started
content:
application/json:
schema:
$ref: '#/components/schemas/Process'
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/org/{orgId}/goal/{goalId}:
get:
tags:
- goal
summary: Get a goal by id
operationId: getGoal
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: goalId
in: path
description: Goal id
required: true
schema:
type: string
responses:
'200':
description: ok
content:
application/json:
schema:
$ref: '#/components/schemas/Goal'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
patch:
tags:
- goal
summary: Update an existing goal
operationId: updateGoal
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: goalId
in: path
description: Goal id
required: true
schema:
type: string
responses:
'200':
description: updated
content:
application/json:
schema:
$ref: '#/components/schemas/Goal'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateGoal'
description: Goal data to update
required: true
delete:
tags:
- goal
summary: Delete a goal
operationId: deleteGoal
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: goalId
in: path
description: Goal id
required: true
schema:
type: string
responses:
'204':
description: deleted
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/org/{orgId}/goal/{goalId}/copy:
post:
tags:
- goal
summary: Copy a goal and its targets into a new goal
operationId: copyGoal
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: goalId
in: path
description: Goal id to copy
required: true
schema:
type: string
responses:
'201':
description: created
content:
application/json:
schema:
$ref: '#/components/schemas/Goal'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateGoal'
description: Optional property overrides for the copied goal
/v1/org/{orgId}/goal/{goalId}/graph:
get:
tags:
- goal
summary: Find parent and child goals, from a starting goal id
operationId: findGoalsGraph
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: goalId
in: path
description: Starting goal id to look upwards and downwards from
required: true
schema:
type: string
- name: date
in: query
description: Date to filter goals as-of
required: false
schema:
type: string
format: date
- name: depth
in: query
description: Number of levels down to search child goals (defaults to 1)
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/ResultsGoal'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
components:
schemas:
Attribution:
type: object
properties:
principalUserId:
type: string
example: 588f7ee98f138b19220041a7
agentUserIds:
type: array
items:
type: string
example: 588f7ee98f138b19220041a7
eventId:
type: string
example: 588f7ee98f138b19220041a7
aiChatId:
type: string
example: 588f7ee98f138b19220041a7
aiToolUseId:
type: string
channel:
type: string
enum:
- WEB
- MOBILE
- SLACK
- TEAMS
- MCP
LogData:
type: object
required:
- level
- at
- data
properties:
level:
type: string
enum:
- INFO
- WARN
- ERROR
at:
type: string
description: created timestamp
example: '2017-01-24T13:57:52Z'
message:
type: string
data:
type: object
additionalProperties:
type: object
GoalProgressForecast:
type: object
required:
- goalTargetId
- type
- value
properties:
goalTargetId:
type: string
example: 588f7ee98f138b19220041a7
type:
type: string
enum:
- WORST
- COMMIT
- CALL
- LIKELY
- BEST
label:
type: string
value:
anyOf:
- type: string
- type: number
- type: boolean
GoalTargetWithValue:
type: object
required:
- goalTargetId
- label
- value
properties:
goalTargetId:
type: string
example: 588f7ee98f138b19220041a7
label:
type: string
value:
anyOf:
- type: string
- type: number
- type: boolean
color:
type: string
UpdateGoal:
type: object
properties:
goalTypeId:
type: string
description: goal type
example: 588f7ee98f138b19220041a7
parentGoalId:
type: string
description: parent goal id, for cascading goals
example: 588f7ee98f138b19220041a7
originalGoalId:
type: string
description: original goal id, linking this goal to the goal it was copied from
example: 588f7ee98f138b19220041a7
relatedGoalIds:
type: array
description: list of other goals that are related to this goal
items:
type: string
example: 588f7ee98f138b19220041a7
ownerPersonIds:
type: array
description: list of persons who are responsible for this goal
items:
type: string
example: 588f7ee98f138b19220041a7
supportPersonIds:
type: array
description: list of persons who help support this goal
items:
type: string
example: 588f7ee98f138b19220041a7
groupIds:
type: array
description: list of groups who are responsible for this goal
items:
type: string
example: 588f7ee98f138b19220041a7
label:
type: string
description: human-readable name of the goal
example: Increase Revenue at least 10%
slug:
type: string
description: url-safe slug for the goal, auto-generated from label if not provided
description:
type: string
description: human-readable description of the goal
startDate:
type: string
format: date
description: start date for this goal
endDate:
type: string
format: date
description: end date for this goal
sensitive:
type: string
description: sensitivity level of goal
enum:
- GLOBAL
- ORG
- SENSITIVE
- PERSONAL
- MANAGER
- HIGH
- PRIVATE
shareAccess:
type: array
description: users who are specifically granted permission to view or edit this goal
items:
$ref: '#/components/schemas/ShareAccess'
progressUpdateConfig:
description: configuration for automated progress update reminders
$ref: '#/components/schemas/GoalProgressUpdateConfig'
Goal:
type: object
required:
- id
- orgId
- status
- goalTypeId
- label
- slug
- startDate
- endDate
- sensitive
- shareAccess
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent organization id
example: 588f7ee98f138b19220041a7
status:
type: string
description: status
enum:
- DRAFT
- ACTIVE
- DONE
goalTypeId:
type: string
description: goal type
example: 588f7ee98f138b19220041a7
parentGoalId:
type: string
description: parent goal id, for cascading goals
example: 588f7ee98f138b19220041a7
originalGoalId:
type: string
description: original goal id, linking this goal to the goal it was copied from
example: 588f7ee98f138b19220041a7
relatedGoalIds:
type: array
description: list of other goals that are related to this goal
items:
type: string
example: 588f7ee98f138b19220041a7
ownerPersonIds:
type: array
description: list of persons who are responsible for this goal
items:
type: string
example: 588f7ee98f138b19220041a7
supportPersonIds:
type: array
description: list of persons who help support this goal
items:
type: string
example: 588f7ee98f138b19220041a7
groupIds:
type: array
description: list of groups who are responsible for this goal
items:
type: string
example: 588f7ee98f138b19220041a7
label:
type: string
description: human-readable name of the goal
example: Increase Revenue at least 10%
slug:
type: string
description: url-safe slug for the goal, auto-generated from label if not provided
description:
type: string
description: human-readable description of the goal
startDate:
type: string
format: date
description: start date for this goal
endDate:
type: string
format: date
description: end date for this goal
sensitive:
type: string
description: sensitivity level of goal
enum:
- GLOBAL
- ORG
- SENSITIVE
- PERSONAL
- MANAGER
- HIGH
- PRIVATE
shareAccess:
type: array
description: users who are specifically granted permission to view or edit this goal
items:
$ref: '#/components/schemas/ShareAccess'
progressUpdateConfig:
description: configuration for automated progress update reminders
$ref: '#/components/schemas/GoalProgressUpdateConfig'
progressSummary:
description: overall progress summary, denormalized and calculated periodically
$ref: '#/components/schemas/GoalProgressSummary'
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'
ResultsAccess:
type: object
required:
- allowed
properties:
ids:
type: array
uniqueItems: true
items:
type: string
example: 588f7ee98f138b19220041a7
allowed:
type: array
uniqueItems: true
items:
$ref: '#/components/schemas/AccessAction'
CreateGoal:
type: object
required:
- goalTypeId
- label
- startDate
- endDate
- sensitive
properties:
goalTypeId:
type: string
description: goal type
example: 588f7ee98f138b19220041a7
parentGoalId:
type: string
description: parent goal id, for cascading goals
example: 588f7ee98f138b19220041a7
originalGoalId:
type: string
description: original goal id, linking this goal to the goal it was copied from
example: 588f7ee98f138b19220041a7
relatedGoalIds:
type: array
description: list of other goals that are related to this goal
items:
type: string
example: 588f7ee98f138b19220041a7
ownerPersonIds:
type: array
description: list of persons who are responsible for this goal
items:
type: string
example: 588f7ee98f138b19220041a7
supportPersonIds:
type: array
description: list of persons who help support this goal
items:
type: string
example: 588f7ee98f138b19220041a7
groupIds:
type: array
description: list of groups who are responsible for this goal
items:
type: string
example: 588f7ee98f138b19220041a7
label:
type: string
description: human-readable name of the goal
example: Increase Revenue at least 10%
slug:
type: string
description: url-safe slug for the goal, auto-generated from label if not provided
description:
type: string
description: human-readable description of the goal
startDate:
type: string
format: date
description: start date for this goal
endDate:
type: string
format: date
description: end date for this goal
sensitive:
type: string
description: sensitivity level of goal
enum:
- GLOBAL
- ORG
- SENSITIVE
- PERSONAL
- MANAGER
- HIGH
- PRIVATE
shareAccess:
type: array
description: users who are specifically granted permission to view or edit this goal
items:
$ref: '#/components/schemas/ShareAccess'
progressUpdateConfig:
description: configuration for automated progress update reminders
$ref: '#/components/schemas/GoalProgressUpdateConfig'
MessageChannelConfig:
type: object
required:
- channels
- alwaysEmail
properties:
channels:
type: array
items:
type: string
enum:
- EMAIL
- CHAT
- CHAT_SLACK
- CHAT_TEAMS
alwaysEmail:
type: boolean
ResultsGoal:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/Goal'
next:
type: string
access:
type: array
items:
$ref: '#/components/schemas/ResultsAccess'
GoalProgressUpdateConfig:
type: object
required:
- schedule
properties:
schedule:
type: string
description: schedule to send progress reminders, in crontab format
example: 5 4 * * *
messageChannel:
description: the channel to send progress reminders to
$ref: '#/components/schemas/MessageChannelConfig'
message:
type: string
description: custom message, if any, to include with progress reminders
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
Process:
type: object
required:
- id
- orgId
- label
- type
- status
- runUserId
- createId
- createAt
- options
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent org id
example: 588f7ee98f138b19220041a7
label:
type: string
description: human-readable label that identifies this process
type:
type: string
description: process type
status:
type: string
description: current status of process
enum:
- PENDING
- RUNNING
- DONE
- ERROR
filePath:
type: string
description: data file path
logPath:
type: string
description: data log path
runUserId:
type: string
description: user id who is running the process
example: 588f7ee98f138b19220041a7
parentProcessId:
type: string
description: process id of parent process
example: 588f7ee98f138b19220041a7
createId:
type: string
description: created by user id (user who requested the process run)
example: 588f7ee98f138b19220041a7
createBehalfId:
type: string
description: created on behalf of user id
example: 588f7ee98f138b19220041a7
createAttribution:
$ref: '#/components/schemas/Attribution'
createAt:
type: string
description: created timestamp
example: '2017-01-24T13:57:52Z'
updateId:
type: string
description: last updated by user id
example: 588f7ee98f138b19220041a7
updateBehalfId:
type: string
description: last updated on behalf of user id
example: 588f7ee98f138b19220041a7
updateAttribution:
$ref: '#/components/schemas/Attribution'
updateAt:
type: string
description: last updated timestamp
example: '2017-01-24T13:57:52Z'
startAt:
type: string
description: started at timestamp
example: '2017-01-24T13:57:52Z'
endAt:
type: string
description: ended at timestamp
example: '2017-01-24T13:57:52Z'
message:
type: string
description: status or error message
progress:
type: number
format: double
description: percent progress so far
internalError:
type: string
description: internal-only error message
options:
type: object
description: options passed to the process
results:
type: object
description: results summary for the process
additionalProperties:
type: object
logDataList:
type: array
description: list of log data that occurred during running of this process
items:
$ref: '#/components/schemas/LogData'
state:
type: object
description: process-specific state data
summary:
type: string
description: human-readable, searchable summary of what this process did
appId:
type: string
description: app id of the process
example: 588f7ee98f138b19220041a7
uuid:
type: string
description: unique ID of the process at queue time
example: 84db3c6e-0877-4436-8af1-768c06b29586
GoalTargetActual:
type: object
required:
- goalTargetId
properties:
goalTargetId:
type: string
example: 588f7ee98f138b19220041a7
value:
anyOf:
- type: string
- type: number
- type: boolean
GoalProgressSummary:
type: object
properties:
id:
type: string
example: 588f7ee98f138b19220041a7
percent:
type: number
confidence:
type: integer
format: int32
done:
type: integer
format: int32
progressAt:
type: string
at:
type: string
actuals:
type: array
items:
$ref: '#/components/schemas/GoalTargetActual'
forecasts:
type: array
items:
$ref: '#/components/schemas/GoalProgressForecast'
targetValues:
type: array
items:
$ref: '#/components/schemas/GoalTargetWithValue'
comment:
type: string
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