Charthop org API

The org API from Charthop — 13 operation(s) for org.

OpenAPI Specification

charthop-org-api-openapi.yml Raw ↑
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