Charthop org API
The org API from Charthop — 13 operation(s) for org.
The org API from Charthop — 13 operation(s) for org.
swagger: '2.0'
info:
description: REST API for ChartHop
version: V1.0.0
title: ChartHop access org API
contact:
name: ChartHop
url: https://www.charthop.com
email: support@charthop.com
host: localhost
schemes:
- https
- http
consumes:
- application/json
produces:
- application/json
tags:
- name: org
paths:
/org/{slug}:
get:
tags:
- org
summary: Return validation for a org by slug
operationId: getOrgBySlugNoAuth
consumes:
- application/json
produces:
- application/json
parameters:
- name: slug
in: path
description: Org slug
required: true
type: string
responses:
'400':
description: bad request
'404':
description: not found
/v1/org:
get:
tags:
- org
summary: Return all visible orgs, paginated by name
operationId: findOrgs
consumes:
- application/json
produces:
- application/json
parameters:
- name: from
in: query
description: Org id to start from
required: false
type: string
- name: q
in: query
description: Search query
required: false
type: string
- name: limit
in: query
description: Number of results to return
required: false
type: integer
format: int32
- name: customerId
in: query
description: Find orgs belonging to a particular customer id
required: false
type: string
- name: realOnly
in: query
description: Include only orgs where type is REAL?
required: false
type: boolean
- name: lastCreateAt
in: query
description: Only include orgs whose last createAt occurred after the date
required: false
type: string
- name: lastActiveAt
in: query
description: Only include orgs whose last activeAt occurred after the date
required: false
type: string
- name: internalOptions
in: query
description: Filter orgs by internal option key-value pair
required: false
type: string
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/ResultsOrg'
'400':
description: bad request
'404':
description: not found
post:
tags:
- org
summary: Create a new org
operationId: createOrg
consumes:
- application/json
produces:
- application/json
parameters:
- name: body
in: body
description: Org data to create
required: true
schema:
$ref: '#/definitions/CreateOrg'
responses:
'201':
description: org created
schema:
$ref: '#/definitions/Org'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
/v1/org/app-install-code/validate:
post:
tags:
- org
summary: Validate authorization code
operationId: validateAppInstallAuthorizationCode
consumes:
- application/json
produces:
- application/json
parameters:
- name: body
in: body
description: Authorization code to validate
required: true
schema:
$ref: '#/definitions/AppInstallCodeValidateRequest'
responses:
'200':
description: authorization code validated
schema:
$ref: '#/definitions/AppInstallCodeValidateResponse'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/org/slug/{slug}:
get:
tags:
- org
summary: Return a particular org by slug
operationId: getOrgBySlug
consumes:
- application/json
produces:
- application/json
parameters:
- name: slug
in: path
description: Org slug
required: true
type: string
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Org'
'400':
description: bad request
'404':
description: not found
/v1/org/{orgId}:
get:
tags:
- org
summary: Return a particular org by id
operationId: getOrg
consumes:
- application/json
produces:
- application/json
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
type: string
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Org'
'400':
description: bad request
'404':
description: not found
patch:
tags:
- org
summary: Update an existing org
operationId: updateOrg
consumes:
- application/json
produces:
- application/json
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
type: string
- name: body
in: body
description: Org data to update
required: true
schema:
$ref: '#/definitions/UpdateOrg'
responses:
'204':
description: org updated
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/org/{orgId}/access:
get:
tags:
- org
summary: Return information on current user's access
operationId: getUserAccess
consumes:
- application/json
produces:
- application/json
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
type: string
responses:
'200':
description: successful operation
/v1/org/{orgId}/agreement:
post:
tags:
- org
summary: Consent on Terms of Service agreement
operationId: consentServiceAgreement
consumes:
- application/json
produces:
- application/json
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
type: string
- name: body
in: body
required: true
schema:
$ref: '#/definitions/AgreementRequest'
responses:
'400':
description: bad request
'404':
description: not found
/v1/org/{orgId}/copy-self-serve-demo-data:
post:
tags:
- org
summary: Copy self serve demo data into an org
operationId: copySelfServeDemoData
consumes:
- application/json
produces:
- application/json
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
type: string
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Process'
'400':
description: invalid parameters
'401':
description: not authorized
'403':
description: permission denied
/v1/org/{orgId}/data-user-person-count:
get:
tags:
- org
summary: Gets the count of joined users, invited users, and org members who are not yet invited
operationId: getOrgUserPersonCount
consumes:
- application/json
produces:
- application/json
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
type: string
responses:
'200':
description: success
schema:
$ref: '#/definitions/OrgUsersPersonsCountResponse'
'400':
description: bad request
'404':
description: not found
/v1/org/{orgId}/data-users-persons:
get:
tags:
- org
summary: Gets a list of org users (joined or invited) and org members (not yet invited)
operationId: getOrgUsersAndPeople
consumes:
- application/json
produces:
- application/json
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
type: string
- name: limit
in: query
description: limit
required: false
type: integer
format: int32
- name: offset
in: query
description: offset
required: false
type: integer
format: int32
- name: includeUsersOnly
in: query
description: Include created users only
required: false
type: boolean
- name: returnAccess
in: query
description: 'Return access information -- pass a list of actions to check, for example: create,update,delete'
required: false
type: string
responses:
'200':
description: success
schema:
$ref: '#/definitions/OrgUsersPersonsResponse'
'400':
description: bad request
'404':
description: not found
/v1/org/{orgId}/test-email:
post:
tags:
- org
summary: Send a test welcome email to oneself
operationId: sendTestEmail
consumes:
- application/json
produces:
- application/json
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
type: string
- name: body
in: body
required: true
schema:
$ref: '#/definitions/TestEmailRequest'
responses:
'400':
description: bad request
'404':
description: not found
/v1/org/{orgId}/welcome-email:
get:
tags:
- org
summary: Gets the custom setting or default for the welcome email's subject, body, cta button label
operationId: getWelcomeEmailSettings
consumes:
- application/json
produces:
- application/json
parameters:
- name: orgId
in: path
description: Org identifier (either id or slug)
required: true
type: string
- name: isPreboarding
in: query
description: Is preboarding
required: false
type: boolean
responses:
'200':
description: success
schema:
$ref: '#/definitions/WelcomeEmailSettings'
'403':
description: Permission denied
'500':
description: Service error
/v1/org/{org}/app-install-code:
post:
tags:
- org
summary: Retrieve an Oauth2 authorization code to install an app at this org
operationId: getAppInstallAuthorizationCode
consumes:
- application/json
produces:
- application/json
parameters:
- name: org
in: path
description: Org identifier (either id or slug)
required: true
type: string
responses:
'201':
description: authorization code created
schema:
$ref: '#/definitions/AccessTokenResponse'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
definitions:
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
Address:
type: object
required:
- country
properties:
street1:
type: string
description: street address, line 1
example: 123 Anywhere Street
minItems: 0
maxItems: 200
street2:
type: string
description: street address, line 2
example: Apt 6L
minItems: 0
maxItems: 200
street3:
type: string
description: street address, line 3
example: Sixth Floor
minItems: 0
maxItems: 200
city:
type: string
description: city
example: New York
minItems: 0
maxItems: 80
state:
type: string
description: state
example: NY
minItems: 0
maxItems: 80
country:
type: string
description: country (two-digit ISO code)
example: NY
pattern: ^[A-Z]{2}$
postal:
type: string
description: postal code
example: '10001'
minItems: 0
maxItems: 10
geo:
description: geopoint location
$ref: '#/definitions/Geopoint'
approxGeo:
description: approximate geopoint location (suitable for a map placement, but not exact location)
$ref: '#/definitions/Geopoint'
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
Translations:
type: object
required:
- values
properties:
values:
type: object
additionalProperties:
type: string
UserListRow:
type: object
required:
- name
- inviteStatus
- isOrgMember
properties:
name:
$ref: '#/definitions/Name'
inviteStatus:
type: string
enum:
- INVITED
- JOINED
- NOT_INVITED
isOrgMember:
type: boolean
userId:
type: string
example: 588f7ee98f138b19220041a7
personId:
type: string
example: 588f7ee98f138b19220041a7
imagePath:
type: string
email:
type: string
access:
type: string
roleLabel:
type: string
roleId:
type: string
example: 588f7ee98f138b19220041a7
expr:
type: string
groupIds:
type: array
uniqueItems: true
items:
type: string
example: 588f7ee98f138b19220041a7
loginAt:
type: string
userStatus:
type: string
enum:
- INACTIVE
- PREBOARDING
- ACTIVATION
- ACTIVE
- OFFBOARDED
activeAt:
type: string
createId:
type: string
updateId:
type: string
updateAt:
type: string
UpdateOrg:
type: object
properties:
customerId:
type: string
description: customer for billing processing
example: 588f7ee98f138b19220041a7
name:
type: string
description: name of organization
example: Acme Corp
slug:
type: string
description: unique slug of organization
example: acme-corp
type:
type: string
description: type of organization
example: PRIVATE
enum:
- PRIVATE
- PUBLIC
- EDU
- GOV
- NONPROFIT
- DEMO
- TEST
- PORTFOLIO
industry:
type: string
description: industry
example: Software and Internet
estEmployees:
type: integer
format: int32
description: approximate number of employees
estRevenue:
type: integer
format: int32
description: approximate amount of revenue
foundedYear:
type: string
description: year of founding
example: '1998'
address:
description: street address
$ref: '#/definitions/Address'
phone:
type: string
description: company phone number in E.164 format
pattern: ^\+?[1-9]\d{1,14}$
email:
type: string
description: primary contact email
example: bob@example.com
url:
type: string
format: uri
description: website URL
domains:
type: array
description: domains used by this org
items:
$ref: '#/definitions/OrgDomain'
status:
type: string
description: current status of organization
enum:
- ACTIVE
- INACTIVE
- DISABLED
imagePath:
type: string
description: path to full-sized profile image in storage
pattern: ^[a-zA-Z0-9._/-]+$
currencies:
type: array
description: types of currencies in use, with the first currency the primary currency
items:
type: string
minItems: 1
maxItems: 100
locales:
type: array
description: locales supported within the org based on user selection, with the first locale the primary locale (e.g., en_US, en_GB, fr_FR, fr_CA)
items:
type: string
dataResidency:
type: string
description: data residency of the org - the db cluster where this org's data resides
enum:
- GLOBAL
- US
- EU
stock:
type: string
description: stock symbol
example: GOOG
timezone:
type: string
description: timezone in use
example: America/New_York
appTimes:
type: array
description: approximate times of day in the org timezone for daily app syncs to run (if unset, syncs will run 2am-8am US Eastern Time)
example: 09:00
items:
type: string
fiscalStart:
type: integer
format: int32
description: number of months into the calendar year that the fiscal year starts (1 = February, 2 = March)
portfolioParentOrgId:
type: string
description: portfolio parent org ID
example: 588f7ee98f138b19220041a7
startDate:
type: string
format: date
description: start date of history
options:
description: org-public options
$ref: '#/definitions/OrgOptions'
internalOptions:
description: internal (ChartHop controlled) options
$ref: '#/definitions/InternalOrgOptions'
onboarding:
type: boolean
description: current onboarding status of an organization, allowing clearing of org
selfServeImporting:
type: boolean
description: completion status of initial import for orgs signed up via self serve
headCount:
type: integer
format: int32
description: number of total headcount currently in the org
OrgUsersPersonsCountResponse:
type: object
required:
- joinedCount
- invitedCount
- notInvitedCount
properties:
joinedCount:
type: integer
format: int32
invitedCount:
type: integer
format: int32
notInvitedCount:
type: integer
format: int32
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
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: '#/definitions/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: '#/definitions/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: '#/definitions/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
Layout:
type: object
required:
- rows
properties:
rows:
type: array
items:
$ref: '#/definitions/LayoutRow'
Geopoint:
type: object
required:
- type
- coordinates
properties:
type:
type: string
description: Type of point
readOnly: true
coordinates:
type: array
description: The longitude and latitude of the point
readOnly: true
items:
type: number
format: double
LayoutButton:
type: object
required:
- url
- label
properties:
url:
type: string
label:
type: string
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
OrgUsersPersonsResponse:
type: object
required:
- rows
properties:
rows:
type: array
items:
$ref: '#/definitions/UserListRow'
access:
type: array
items:
$ref: '#/definitions/ResultsAccess'
ResultsAccess:
type: object
required:
- allowed
properties:
ids:
type: array
uniqueItems: true
items:
type: string
example: 588f7ee98f138b19220041a7
allowed:
type: array
uniqueItems: true
items:
$ref: '#/definitions/AccessAction'
AgreementRequest:
type: object
required:
- action
- legalDocId
properties:
action:
type: string
description: action taken
enum:
- AGREE
- CANCEL
legalDocId:
type: string
description: legal document entity id
example: 588f7ee98f138b19220041a7
ResultsOrg:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/definitions/Org'
next:
type: string
AppInstallCodeValidateResponse:
type: object
required:
- userId
properties:
userId:
type: string
description: userId that created the app install authorization code
example: 64b050ef762ef7deb38ac723
data:
type: object
description: data associated with the app install authorization code
example: '{ "orgId": "64b05135e1342073d3d45984" }'
accessToken:
type: string
description: access token issued from app install authorization code
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: '#/definitions/Translations'
primaryButton:
description: primary CTA button
$ref: '#/definitions/LayoutButton'
secondaryButton:
description: secondary CTA button
$ref: '#/definitions/LayoutButton'
TestEmailRequest:
type: object
required:
- welcomeEmailSubject
- welcomeEmailButtonLabel
- welcomeEmailBody
properties:
welcomeEmailSubject:
type: string
welcomeEmailButtonLabel:
type: string
welcomeEmailBody:
type: string
MessageChannelConfig:
type: object
required:
- channels
- alwaysEmail
properties:
channels:
type: array
items:
type: string
enum:
- EMAIL
- CHAT
- CHAT_SLACK
- CHAT_TEAMS
alwaysEmail:
type: boolean
AccessTokenResponse:
type: object
required:
- access_token
- expires_in
properties:
access_token:
type: string
description: access token value
readOnly: true
example: 2YotnFZFEjr1zCsicMWsdv
token_type:
type: string
description: access token type
readOnly: true
example: bearer
expires_in:
type: integer
format: int32
description: expiration time of token, in seconds
readOnly: true
example: '86400'
refresh_token:
type: string
description: refresh token value
readOnly: true
example: tGzv3JOkF0XG5Qx2TlKWIA
scope:
type: string
description: scope of the access token
readOnly: true
example: admin
redirect_uri:
type: string
description: redirect uri of the access token
readOnly: true
example: com.charthop.mobile://oauth
LayoutColumn:
type: object
required:
- blocks
properties:
blocks:
type: array
items:
$ref: '#/definitions/Block'
AppInstallCodeValidateRequest:
type: object
required:
- authorizationCode
- issueAccessToken
properties:
authorizationCode:
type: string
description: authorization code token value
issueAccessToken:
type: boolean
description: flag indicating if authorization code should be exchanged for an access token
CreateOrg:
type: object
required:
- name
- type
- estEmployees
- status
- currencies
- dataResidency
- timezone
- options
- onboarding
properties:
customerId:
type: string
description: customer for billing processing
example: 588f7ee98f138b19220041a7
name:
type: string
description: name of organization
example: Acme Corp
slug:
type: string
description: unique slug of organization
example: acme-corp
type:
type: string
description: type of organization
example: PRIVATE
enum:
- PRIVATE
- PUBLIC
- EDU
- GOV
- NONPROFIT
- DEMO
- TEST
- PORTFOLIO
industry:
type: string
description: industry
example: Software and Internet
estEmployees:
type: integer
format: int32
description: approximate number of employees
estRevenue:
type: integer
format: int32
description: approximate amount of revenue
foundedYear:
type: string
description: year of founding
example: '1998'
address:
description: street address
$ref: '#/definitions/Address'
phone:
type: string
description: company phone number in E.164 format
pattern: ^\+?[1-9]\d{1,14}$
email:
type: string
description: primary contact email
example: bob@example.com
url:
type: string
format: uri
description: website URL
domains:
type: array
description: domains used by
# --- truncated at 32 KB (67 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/charthop/refs/heads/main/openapi/charthop-org-api-openapi.yml