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 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 Org: type: object required: - id - name - slug - options properties: id: type: string description: globally unique id example: 588f7ee98f138b19220041a7 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) headJobId: type: string description: head of the organization example: 588f7ee98f138b19220041a7 unassignedManagerJobId: type: string description: Job ID that all jobs with missing manager report to in the organization example: 588f7ee98f138b19220041a7 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 userCount: type: integer format: int32 description: number of non-ChartHop, non-app users in the org activeUserCount: type: integer format: int32 description: number of non-ChartHop, non-app users in the org active in the past month activeAt: type: string description: last timestamp that any user was active in the org example: '2017-01-24T13:57:52Z' createId: type: string description: created by user id 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' destroyAt: type: string description: timestamp that the org is marked for data destruction readOnly: true example: '2017-01-24T13:57:52Z' destroyId: type: string description: user who marked the org for data destruction readOnly: true example: 588f7ee98f138b19220041a7 destroyedAt: type: string description: date at which this org was destroyed, can not be modified readOnly: true OrgOptions: type: object properties: costMultiplier: type: number description: Blanket multiplier to apply to all headcount costs, to account for blanket costs such as taxes and benefits orgEngineIncrementalBackDays: type: integer format: int32 description: Org engine incremental back day option stockPriceRollingAverage: type: integer format: int32 bannerMessageExpireDays: type: integer format: int32 dashboardChangeDaysAhead: type: integer format: int32 description: How many days ahead to look for changes on home screen dashboardChangeDaysBack: type: integer format: int32 description: How many days back to look for changes on home screen dashboardChangeDaysAheadMembers: type: integer format: int32 description: How many days ahead to look for changes, for members only — i.e. set this to 0 to disallow regular people seeing in the future dashboardAnniversariesDaysBack: type: integer format: int32 dashboardAnniversariesDaysAhead: type: integer format: int32 maxDateYears: type: integer format: int32 description: The max number of years ahead shown in date inputs, defaults to 20 years dashboardGlobal: type: boolean description: If you want employees to see all jobs regardless of location set this to true dashboardHidePeopleMoves: type: boolean dashboardHideOpenJobs: type: boolean dashboardRestrictOpenJobs: type: boolean dashboardHideAnniversaries: type: boolean dashboardHideWeeklyCalendar: type: boolean description: Hides the weekly calendar widget on the home screen dashboardWeeklyCalendarIncludeWeekends: type: boolean description: Includes weekends in the weekly calendar widget placesDecimal: type: integer format: int32 placesMoney: type: integer format: int32 placesPercent: type: integer format: int32 placesPayYearly: type: integer format: int32 placesPayHourly: type: integer format: int32 placesVariableAmount: type: integer format: int32 placesVariablePercent: type: integer format: int32 disableCompReviewV2Emails: type: boolean disableDataAggregation: type: boolean disableDataImportTypes: type: boolean disableLiveQuery: type: boolean disableWelcomeEmail: type: boolean disableOrgExportLimit: type: boolean description: Allows powerpoint exports of over 1000 jobs disableApproverScenarioEdits: type: boolean description: Disables ability of approvers to modify scenario data enableActions: type: boolean enableAdp: type: boolean enableAzure: type: boolean enableBackwardsCompatibleCompBandRead: type: boolean description: Backwards compatibility flags for bands UAC enableColumnCacheLogging: type: boolean enableColumnCacheInRedis: type: boolean enableTimeOffCacheInRedis: type: boolean enableStockGrantCacheInRedis: type: boolean enableMapForScenarios: type: boolean enablePositionEligibilityFilter: type: boolean description: Enables the CQL eligibility filter input on Group Type position rows enableCompChangeCacheInRedis: type: boolean enableCompReviewV2LaunchFlag: type: boolean enableExperimentalScreenshotLayoutChanges: type: boolean enableGoogle: type: boolean enableMicrosoft: type: boolean enableOkta: type: boolean enableOneLogin: type: boolean enablePassword: type: boolean enableStartingSalary: type: boolean description: Enable starting salary configuration for comp bands enableDynamicFields: type: boolean description: Enable dynamic fields configuration for job codes enableDynamicJobDialog: type: boolean description: Enable dynamic fields configuration in the job modal enableDynamicOrgChartCardHeight: type: boolean description: Enables dynamic card height on the org chart to optimize layout based on card content linkedJobUpdateExcludedCategories: type: array description: Field categories excluded from linked field updates on filled jobs. Defaults to compensation categories if null. uniqueItems: true items: type: string example: 588f7ee98f138b19220041a7 jobDialogFilterJobCodeFieldId: type: string description: Determines which field to filter job codes by in the job dialog, defaults to department example: 588f7ee98f138b19220041a7 enablePerOrgAuth: type: boolean enableRickrollLogin: type: boolean enableSaml: type: boolean disableSamlLoginToken: type: boolean enableTemplatesRichTextEditorV2: type: boolean enableOrgEngineRequiredFields: type: boolean description: Configures Org Engine to respect required fields enableLongLivedCache: type: boolean description: Enables a managed service that, on API startup, primes those orgs' caches, for both column cache, as well as the primary org cache. These keys should also last for 24+ hours and therefore be always kept warm. grantValueDefault: type: boolean description: If enabled, then by default grants are in value, not shares orgEnginePromoteCustomIdsAsTrueIds: type: boolean description: This field promotes the alternate id to the true id and allows HRIS to be updated preventAtsEmailNotifications: type: boolean description: Sync History V2 Option to prevent ATS notifications scenarioCols: type: string description: The default set of comma separated columns to show in the scenario changes screen enablePowerpointScreenshot: type: boolean description: Enables the powerpoint screenshot export feature, on by default enableDelightedSurvey: type: boolean description: Enables the delighted survey popup enableOrgChartIndicators: type: boolean description: Shows the +XX job sibling indicators on the org chart enableHideEquityCalculator: type: boolean description: Hides the value calculator on the equity section of the profile enableTransformFieldMapper: type: boolean description: Enables the ability to configure the One to One field mapper with a Charthop Default Value enableFullNamesTitlesLegacy: type: boolean description: Shows full names in powerpoint exports disableSiblingIndicators: type: boolean description: Disables the sibling indicators on the org chart enableGrantCustomization: type: boolean description: Enables grant aliases in the financial settings enableScenarioChangesV2: type: boolean description: Enables new scenario changes screen enableScenarioAuditLog: type: boolean description: Enables the audit log tab for scenarios showErrorRows: type: boolean hideEquityValuation: type: boolean description: Hides the company valuation component of the calculation in the Equity profile tab (stock price will still be shown) hideProfileCompensationVesting: type: boolean description: Hides the vesting section of the compensation profile tab hideScenarioTotalRows: type: boolean description: Hide total rows in scenario change summary tables generateApprovalRequestsForTimeOffImport: type: boolean recalculateDaysForTimeOffImport: type: boolean positionIdField: type: string description: Name of the job field that holds the org's Position ID for display in pickers enableCompBandPrefetchByJobCode: type: boolean legacyManagerFieldVisibility: type: boolean restrictReports: type: boolean restrictScenarios: type: boolean restrictSensitiveFilters: type: boolean restrictVariableView: type: boolean restrictVestingView: type: boolean restrictPersonHistory: type: boolean restrictSelfEdit: type: boolean skipSyncNotify: type: boolean hideCompensationTab: type: boolean hideEquityTab: type: boolean hideTasksTab: type: boolean hideTimeOffTab: type: boolean hideProfileCurrencyConversion: type: boolean description: Hides profile currency conversion on compensation tab enableCalendarExport: type: boolean enableChangeExport: type: boolean deidentifiedMinSampleSize: type: integer format: int32 deidentifiedFieldIds: type: array items: type: string example: 588f7ee98f138b19220041a7 enableAi: type: boolean description: Enable AI features like chart analysis and review calibrations enableAiSummaries: type: boolean description: Enable AI form response summaries enableAiChatButtons: type: boolean description: Enables the AI Ask ChartHop chatbot feature via interaction buttons enableMobileAiVoice: type: boolean description: Enables the AI Voice feature in ChartHop mobile limitAiChatButtonsUserIds: type: array description: Limits the usage of the buttons to a set of User IDs items: type: string enableAiChatAsk: type: boolean description: Enables the open-ended AI Ask ChartHop chatbot feature enableAiHomePage: type: boolean description: Enables the AI-centric home page limitAiChatbotUserIds: type: array description: Limits the usage of the AI chatbot feature to a set of User IDs items: type: string enableAiScenarioPlanning: type: boolean description: Enables the AI scenario planning feature limitAiScenarioPlanningUserIds: type: array description: Limits the usage of the AI chatbot scenario planning feature to a set of User IDs items: type: string aiChatDisableStreaming: type: boolean description: Disable streaming for ai chat messages enableAiTerminationGuardrail: type: boolean description: Disable ability for AI to recommend terminations in scenarios aiChatAgentUserId: type: string description: Which agent is used by default in chat, instead of the ChartHop AI example: 588f7ee98f138b19220041a7 enableAiAgents: type: boolean description: Enable the use of AI agents enableAiForms: type: boolean description: Enable the use of AI form completions enableAiActions: type: boolean description: Enable the use of AI agentic actions enableAiChatWrite: type: boolean description: Enable AI chat write tools (create, update, delete entities) enableDataExplorer: type: boolean description: Enables the Data Explorer feature enableFinanceImpactDashboard: type: boolean description: Enables the finance-oriented impact dashboard limitDataExplorerUserIds: type: array description: Limits the usage of the Data Explorer to a set of User IDs items: type: string limitInfiniteDataSheetGroupingUserIds: type: array description: Limits the usage of the new Infinite Data Sheet with grouping to a set of User IDs items: type: string enableUserSettingsV2: type: boolean enableCalendarScreen: type: boolean enableCompensationBands: type: boolean description: Enables Comp bands V2 (on by default for Premium customers) enableCompBandsSetupSpreadsheet: type: boolean description: Enables the new comp bands setup spreadsheet UI (AG Grid). Absent/false = legacy path. easyAppInstallConfigManageEnabled: type: boolean description: Enables easy app install (on by default for self-serve & standard orgs) enableGeoip: type: boolean enableNewHireManagement: type: boolean enableOutboundPayroll: type: boolean enableRefreshedReportsV2: type: boolean enableLanguageSwitching: type: boolean hideNextYearTabPolicyTimeOffDisplay: type: boolean enableInfiniteDataSheet: type: boolean description: Enables infinite scrolling with server-side sorting and pagination in Data Sheet infiniteDataSheetPageSize: type: integer format: int32 description: 'Number of rows to load per page in infinite scrolling Data Sheet (default: 100)' enableDataSheetGrouping: type: boolean description: Enables grouping functionality in Data Sheet userTablePaginated: type: boolean description: Enables server-side paginated user table with search, filter, and sort via findUsers enableTables: type: boolean enableTeamOrgChart: type: boolean description: Enables groups with positions feature enableDepartedPersonAccessDirection: type: boolean enableForceChangeGroupingOrgCacheReload: type: boolean enableGroupTypes: type: boolean enablePreboarding: type: boolean description: Enables preboarding features allowedIpsPasswordLogin: type: array description: IP Allow-list for Password based logins items: type: string jobDetailPanelFields: type: array description: Customize which fields are displayed in the job details panel in the Org Chart and their order. items: type: string notifyUserIds: type: array description: Sends notification to org users when new Users are assigned uniqueItems: true items: type: string example: 588f7ee98f138b19220041a7 orgEngineCustomIdCustomFieldNameList: type: array description: This is an array of fields that an org can use to indicate that one or more fields should be used as alternate id items: type: string highlightMenuPreferredFields: type: array items: type: string impactGroupByExcludedFieldIds: type: array description: Field IDs excluded from the Impact Dashboard Group By picker items: type: string example: 588f7ee98f138b19220041a7 profileGroupTypeTagIds: type: array description: The types of groups that should be shown as tags in the profile header, defaults to department and location items: type: string example: 588f7ee98f138b19220041a7 pptThemes: type: array items: type: object additionalProperties: type: object editJobFieldOrder: type: object description: Allows ordering of fields within tabs of the edit job dialog additionalProperties: type: array items: type: string profileCompensationChartFields: type: array description: Controls comp fields show in profile tab items: type: string orgMinDate: type: string description: min Date for all DateInput across Org except Groups in format YYYY-MM-DD aboutEquityMessage: type: string description: Message to show in place of the default About equity compensation... message on profile tab atsReqField: type: string description: If an org has an ATS integration, use their atsReqField instead of greenhouseId bannerMessage: type: string bannerHeader: type: string brandColor: type: string description: The org's primary brand color brandSecondaryColor: type: string description: The org's secondary brand color brandLogo: type: string description: Show brand logo in header of home page customSsoImage: type: string description: Customizes the SSO button image on the login screen customSsoLabel: type: string description: Customizes the SSO button label on the login screen dashboardAnnouncementMessage: type: string dashboardCalendarTypes: type: object description: Comma-separated types of calendar events to show in milestones panel dashboardChangeTypes: type: object description: Which change types to show on home screen and calendar, uses ChangeDao.ChangeType as enum dateFormat: type: string defaultNoTimeOffMessage: type: string description: Message to show if no time off policies apply to the org member greenhouseDomain: type: string description: Allows customization of greenhouse subdomain for XHOP app country: type: string language: type: string limitTeamOrgChartUserIds: type: array description: A list of users ids that are allowed to see the team org chart when enableTeamOrgChart is true items: type: string orgDefaultData: type: string description: Controls what data field will be shown in the Visualize option on the Org Chart by default (default is department) loginRedirectUrl: type: string newHireOpenJobMatchingFieldName: type: string description: Custom field for fallback open job matching in org engine restrictExportOrgChart: type: string description: Prevent non-sensitive users to export company org chart restrictExportCsv: type: string description: Prevent non-sensitive users to export company data in CSV files teamOrgChartTypes: type: array description: A filter that can show/hide what toggle options are available on the team org chart, when null everything is shown items: type: string timeOffDaysAhead: type: integer format: int32 description: The number of days ahead which PTO becomes org public. Anything outside of this range will be treated as effectively manager shared userSessionDuration: type: string userSessionInactiveDuration: type: string userInviteDuration: type: string turnoverFormula: type: string description: Turnover rate calculation formula - 'monthlyEnd' for end-of-month sampling welcomeEmailButtonLabel: type: string welcomeEmailSubject: type: string customWelcomeMessage: type: string preboardingWelcomeEmailButtonLabel: type: string preboardingWelcomeEmailSubject: type: string preboardingCustomWelcomeHeader: type: string preboardingCustomWelcomeMessage: type: string orgDefaultFilter: type: string sheetDefaultFilter: type: string preboardingFilter: type: string onboardingFilter: type: string offboardingFilter: type: string preboardingColNames: type: string onboardingColNames: type: string offboardingColNames: type: string defaultMessageChannel: $ref: '#/definitions/MessageChannelConfig' allowCharthopMobileApp: type: boolean timeOffPolicyTypeOrder: type: array description: The order in which time off policies should be sorted by type (types not included here are sorted at the end) items: type: string enum: - PTO - TOIL - VACATION - SICK - MEDICAL - JURY - OFFSITE - PARENTAL - UNPAID - DISABILITY_SHORT - DISABILITY_LONG - BEREAVEMENT - MILITARY - RELIGIOUS - VOTING - VOLUNTEER - UNKNOWN enableFormRejections: type: boolean description: Enables form rejections instead of request changes, for backwards compatiblity enableCalibration: type: boolean description: Enables the calibration feature for performance reviews useStandardizedTitle: type: string description: Whether to suggest or enforce standardized titles enableProfilePageV2: type: boolean description: Enables the redesigned profile page enableHomeCustomLayout: type: boolean description: Enables using a custom layout for the home page homeCustomLayout: description: The custom layout for the home page $ref: '#/definitions/Layout' enableSkipSignatureConfirmationEmail: type: boolean description: Temporary option to turn on skipping emails for signatures, until we have a better solution for miller-cooper disableSignatureTitles: type: boolean description: When set to true, do not include job titles in signatures enableHiddenRolesAndPolicies: type: boolean enableAlphaApps: type: boolean description: Allows this org to access applications in alpha csvImportMaxNumRows: type: integer format: int32 description: The maximum number of rows for CSV imports enableGoals: type: boolean description: Enable goal-setting features in the org disableAiMemory: type: boolean description: Disable AI agent persistent memory in the org enableLegacyBands: type: boolean description: Enable bands V1 feature in the org enableApprovalDelegates: type: boolean description: Enable Approval Delegates feature in the org useImporterV3: type: boolean description: Whether to use the v3 job importer logImportErrorsUsingJavaLogger: type: boolean description: Whether the v3 job importer should log errors to the java logger in addition to the log file enableIdentitySyncLogging: type: boolean description: Emit verbose identity sync deactivation diagnostics to the process log scenarioCostExpr: type: string description: Cost calculation used for scenarios by default, if not set defaults to annualized cost with multiplier scenarioCostLabel: type: string description: Label to show for cost in scenarios, if not set defaults to 'Annual Cost' scenarioCostDescription: type: string description: Description to show for cost in scenarios, disableAiKnowledgeBase: type: boolean description: Global option to disable AI knowledge base usage (typically for AWS outages) qesFilter: type: string description: filter expression evaluated on each signer for whether to use qualified electronic signature (if it evaluates to true for any signer, QES will be used) disableQes: type: boolean description: disable QES usage while still using external vendor, purely for testing enableBudgets: type: boolean description: enable budgets feature enableEndOfYearTimeOffBalanceDisplay: type: boolean description: display end-of-year balance (roughly) on the time off profile page even for accrued policies timeOffCustomBalanceDescription: type: string description: custom time off balance description (if blank, shows default message) csvImportSetAdjustCreateDate: type: boolean description: Set the adjustCreateDate import option needed for turbo csvImportCreateJobsWithMissingManager: type: boolean description: Set the createJobsWithMissingManager import option csvImportReassignDirectReportsOnMove: type: boolean description: Set the reassignDirectReportsOnMove import option (reassign a moved manager's reports to the target job) defaultBackfillJobSensitivity: type: string description: Default sensitivity for backfill jobs (defaults to HIGH if not set) enum: - GLOBAL - ORG - SENSITIVE - PERSONAL - MANAGER - HIGH - PRIVATE jobCodeMatchMaxCatalogSize: type: integer format: int32 description: 'Maximum number of job codes allowed for AI job-code matching (default: 1000)' WelcomeEmailSettings: type: object required: - isEnabled - welcomeEmailSubject - welcomeEmailButtonLabel - welcomeEmailBody properties: isEnabled: type: boolean description: Whether to send a welcome email welcomeEmailSubject: type: string description: Subject welcomeEmailButtonLabel: type: string description: Button label welcomeEmailBody: type: string description: Body Name: type: object required: - last properties: first: type: string description: first name example: Jane minItems: 0 maxItems: 80 middle: type: string description: middle name example: Quidditch minItems: 0 maxItems: 80 last: type: string description: last name example: Public minItems: 0 maxItems: 80 pref: type: string description: preferred first name example: JQ minItems: 0 maxItems: 80 prefLast: type: string description: preferred last name example: Smith minItems: 0 maxItems: 80 OrgDomain: type: object required: - domain - aliases properties: domain: type: string aliases: type: array uniqueItems: true items: type: string LayoutRow: type: object required: - columns - format properties: columns: type: array items: $ref: '#/definitions/LayoutColumn' format: type: string