Charthop preload API

The preload API from Charthop — 1 operation(s) for preload.

OpenAPI Specification

charthop-preload-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  description: REST API for ChartHop
  version: V1.0.0
  title: ChartHop access preload 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: preload
paths:
  /v1/org/{orgId}/preload:
    get:
      tags:
      - preload
      summary: Return a set of pre-loaded data required by the web app
      operationId: getPreloadData
      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/PreloadResponse'
        '400':
          description: bad request
        '404':
          description: not found
definitions:
  OrgAccess:
    type: object
    required:
    - orgId
    - access
    properties:
      orgId:
        type: string
        description: org id
        example: 5887a7718f138b6a2a0041a7
      personId:
        type: string
        description: person id, if this user directly corresponds with a person
        example: 5887a7718f138b6a2a0041a7
      access:
        type: string
        description: legacy access permission level
        enum:
        - NONE
        - PREBOARDING
        - VIEW
        - LIMITED
        - MEMBER_LIMITED_COMP
        - MEMBER
        - CUSTOM
        - TECH_OWNER
        - TIMEOFF
        - CONTACT
        - COMP_CASH
        - COMP_EQUITY
        - COMP_ALL
        - RECRUIT_SENSITIVE
        - RECRUIT_PRIMARY
        - SENSITIVE_LIMITED_COMP
        - SENSITIVE
        - PRIMARY
        - PEOPLE_OPS_ADMIN
        - PEOPLE_OPS_ADMIN_NO_COMP_DATA
        - PEOPLE_OPS_ADMIN_NO_SENSITIVE_DATA
        - OWNER
      groupIds:
        type: array
        description: group ids that the above access applies to
        uniqueItems: true
        items:
          type: string
          example: 588f7ee98f138b19220041a7
      expr:
        type: string
        description: expression that the above access applies to
      expireAt:
        type: string
        description: timestamp that this org access will expire
      roleId:
        type: string
        description: the role id that defines the users access
        example: 5887a7718f138b6a2a0041a7
      status:
        type: string
        description: Onboarding status of the user in this org
        enum:
        - INACTIVE
        - PREBOARDING
        - ACTIVATION
        - ACTIVE
        - OFFBOARDED
      homeEmail:
        type: string
        description: Personal email address of user, while they are preboarding
        example: bob@example.com
        minItems: 0
        maxItems: 120
      workEmail:
        type: string
        description: Work email address of user, once they have started
        example: robert.doe@example.com
        minItems: 0
        maxItems: 120
      workRoleId:
        type: string
        description: Active role ID that defines the user's access once they have started
        example: 67c851da3dd1668c2fdd7e44
  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'
  TargetedInstruction:
    type: object
    required:
    - filter
    - instructions
    properties:
      filter:
        type: string
        description: filter expression matched against the current viewer's person record
      instructions:
        type: string
        description: instructions injected into the chat prompt when filter matches
  PolicyRuleTarget:
    type: object
    properties:
      userId:
        type: string
      personId:
        type: string
        example: 588f7ee98f138b19220041a7
      channel:
        type: string
      email:
        type: string
  OrgConfig:
    type: object
    required:
    - id
    properties:
      id:
        type: string
        description: globally unique id
        example: 588f7ee98f138b19220041a7
      orgId:
        type: string
        description: parent organization id
        example: 588f7ee98f138b19220041a7
      hiddenFieldIds:
        type: array
        description: set of hidden field ids of an org
        uniqueItems: true
        items:
          type: string
          example: 588f7ee98f138b19220041a7
      builtinCategoryMap:
        type: array
        description: set of maps of the custom fields that belongs to a built-in category
        uniqueItems: true
        items:
          $ref: '#/definitions/BuiltInCategoryMap'
      builtinFieldConfig:
        type: array
        description: Org configuration for built-in fields
        uniqueItems: true
        items:
          $ref: '#/definitions/BuiltInFieldConfig'
      compensationBandsConfig:
        description: Org configuration for compensation bands tiers, multipliers, and job levels
        $ref: '#/definitions/CompensationBandsConfig'
      smartCurrencyOptions:
        type: array
        description: Options for where to source a currency to use when currency is unknown. order specific
        example: PERSON_HOME_ADDRESS_COUNTRY
        items:
          $ref: '#/definitions/SmartCurrencyOption'
      smartCurrencyDefault:
        type: string
        description: The default currency to use when currency is unknown and there are no options set in smartCurrencyOptions
        example: USD
      requiredJobFields:
        type: array
        description: Org configuration for required job fields
        uniqueItems: true
        items:
          type: string
      scenarioApprovalChains:
        type: object
        description: Configures which approval chains to use with specific scenario types
        additionalProperties:
          type: string
          example: 588f7ee98f138b19220041a7
      isOpenJobRoleApprovalEnabled:
        type: boolean
        description: Whether to show open job approval on Open Job Profile page
      isNotifySubmitterPerStage:
        type: boolean
        description: Whether to notify the scenario submitter each time an approval stage completes
      jobCodeFieldIds:
        type: array
        description: The set of field IDs that job codes can be set up to auto-fill
        items:
          type: string
          example: 588f7ee98f138b19220041a7
      createId:
        type: string
        description: created by user id
        example: 588f7ee98f138b19220041a7
      createBehalfId:
        type: string
        description: created on behalf of user id
        example: 588f7ee98f138b19220041a7
      createAttribution:
        $ref: '#/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'
      deleteId:
        type: string
        description: deleted by user id
        example: 588f7ee98f138b19220041a7
      deleteBehalfId:
        type: string
        description: deleted on behalf of user id
        example: 588f7ee98f138b19220041a7
      deleteAttribution:
        $ref: '#/definitions/Attribution'
      deleteAt:
        type: string
        description: deleted timestamp
        example: '2017-01-24T13:57:52Z'
      grantConfiguration:
        type: array
        description: Org Grant Configuration
        uniqueItems: true
        items:
          $ref: '#/definitions/GrantAlias'
  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
  ExchangeRate:
    type: object
    required:
    - id
    - date
    - currency
    - rates
    properties:
      id:
        type: string
        description: globally unique id
        example: 588f7ee98f138b19220041a7
      orgId:
        type: string
        description: org id, if an org-specific exchange rate is in use
        example: 588f7ee98f138b19220041a7
      date:
        type: string
        format: date
        description: date
      currency:
        type: string
        description: base currency
      rates:
        type: object
        description: exchange rates, per currency - the multiplier to convert the base currency into the foreign currency
        additionalProperties:
          type: number
      updateAt:
        type: string
        description: updated timestamp
        example: '2017-01-24T13:57:52Z'
  StartingSalaryConfig:
    type: object
    required:
    - type
    - effectiveDate
    properties:
      type:
        type: string
        description: Starting salary calculation type
        enum:
        - BAND_MINIMUM
        - BAND_QUARTER
        - BAND_MIDPOINT
        - CUSTOM_PERCENTILE
      customPercentile:
        type: integer
        format: int32
        description: Custom percentile value (0-100) when type is CUSTOM_PERCENTILE
      effectiveDate:
        type: string
        format: date
        description: Effective date for this configuration
      includeEquityTarget:
        type: boolean
        description: Whether to include equity target in starting compensation
      includeVariableComp:
        type: boolean
        description: Whether to include variable compensation in starting compensation
  GrantAlias:
    type: object
    required:
    - grantType
    - enabled
    properties:
      alias:
        type: string
      grantType:
        type: string
        enum:
        - ISO
        - NSO
        - RSU
        - SAR
        - PERFORMANCE_SHARES
        - PHANTOM_STOCK
        - RSA
      enabled:
        type: boolean
  Customer:
    type: object
    required:
    - id
    - name
    - status
    properties:
      id:
        type: string
        description: unique id of customer
        example: 588f7ee98f138b19220041a7
      name:
        type: string
        description: name of customer
      email:
        type: string
        description: email address for billing purposes
      billAddress:
        description: mailing address for billing purposes
        $ref: '#/definitions/Address'
      industry:
        type: string
        description: industry that customer is in
      source:
        type: string
        description: source of customer signup
        enum:
        - ADP_MARKETPLACE
        - SELF_SERVE
        - SELF_SERVE_TEST
        - SEQUOIA_ONE
        - CONNECT
      status:
        type: string
        description: current status
        enum:
        - ACTIVE
        - INACTIVE
        - TRIAL
        - CHURN
        - PAYMENT_ERROR
      stripeCustomerId:
        type: string
        description: stripe customer id
      salesforceAccountId:
        type: string
        description: salesforce account id
        pattern: ^[a-zA-Z0-9]{15}|[a-zA-Z0-9]{18}$
      products:
        type: array
        description: products that this customer has purchased
        items:
          $ref: '#/definitions/ProductItem'
      trialProducts:
        type: array
        description: products this customer has temporary trial access to, each bounded by a date range
        items:
          $ref: '#/definitions/TrialProduct'
      restrictedFeatures:
        type: array
        description: features that are restricted for the customer
        items:
          type: string
          enum:
          - AI_ACTION
          - AI_AGENT
          - AI_API_WRITE
          - AI_SLACK_TEAM_CHAT
          - ATS_SYNC
          - BUDGET
          - COMPENSATION_REVIEW
          - CUSTOM_CALENDAR
          - CUSTOM_FIELD
          - CUSTOM_FIELD_READONLY
          - CUSTOM_FORM
          - CUSTOM_PROFILE_TAB
          - CUSTOM_ROLE
          - FORM_ANONYMOUS
          - FORM_RELEASE
          - FORM_SIGNATURE
          - GOAL
          - MULTI_PAYROLL
          - PERFORMANCE_REVIEW
          - REPORT
          - REPORT_READONLY
          - SCENARIO
          - SIGNATURE
          - SIGNATURE_QES
          - SIMPLE_WORKFLOWS
          - SURVEY
          - TABLE
          - TEMPLATE
          - WORKDAY_ADAPTIVE
          - PAYROLL_OUTBOUND
          - APPROVAL_WORKFLOWS
          - CONTENT
          - IDENTITY_OUTBOUND
          - ONBOARDING_OFFBOARDING
          - TIMEOFF
      featureOptionOverrides:
        type: array
        description: override feature options for the customer
        items:
          $ref: '#/definitions/FeatureAccessOption'
      startDate:
        type: string
        format: date
        description: initial date of billing
      endDate:
        type: string
        format: date
        description: end of service date for churning customers -- on or after this date, service should be disabled
      nextInvoiceDate:
        type: string
        format: date
        description: date of next invoice
      orgCount:
        type: integer
        format: int32
        description: number of orgs covered by this customer
      primaryHeadCount:
        type: integer
        format: int32
        description: number of total headcount across all orgs
      secondaryHeadCount:
        type: integer
        format: int32
        description: number of total headcount across all orgs
      tertiaryHeadCount:
        type: integer
        format: int32
        description: number of total headcount across all orgs
      primaryHeadCountFilter:
        type: string
        description: primary headcount filter - used for billing purposes
      secondaryHeadCountFilter:
        type: string
        description: secondary headcount filter - used for billing purposes
      tertiaryHeadCountFilter:
        type: string
        description: tertiary headcount filter - used for billing purposes
      arr:
        type: number
        description: current ARR of the customer based on most recent invoice
      trialStartDate:
        type: string
        format: date
        description: date this customer begins their trial period
      trialEndDate:
        type: string
        format: date
        description: date this customer ends their trial period
      stripeSubscriptionSync:
        type: string
        description: Stripe subscription settings
        enum:
        - SYNC
        - DELETE
      createAt:
        type: string
        description: created timestamp
        example: '2017-01-24T13:57:52Z'
      createId:
        type: string
        description: created by
        example: 588f7ee98f138b19220041a7
      createBehalfId:
        type: string
        description: created on behalf of user id
        example: 588f7ee98f138b19220041a7
      createAttribution:
        $ref: '#/definitions/Attribution'
      updateAt:
        type: string
        description: updated timestamp
        example: '2017-01-24T13:57:52Z'
      updateId:
        type: string
        description: updated by
        example: 588f7ee98f138b19220041a7
      updateBehalfId:
        type: string
        description: last updated on behalf of user id
        example: 588f7ee98f138b19220041a7
      updateAttribution:
        $ref: '#/definitions/Attribution'
  LayoutRow:
    type: object
    required:
    - columns
    - format
    properties:
      columns:
        type: array
        items:
          $ref: '#/definitions/LayoutColumn'
      format:
        type: string
  Translations:
    type: object
    required:
    - values
    properties:
      values:
        type: object
        additionalProperties:
          type: string
  FieldOptions:
    type: object
    properties:
      min:
        type: string
        description: minimum value, for numeric and date fields
      max:
        type: string
        description: maximum value, for numeric and date fields
      minItems:
        type: integer
        format: int32
      maxItems:
        type: integer
        format: int32
      stackRank:
        type: boolean
      step:
        type: number
      enableEditDialog:
        type: boolean
      requiredJobField:
        type: boolean
      excludeTargetPersonId:
        type: boolean
      maxLength:
        type: integer
        format: int32
      readOnly:
        type: boolean
      includeFormer:
        type: boolean
      effectiveDated:
        type: boolean
      unique:
        type: boolean
      required:
        type: boolean
  Role:
    type: object
    required:
    - id
    - label
    properties:
      id:
        type: string
        description: globally unique id
        example: 588f7ee98f138b19220041a7
      orgId:
        type: string
        description: parent organization id (empty if global)
        example: 588f7ee98f138b19220041a7
      label:
        type: string
        description: human-readable full name of role
        example: Engineering People Manager
        minItems: 3
        maxItems: 80
      description:
        type: string
        description: description of role
        example: This role is able to create and update new job data for the engineering department.
        minItems: 0
        maxItems: 1000
      policyIds:
        type: array
        description: the policies that define the role
        uniqueItems: true
        items:
          type: string
          example: 588f7ee98f138b19220041a7
      policies:
        type: array
        description: the policies attached to the role
        uniqueItems: true
        items:
          $ref: '#/definitions/Policy'
      users:
        type: array
        description: the users the role is attached to
        uniqueItems: true
        items:
          $ref: '#/definitions/User'
      userCount:
        type: integer
        format: int32
        description: number of users the role is attached to; populated when expand=true on the list endpoint
      createId:
        type: string
        description: created by user id
        example: 588f7ee98f138b19220041a7
      createAt:
        type: string
        description: created timestamp
        example: '2017-01-24T13:57:52Z'
      updateId:
        type: string
        description: last updated by user id
        example: 588f7ee98f138b19220041a7
      updateAt:
        type: string
        description: last updated timestamp
        example: '2017-01-24T13:57:52Z'
      deleteId:
        type: string
        description: deleted by user id
        example: 588f7ee98f138b19220041a7
      deleteAt:
        type: string
        description: deleted timestamp
        example: '2017-01-24T13:57:52Z'
  User:
    type: object
    required:
    - id
    - name
    properties:
      id:
        type: string
        description: globally unique id
        example: 588f7ee98f138b19220041a7
      appId:
        type: string
        description: if the user is an app user, the id of the app
        example: 588f7ee98f138b19220041a7
      name:
        description: full name of user
        $ref: '#/definitions/Name'
      email:
        type: string
        description: email address of user
        example: bob@example.com
        minItems: 0
        maxItems: 120
      password:
        type: string
        description: password of user (encrypted)
        minItems: 0
        maxItems: 120
      orgs:
        type: array
        description: list of member orgs with permission levels
        uniqueItems: true
        items:
          $ref: '#/definitions/OrgAccess'
      imagePath:
        type: string
        description: path to full-sized profile image in storage
        pattern: ^[a-zA-Z0-9._/-]+$
      status:
        type: string
        description: current status of user
        enum:
        - SUPERUSER
        - NORMAL
        - INACTIVE
        - UNINSTALLED
      type:
        type: string
        description: type of user
        enum:
        - USER
        - APP
      options:
        type: object
        description: for apps, options (specific options are specific to the particular app); for users, user-set preferences
      internalOptions:
        type: object
        description: internal (ChartHop controlled) options
      bundleInstall:
        description: if this user represents an installed bundle, details on what was installed
        $ref: '#/definitions/BundleInstall'
      secrets:
        type: object
        description: write-only secrets; the content of these secrets are not retrievable via the external-facing API
      activeAt:
        type: string
        description: last activity timestamp
        example: '2017-01-24T13:57:52Z'
      loginAt:
        type: string
        description: last login timestamp
        example: '2017-01-24T13:57:52Z'
      appRunCheckAt:
        type: string
        description: for apps, last time the app was checked for a scheduled sync
        example: '2024-02-29T09:30:00Z'
      loginCount:
        type: integer
        format: int32
        description: number of lifetime successful logins
        example: '3'
      sessionCount:
        type: integer
        format: int32
        description: number of lifetime sessions
        example: '3'
      loginFailCount:
        type: integer
        format: int32
        description: number of consecutive failed logins
        example: '3'
      title:
        type: string
        description: job title, if available
        example: CEO
      remoteIp:
        type: string
        description: last IP address used
        example: 127.0.0.1
      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'
      verifyAt:
        type: string
        description: email verified timestamp, if the email has been verified
        example: '2017-01-24T13:57:52Z'
      mfas:
        type: array
        description: list of registered 2FA registered credentials
        items:
          $ref: '#/definitions/WebRegisteredCredential'
      emailSettings:
        type: array
        description: Email settings for the user
        items:
          $ref: '#/definitions/UserEmailSetting'
      sensitive:
        type: string
        description: sensitivity level of the user's configuration; only applicable to APP users
        enum:
        - GLOBAL
        - ORG
        - SENSITIVE
        - PERSONAL
        - MANAGER
        - HIGH
        - PRIVATE
      shareAccess:
        type: array
        description: users and groups who have access to configure this user; only applicable to APP users
        items:
          $ref: '#/definitions/ShareAccess'
      agentConfig:
        description: per-user agent configuration overrides
        $ref: '#/definitions/AiAgentConfig'
  FeatureAccessOption:
    type: object
    required:
    - name
    - type
    properties:
      name:
        type: string
        description: The name of the feature option tied to the feature access
        example: smart_fields
        enum:
        - CONFIGURED_ROLES
        - SMART_FIELDS
        - APP_FIELD_MAPPERS
        - MULTI_PAYROLL_INSTALLS
      description:
        type: string
        description: The description of the feature option
      type:
        type: string
        description: The feature option type
        enum:
        - LIMIT
        - FULL_ACCESS
      limit:
        type: integer
        format: int32
        description: The feature option limit
  ProductItem:
    type: object
    required:
    - productId
    - stripePriceId
    properties:
      productId:
        type: string
        example: 588f7ee98f138b19220041a7
      stripePriceId:
        type: string
  AiAgentConfig:
    type: object
    properties:
      personality:
        type: string
      instructions:
        type: string
      guardrails:
        type: string
      enableMemory:
        type: boolean
      enableMcpServer:
        type: boolean
        description: whether this agent exposes an MCP server endpoint for per-user OAuth access
      enableMcpWrite:
        type: boolean
        description: 'whether this agent''s MCP server may invoke write/mutating tools (e.g. a non-read-only AskAgent delegation). Read-only by default: when unset or false, a tool that mutates on the call is rejected at the MCP edge regardless of the agent''s role/policy. This is defense in depth layered on top of the role, never a grant beyond it.'
      isExternal:
        type: boolean
        description: 'whether this agent is an external (non-ChartHop) client, e.g. Claude Code or ChatGPT. External agents have no ChartHop-side prompt/behavior config: only permissions, MCP, and activity are configurable.'
      approvedPolicyRules:
        type: array
        items:
          $ref: '#/definitions/PolicyRule'
      approvalGuidelines:
        type: string
      managerJobId:
        type: string
        example: 588f7ee98f138b19220041a7
      messagingConfig:
        $ref: '#/definitions/MessagingConfig'
      contentIds:
        type: array
        description: pinned content document IDs; when merging user and app configs, both lists are unioned (not replaced); validate with validateContentIds before persisting
        items:
          type: string
          example: 588f7ee98f138b19220041a7
      modelTier:
        type: string
        description: requested model tier for the agent; defaults to MEDIUM when not set
        enum:
        - HIGH
        - MEDIUM
        - LOW
      targetedInstructions:
        type: array
        description: audience-scoped instruction snippets injected into the chat prompt when the filter matches the current viewer's person record; size and filter syntax are checked by AgentValidationService before persisting
        items:
          $ref: '#/definitions/TargetedInstruction'
  CustomerDetails:
    type: object
    required:
    - actionRequired
    properties:
      actionRequired:
        type: array
        description: Action required by the client
        items:
          type: string
      partnershipApp:
        type: string
        description: Partnership App
  BundleInstallEntity:
    type: object
    required:
    - entityType
    - entityId
    - originalId
    properties:
      entityType:
        type: string
        enum:
        - ACTION
        - CALENDAR
        - CALENDAR_ENTRY
        - CATEGORY
        - FIELD
        - FORM
        - GROUP
        - PROFILE_TAB
        - QUESTION
        - REPORT
        - REPORT_CHART
        - TASK_CONFIG
        - TEMPLATE
        - TIME_OFF_POLICY
        - CONTENT
      entityId:
        type: string
        example: 588f7ee98f138b19220041a7
      originalId:
        type: string
        example: 588f7ee98f138b19220041a7
  TableRef:
    type: object
    properties:
      tableId:
        type: string
        description: the table id this field references
        example: 588f7ee98f138b19220041a7
      tableName:
        type: string
        description: the table name this field references
  PayInterval:
    type: object
    required:
    - interval
    - pay
    properties:
      interval:
        type: string
        description: Interval (annual or hourly)
        enum:
        - YEARLY
        - MONTHLY
        - WEEKLY
        - DAILY
        - HOURLY
      pay:
        description: Pay over the given interval
        $ref: '#/definitions/Money'
      hoursPerWeek:
        type: integer
        format: int32
        description: working hours per week if interval=hourly
        example: '40'
      weeksPerYear:
        type: integer
        format: int32
        description: working weeks per year if interval=hourly
        example: '52'
      monthsPerYear:
        type: integer
        format: int32
        description: months per year if interval=month
        example: '52'
      daysPerYear:
        type: integer
        format: int32
        description: days per year if interval=day
        example: '250'
  FormEditAccess:
    type: object
    properties:
      allow:
        type: string
        enum:
        - ALWAYS
        - WHILE_PROPOSED
        - UNTIL_ACTIVE
        - WHILE_ASSESSMENT_ACTIVE
        - TIME_LIMIT
      timeLimitSecs:
        type: integer
        format: int64
  OrgStockData:
    type: object
    properties:
      strikePrice:
        type: number
      grantPrice:
        type: number
      totalShares:
        type: integer
        format: int64
  Layout:
    type: object
    required:
    - rows
    properties:
      rows:
        type: array
        items:
          $ref: '#/definitions/LayoutRow'
  Field:
    type: object
    required:
    - id
    - name
    - label
    - type
    - plural
    - isUnique
    - isRequired
    - sensitive
    properties:
      id:
        type: string
        description: globally unique id
        example: 588f7ee98f138b19220041a7
      orgId:
        type: string
        description: parent organization id (empty if global)
        example: 588f7ee98f138b19220041a7
      name:
        type: string
        description: short field name
        example: summary
        pattern: ^[a-zA-Z][a-zA-Z0-9_]+$
        minItems: 3
        maxItems: 32
      label:
        type: string
        description: human-readable full name of field
        example: Job Summary
        minItems: 3
        maxItems: 80
      labelTr:
        description: translations for the human-reada

# --- truncated at 32 KB (117 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/charthop/refs/heads/main/openapi/charthop-preload-api-openapi.yml