Charthop assessment API

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

OpenAPI Specification

charthop-assessment-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  description: REST API for ChartHop
  version: V1.0.0
  title: ChartHop access assessment 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: assessment
paths:
  /v1/org/{orgId}/assessment:
    get:
      tags:
      - assessment
      summary: Return all assessments in the organization paginated
      operationId: findAssessments
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: type
        in: query
        description: Type of assessment to filter by
        required: false
        type: string
        enum:
        - REVIEW
        - COMP_REVIEW
        - SURVEY
      - name: from
        in: query
        description: Assessment id to start paginating from
        required: false
        type: string
      - name: limit
        in: query
        description: Number of results to return
        required: false
        type: integer
        format: int32
      - name: ids
        in: query
        description: List of ids to filter by
        required: false
        type: string
      - 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: successful operation
          schema:
            $ref: '#/definitions/ResultsAssessment'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
    post:
      tags:
      - assessment
      summary: Create a assessment
      operationId: createAssessment
      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: Assessment data to create
        required: true
        schema:
          $ref: '#/definitions/CreateAssessment'
      responses:
        '201':
          description: assessment created
          schema:
            $ref: '#/definitions/Assessment'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: org not found
  /v1/org/{orgId}/assessment/bulk/delete:
    post:
      tags:
      - assessment
      summary: Delete a set of assessments
      operationId: bulkDeleteAssessments
      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: List of assessment ids to delete
        required: true
        schema:
          type: array
          items:
            type: string
            example: 588f7ee98f138b19220041a7
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
  /v1/org/{orgId}/assessment/bulk/duplicate:
    post:
      tags:
      - assessment
      summary: Duplicate a set of assessments
      operationId: bulkDuplicateAssessments
      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: List of assessment ids to duplicate
        required: true
        schema:
          type: array
          items:
            type: string
            example: 588f7ee98f138b19220041a7
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
  /v1/org/{orgId}/assessment/bulk/move:
    post:
      tags:
      - assessment
      summary: Update the types of a set of assessments
      operationId: bulkChangeAssessmentTypes
      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: List of assessment ids to update and the new type
        required: true
        schema:
          $ref: '#/definitions/BulkChangeAssessmentTypesBody'
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
  /v1/org/{orgId}/assessment/{assessmentId}:
    get:
      tags:
      - assessment
      summary: Return a particular assessment by id
      operationId: getAssessment
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/Assessment'
        '400':
          description: bad request
        '404':
          description: not found
    patch:
      tags:
      - assessment
      summary: Update an existing assessment
      operationId: updateAssessment
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      - name: silent
        in: query
        description: Suppress notification emails
        required: true
        type: boolean
      - name: body
        in: body
        description: Assessment data to update
        required: true
        schema:
          $ref: '#/definitions/UpdateAssessment'
      responses:
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
    delete:
      tags:
      - assessment
      summary: Delete a assessment
      operationId: deleteAssessment
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      responses:
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: not found
  /v1/org/{orgId}/assessment/{assessmentId}/approve:
    post:
      tags:
      - assessment
      summary: Release all un-approved responses for a form of an assessment
      operationId: approveFormResponses
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      - name: formId
        in: query
        description: Form id
        required: false
        type: string
      - name: body
        in: body
        required: false
        schema:
          $ref: '#/definitions/BulkFormResponsesOptions'
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: org not found
  /v1/org/{orgId}/assessment/{assessmentId}/calibration/person:
    get:
      tags:
      - assessment
      summary: Retrieve all persons who were targets of form submissions, retrieving both fields as well as question responses. This endpoint is typically used for calibrations.
      operationId: findCalibrationPersons
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      - name: filter
        in: query
        description: Filter to apply
        required: false
        type: string
      - name: fields
        in: query
        description: Fields to retrieve
        required: false
        type: string
      - name: questionIds
        in: query
        description: Question ids to retrieve
        required: false
        type: string
      - name: date
        in: query
        description: Date to search as of
        required: false
        type: string
        format: date
      - name: format
        in: query
        description: Data format to use; default is json, can also use json-extended or json-readable
        required: false
        type: string
      - name: splitColumns
        in: query
        description: Whether to split complex columns, used for tabular data formats
        required: false
        type: boolean
      responses:
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: org not found
  /v1/org/{orgId}/assessment/{assessmentId}/complete:
    post:
      tags:
      - assessment
      summary: Complete a assessment
      operationId: completeAssessment
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      responses:
        '201':
          description: successful operation
          schema:
            $ref: '#/definitions/Assessment'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: org not found
  /v1/org/{orgId}/assessment/{assessmentId}/form/{formId}/expire:
    post:
      tags:
      - assessment
      summary: Expire all pending tasks for a form of an assessment
      operationId: expireAssessmentFormTasks
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      - name: formId
        in: path
        description: Form id
        required: true
        type: string
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: org not found
  /v1/org/{orgId}/assessment/{assessmentId}/forms-questions:
    get:
      tags:
      - assessment
      summary: Return an overview of the forms and questions used in the assessment. If the user has read access to the assessment, then the forms and questions are visible, even if they would not otherwise be visible on their own
      operationId: getAssessmentFormsAndQuestions
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/AssessmentFormsAndQuestions'
        '400':
          description: bad request
        '404':
          description: not found
  /v1/org/{orgId}/assessment/{assessmentId}/reactivate:
    post:
      tags:
      - assessment
      summary: Reactivate a assessment
      operationId: reactivateAssessment
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      responses:
        '201':
          description: successful operation
          schema:
            $ref: '#/definitions/Assessment'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: org not found
  /v1/org/{orgId}/assessment/{assessmentId}/release:
    post:
      tags:
      - assessment
      summary: Release all un-released responses for a form of an assessment
      operationId: releaseFormResponses
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      - name: formId
        in: query
        description: Form id
        required: false
        type: string
      - name: body
        in: body
        required: false
        schema:
          $ref: '#/definitions/BulkFormResponsesOptions'
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/Process'
        '400':
          description: invalid data
        '401':
          description: not authorized
        '403':
          description: permission denied
        '404':
          description: org not found
  /v1/org/{orgId}/assessment/{assessmentId}/task-summary:
    get:
      tags:
      - assessment
      summary: Return a summary of the tasks for a given assessment
      operationId: getAssessmentTaskSummary
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: assessmentId
        in: path
        description: Assessment id
        required: true
        type: string
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/AssessmentTaskSummary'
        '401':
          description: unauthorized
definitions:
  AssessmentTaskFormSummary:
    type: object
    required:
    - submitTaskDoneCount
    - submitTaskPendingCount
    - submitTaskSkippedCount
    - submitTaskExpiredCount
    - formResponseProposedCount
    - formResponseAwaitingChangesCount
    - formResponseUnreleasedCount
    - formResponseRejectedCount
    - formResponseActiveCount
    - formResponseActiveDoneCount
    - formResponseActiveApprovedCount
    - formResponseActiveReleasedCount
    - submitUserCount
    - targetPersonCount
    - uniqueUserCount
    properties:
      submitTaskDoneCount:
        type: integer
        format: int32
        description: Number of FORM_SUBMIT tasks that are marked as DONE
      submitTaskPendingCount:
        type: integer
        format: int32
        description: Number FORM_SUBMIT tasks that are PENDING
      submitTaskSkippedCount:
        type: integer
        format: int32
        description: Number FORM_SUBMIT tasks that are SKIPPED
      submitTaskExpiredCount:
        type: integer
        format: int32
        description: Number FORM_SUBMIT tasks that are EXPIRED
      formResponseProposedCount:
        type: integer
        format: int32
        description: Number of form responses that are proposed and awaiting approval
      formResponseAwaitingChangesCount:
        type: integer
        format: int32
        description: Number of form responses that have had changes requested and are awaiting changes
      formResponseUnreleasedCount:
        type: integer
        format: int32
        description: Number of form responses that are unreleased
      formResponseRejectedCount:
        type: integer
        format: int32
        description: Number of form responses that are rejected
      formResponseActiveCount:
        type: integer
        format: int32
        description: Number of form responses that are active
      formResponseActiveDoneCount:
        type: integer
        format: int32
        description: Number of form responses that are active (but neither released or approved)
      formResponseActiveApprovedCount:
        type: integer
        format: int32
        description: Number of form responses that are active and approved (but weren't released)
      formResponseActiveReleasedCount:
        type: integer
        format: int32
        description: Number of form responses that are active and released
      submitUserCount:
        type: integer
        format: int32
        description: Number of unique submitter users
      targetPersonCount:
        type: integer
        format: int32
        description: Number of unique target persons
      uniqueUserCount:
        type: integer
        format: int32
        description: Number of total users involved, between submitters and targets
  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
  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
  AssessmentFormsAndQuestions:
    type: object
    required:
    - forms
    - questions
    properties:
      forms:
        type: array
        items:
          $ref: '#/definitions/Form'
      questions:
        type: array
        items:
          $ref: '#/definitions/Question'
  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
  FormBlock:
    type: object
    required:
    - type
    properties:
      id:
        type: string
        description: unique id for the block
        example: 588f7ee98f138b19220041a7
      fieldName:
        type: string
        description: field code name
      type:
        type: string
        description: Type of Form Block
        enum:
        - QUESTION
        - CONTENT
      content:
        type: string
        description: Content of Content Block
      contentTr:
        description: Translations for content block
        $ref: '#/definitions/Translations'
      required:
        type: boolean
        description: whether field is required or not
      questionId:
        type: string
        description: question id, for questions
        example: 588f7ee98f138b19220041a7
      filter:
        type: string
        description: Filter to apply on visibility of this block
  FormSignatureConfig:
    type: object
    required:
    - signers
    properties:
      signers:
        type: array
        items:
          type: string
      messageChannel:
        $ref: '#/definitions/MessageChannelConfig'
      message:
        type: string
      dueDate:
        $ref: '#/definitions/DueDate'
      isSkippable:
        type: boolean
      fieldId:
        type: string
        example: 588f7ee98f138b19220041a7
  Assessment:
    type: object
    required:
    - id
    - orgId
    - label
    - slug
    - type
    properties:
      id:
        type: string
        description: globally unique id
        example: 588f7ee98f138b19220041a7
      orgId:
        type: string
        description: parent organization id
        example: 588f7ee98f138b19220041a7
      label:
        type: string
        description: human-readable label of assessment
        example: Engineering Budget Q2 2019
        minItems: 1
        maxItems: 255
      slug:
        type: string
        description: unique slug of assessment
        example: engineering-budget-q2-2019
        minItems: 1
        maxItems: 40
      type:
        type: string
        description: type of assessment
        enum:
        - REVIEW
        - COMP_REVIEW
        - SURVEY
      fields:
        type: object
        description: assessment fields (description)
        additionalProperties:
          type: object
      shareAccess:
        type: array
        description: users who have been granted access to this assessment
        items:
          $ref: '#/definitions/ShareAccess'
      sensitive:
        type: string
        description: view sensitivity of this assessment
        enum:
        - GLOBAL
        - ORG
        - SENSITIVE
        - PERSONAL
        - MANAGER
        - HIGH
        - PRIVATE
      color:
        type: string
        description: color of assessment
        pattern: ^#[a-f0-9]{6}$
      startDate:
        type: string
        format: date
        description: Date this assessment begins. In the context of REVIEW goals, the date the review cycle begins.
      endDate:
        type: string
        format: date
        description: Date this assessment ends, or is completed. In the context of REVIEW assessment, the date the review cycle ends.
      status:
        type: string
        description: status of this assessment - DRAFT, ACTIVE, DONE
        enum:
        - DRAFT
        - ACTIVE
        - DONE
      doneAt:
        type: string
        description: timestamp when the status of this assessment was set to done
        example: '2017-01-24T13:57:52Z'
      taskCount:
        type: integer
        format: int32
        description: number of tasks associated with this assessment
        example: '12'
      taskDoneCount:
        type: integer
        format: int32
        description: number of tasks associated with this assessment that are done
        example: '3'
      peopleIncludedCount:
        type: integer
        format: int32
        description: number of people included in this assessment
        example: '12'
      query:
        type: string
        description: Query for which people/jobs can be included in the review.
      showDatesInCalendar:
        type: boolean
        description: True if user wants dates to show on company calendar
        example: 'true'
      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'
  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
  DueDate:
    type: object
    required:
    - type
    - dueDay
    - dueTime
    properties:
      type:
        type: string
        enum:
        - EXACT
        - RELATIVE
      dueDay:
        type: string
        description: due day, in either relative (-7d) or exact (YYYY-MM-DD) format
      dueTime:
        type: string
        description: due time, which is a LocalTime
  CreateAssessment:
    type: object
    required:
    - label
    - type
    properties:
      label:
        type: string
        description: human-readable label of assessment
        example: Engineering Budget Q2 2019
        minItems: 1
        maxItems: 255
      slug:
        type: string
        description: unique slug of assessment
        example: engineering-budget-q2-2019
        minItems: 1
        maxItems: 40
      type:
        type: string
        description: type of assessment
        enum:
        - REVIEW
        - COMP_REVIEW
        - SURVEY
      fields:
        type: object
        description: assessment fields (description)
        additionalProperties:
          type: object
      shareAccess:
        type: array
        description: users who have been granted access to this assessment
        items:
          $ref: '#/definitions/ShareAccess'
      sensitive:
        type: string
        description: view sensitivity of this assessment
        enum:
        - GLOBAL
        - ORG
        - SENSITIVE
        - PERSONAL
        - MA

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