Charthop profile-tab API
The profile-tab API from Charthop — 7 operation(s) for profile-tab.
The profile-tab API from Charthop — 7 operation(s) for profile-tab.
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-profile-tab-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 Profile Tab API
contact:
name: ChartHop
url: https://www.charthop.com
email: support@charthop.com
servers:
- url: https://localhost
- url: http://localhost
tags:
- name: profile-tab
paths:
/v1/org/{orgId}/profile-tab:
get:
tags:
- profile-tab
summary: Return all profile tabs in the organization paginated
operationId: findProfileTabs
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
- name: from
in: query
description: Content 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/ResultsProfileTab'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
post:
tags:
- profile-tab
summary: Create a profile tab
operationId: createProfileTab
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/ProfileTab'
'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/CreateProfileTab'
description: Profile tab data to create
required: true
/v1/org/{orgId}/profile-tab/job/{jobId}:
get:
tags:
- profile-tab
summary: Return all profile tabs applicable to a particular job
operationId: findProfileTabsForJob
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: jobId
in: path
description: Job id
required: true
schema:
type: string
- name: date
in: query
description: Date
required: false
schema:
type: string
format: date
- name: fields
in: query
description: Return profile tabs that contain particular fields (comma-separated)
required: false
schema:
type: string
- name: formIds
in: query
description: Return profile tabs that contain particular formIds (comma-separated)
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ResultsProfileTabSummary'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
/v1/org/{orgId}/profile-tab/job/{jobId}/profile-tab/{tabId}:
get:
tags:
- profile-tab
summary: Fetch and evaluate the content of a particular profile tab id, relative to a…
operationId: evaluateProfileTabForJob
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: jobId
in: path
description: Job id
required: true
schema:
type: string
- name: tabId
in: path
description: Profile tab id
required: true
schema:
type: string
- name: date
in: query
description: Date
required: false
schema:
type: string
format: date
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileTabSummary'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
/v1/org/{orgId}/profile-tab/person/{personId}:
get:
tags:
- profile-tab
summary: Return all profile tabs applicable to a particular person
operationId: findProfileTabsForPerson
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
- name: date
in: query
description: Date
required: false
schema:
type: string
format: date
- name: fields
in: query
description: Return profile tabs that contain particular fields (comma-separated)
required: false
schema:
type: string
- name: formIds
in: query
description: Return profile tabs that contain particular formIds (comma-separated)
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ResultsProfileTabSummary'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
/v1/org/{orgId}/profile-tab/person/{personId}/profile-tab/{tabId}:
get:
tags:
- profile-tab
summary: Fetch and evaluate the content of a particular profile tab id, relative to a…
operationId: evaluateProfileTabForPerson
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
- name: tabId
in: path
description: Profile tab id
required: true
schema:
type: string
- name: date
in: query
description: Date
required: false
schema:
type: string
format: date
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileTabSummary'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
/v1/org/{orgId}/profile-tab/person/{personId}/profile-tab/{tabId}/history:
get:
tags:
- profile-tab
summary: Evaluate the history (in the form of various cards) on a particular profile tab…
operationId: findProfileTabHistory
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
- name: tabId
in: path
description: Profile tab id
required: true
schema:
type: string
- name: from
in: query
description: Search backwards in time from timestamp
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
- name: format
in: query
description: Data format to use; default is json, can also use json-extended or json-readable
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ResultsProfileTabResponseCard'
'400':
description: bad request
'401':
description: not authorized
'404':
description: not found
/v1/org/{orgId}/profile-tab/{profileTabId}:
get:
tags:
- profile-tab
summary: Return a particular profile tab by id
operationId: getProfileTab
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: profileTabId
in: path
description: Content id
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileTab'
'400':
description: bad request
'404':
description: not found
patch:
tags:
- profile-tab
summary: Update an existing profile tab
operationId: updateProfileTab
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: profileTabId
in: path
description: Profile tab id
required: true
schema:
type: string
responses:
'204':
description: 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/UpdateProfileTab'
description: Profile tab data to update
required: true
delete:
tags:
- profile-tab
summary: Delete a profile tab
operationId: deleteProfileTab
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
schema:
type: string
- name: profileTabId
in: path
description: Profile tab 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
components:
schemas:
Money:
type: object
required:
- amount
- currency
properties:
amount:
type: number
currency:
type: string
places:
type: integer
format: int32
TimeOff:
type: object
required:
- id
- startDate
- endDate
properties:
id:
type: string
description: unique id of a time off request
startDate:
type: string
format: date
description: start date of time off, inclusive
endDate:
type: string
format: date
description: end date of time off, inclusive
days:
type: number
description: number of days used
hours:
type: number
description: number of hours used
type:
type: string
description: type of time off
note:
type: string
description: notes on the time off
approval:
type: string
description: approval status of the time off
enum:
- APPROVED
- PENDING
- CANCELLED
- REJECTED
- SUPERSEDED
LayoutColumn:
type: object
required:
- blocks
properties:
blocks:
type: array
items:
$ref: '#/components/schemas/Block'
ProfileTabResponseCard:
type: object
required:
- id
- date
properties:
id:
type: string
example: 588f7ee98f138b19220041a7
date:
type: string
format: date
change:
$ref: '#/components/schemas/Change'
formResponse:
$ref: '#/components/schemas/FormResponse'
formVersion:
$ref: '#/components/schemas/FormVersionInfo'
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'
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
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'
FormQuestionInfo:
type: object
required:
- id
- question
properties:
id:
type: string
example: 588f7ee98f138b19220041a7
question:
type: string
questionTr:
$ref: '#/components/schemas/Translations'
ProfileTab:
type: object
required:
- id
- orgId
- label
- blocks
- status
properties:
id:
type: string
description: globally unique id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent organization id
example: 588f7ee98f138b19220041a7
label:
type: string
description: human-readable name of profile tab
example: Performance
labelTr:
description: translations for the human-readable label
$ref: '#/components/schemas/Translations'
blocks:
type: array
description: ordered list of blocks contained by profile tab
items:
$ref: '#/components/schemas/Block'
layout:
description: block layout configuration
$ref: '#/components/schemas/Layout'
status:
type: string
description: status of the profile tab
enum:
- ACTIVE
- INACTIVE
targetFilter:
type: string
description: filter that controls on which profiles this tab will appear
readFilter:
type: string
description: filter that controls which viewers can read this profile tab. The profileTab:read permission, if present, overrides this filter
sort:
type: integer
format: int32
description: sort order
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'
LayoutButton:
type: object
required:
- url
- label
properties:
url:
type: string
label:
type: string
Change:
type: object
required:
- id
- jobId
- orgId
- type
- date
- status
properties:
id:
type: string
description: unique id
example: 588f7ee98f138b19220041a7
jobId:
type: string
description: job id
example: 588f7ee98f138b19220041a7
orgId:
type: string
description: parent organization id
example: 588f7ee98f138b19220041a7
scenarioId:
type: string
description: scenario that this change belongs to
example: 588f7ee98f138b19220041a7
mergeScenarioId:
type: string
description: scenario that this change was merged in from, if the change originally came from a scenario
example: 588f7ee98f138b19220041a7
parentChangeId:
type: string
description: change that this change emanates from
example: 588f7ee98f138b19220041a7
priorStateChangeId:
type: string
description: connects this change to a previous version if itself that you might want to roll back to because of bad edits
example: 588f7ee98f138b19220041a7
type:
type: string
description: type of change
enum:
- HIRE
- DEPART
- MOVE
- UPCOMING
- CREATE
- UPDATE
- DATA
- DELETE
- RELATE
- BACKFILL
date:
type: string
format: date
description: date of change
sort:
type: integer
format: int64
description: sort order of change
announceDate:
type: string
format: date
description: for HIRE and DEPART changes, the announce date, if the announce date is different from the date of change
status:
type: string
description: whether the change is active or not
enum:
- ACTIVE
- STRUCK
- CONFLICT
- INACTIVE
- PROPOSED
personId:
type: string
description: the id of the person involved, or empty if no person attached to job
example: 588f7ee98f138b19220041a7
otherJobId:
type: string
description: for MOVE changes, the id of the job moving from; for RELATE changes, the id of the other job
example: 588f7ee98f138b19220041a7
otherPersonId:
type: string
description: for MOVE changes, the id of the other person involved in the move
example: 588f7ee98f138b19220041a7
departType:
type: string
description: for DEPART changes, the type of departure
enum:
- VOLUNTARY
- INVOLUNTARY
departRegret:
type: string
description: for DEPART changes, whether the departure was regrettable
enum:
- REGRET
- NONREGRET
promotionType:
type: string
description: if it's a promotion or a demotion
enum:
- PROMOTION
- DEMOTION
- NONE
reason:
type: string
description: the reason for the change
relateType:
type: string
description: for RELATE changes, the type of the relationship
enum:
- MANAGER
- DIRECT
- INDIRECT_MANAGER
- INDIRECT
- NONE
refs:
type: array
description: list of ids referenced in text field body, for indexing purposes only
items:
type: object
job:
description: for CREATE changes, the initial job data; for other changes, the title and groups at the time of change
$ref: '#/components/schemas/PartialJob'
otherJob:
description: if otherJobId present, contains title and person.startDate of the other job at the time of change
$ref: '#/components/schemas/PartialJob'
formId:
type: string
description: if this change was data submitted by a form, the id of that form
example: 588f7ee98f138b19220041a7
formResponseId:
type: string
description: if this change is associated with a form response, the id of that form response
example: 588f7ee98f138b19220041a7
assessmentId:
type: string
description: if this change is associated with a assessment, the id of that assessment
example: 588f7ee98f138b19220041a7
update:
description: for UPDATE changes, the data being updated
$ref: '#/components/schemas/JobUpdate'
upcoming:
description: for UPCOMING changes, the change ahead
$ref: '#/components/schemas/UpcomingChange'
conflict:
type: string
description: for changes that have been struck due to a merge conflict, the description of the conflict
note:
type: string
description: note on the change
createId:
type: string
description: created by user id
example: 588f7ee98f138b19220041a7
createBehalfId:
type: string
description: created on behalf of user id
example: 588f7ee98f138b19220041a7
createAttribution:
description: attribution for the create
$ref: '#/components/schemas/Attribution'
mergeId:
type: string
description: merged by user id, if this change was merged
example: 588f7ee98f138b19220041a7
createAt:
type: string
description: created timestamp
example: '2017-01-24T13:57:52Z'
updateAt:
type: string
description: updated timestamp
example: '2017-01-24T13:57:52Z'
updateId:
type: string
description: updated by user id
example: 588f7ee98f138b19220041a7
updateBehalfId:
type: string
description: last updated on behalf of user id
example: 588f7ee98f138b19220041a7
updateAttribution:
description: attribution for the last update
$ref: '#/components/schemas/Attribution'
statusAt:
type: string
description: timestamp of status change
approvalAt:
type: string
description: timestamp of approval
approvalId:
type: string
description: approved by user id
example: 588f7ee98f138b19220041a7
approvalNote:
type: string
description: approval/rejection note
example: Not acceptable
approval:
type: string
description: if approval is required, who is allowed to approve
enum:
- MANAGER
- GRAND_MANAGER
authorSensitive:
type: string
description: view sensitivity for the author author of this form - the level of view access required to view the createId and updateId fields
enum:
- GLOBAL
- ORG
- SENSITIVE
- PERSONAL
- MANAGER
- HIGH
- PRIVATE
canEdit:
type: boolean
description: flag indicating whether authorized user can modify this change (will vary depending on user)
FormResponseAnswer:
type: object
required:
- id
- questionId
properties:
id:
type: string
example: 588f7ee98f138b19220041a7
questionId:
type: string
example: 588f7ee98f138b19220041a7
value:
type: object
type:
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
FormVersionInfo:
type: object
required:
- id
- label
- displayName
- questions
properties:
id:
type: string
example: 588f7ee98f138b19220041a7
label:
type: string
displayName:
type: string
displayNameTr:
$ref: '#/components/schemas/Translations'
questions:
type: array
items:
$ref: '#/components/schemas/FormQuestionInfo'
UpdateProfileTab:
type: object
properties:
label:
type: string
description: human-readable name of profile tab
example: Performance
labelTr:
description: translations for the human-readable label
$ref: '#/components/schemas/Translations'
blocks:
type: array
description: ordered list of blocks contained by profile tab
items:
$ref: '#/components/schemas/Block'
layout:
description: block layout configuration
$ref: '#/components/schemas/Layout'
status:
type: string
description: status of the profile tab
enum:
- ACTIVE
- INACTIVE
targetFilter:
type: string
description: filter that controls on which profiles this tab will appear
readFilter:
type: string
description: filter that controls which viewers can read this profile tab. The profileTab:read permission, if present, overrides this filter
sort:
type: integer
format: int32
description: sort order
LayoutRow:
type: object
required:
- columns
- format
properties:
columns:
type: array
items:
$ref: '#/components/schemas/LayoutColumn'
format:
type: string
VariableComp:
type: object
required:
- type
- interval
properties:
type:
type: string
description: compensation type
enum:
- BONUS
- COMMISSION
interval:
type: string
description: compensation interval
enum:
- YEARLY
description: 'variable compensation
Implementations: VariableCompPercent, VariableCompPercent'
discriminator:
propertyName: compType
Comp:
type: object
properties:
baseComp:
description: base pay (money) with interval (annual or hourly)
$ref: '#/components/schemas/PayInterval'
variableTargets:
type: array
description: variable compensation (money or percent)
items:
$ref: '#/components/schemas/VariableComp'
grantShares:
type: integer
format: int32
description: planned stock grant, in shares
example: '5000'
grantValue:
type: integer
format: int32
description: planned stock grant, in value (based on the stock's currency, not the comp)
example: '5000'
grantType:
type: string
description: planned stock grant type
enum:
- ISO
- NSO
- RSU
- SAR
- PERFORMANCE_SHARES
- PHANTOM_STOCK
- RSA
CreateProfileTab:
type: object
required:
- label
- blocks
- status
properties:
label:
type: string
description: human-readable name of profile tab
example: Performance
labelTr:
description: translations for the human-readable label
$ref: '#/components/schemas/Translations'
blocks:
type: array
description: ordered list of blocks contained by profile tab
items:
$ref: '#/components/schemas/Block'
layout:
description: block layout configuration
$ref: '#/components/schemas/Layout'
status:
type: string
description: status of the profile tab
# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/charthop/refs/heads/main/openapi/charthop-profile-tab-api-openapi.yml