swagger: '2.0' info: description: REST API for ChartHop version: V1.0.0 title: ChartHop access form 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: form paths: /v1/org/{orgId}/form: get: tags: - form summary: Return all forms in the organization paginated operationId: findForms consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: status in: query description: Status to filter by required: false type: string enum: - ACTIVE - INACTIVE - ARCHIVED - name: from in: query description: Form 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: 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/ResultsForm' '400': description: bad request '401': description: not authorized '404': description: not found post: tags: - form summary: Create a form operationId: createForm 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: Form data to create required: true schema: $ref: '#/definitions/CreateForm' responses: '201': description: form created schema: $ref: '#/definitions/Form' '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: org not found /v1/org/{orgId}/form/available: get: tags: - form summary: Return all active forms applicable to a particular entity operationId: getAvailableForms consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: targetId in: query description: Target id required: false type: string - name: targetType in: query description: Target type required: false type: string enum: - NONE - PERSON responses: '200': description: successful operation schema: $ref: '#/definitions/ResultsFormSummary' '400': description: bad request '401': description: not authorized '404': description: not found /v1/org/{orgId}/form/delete: delete: tags: - form summary: Delete forms operationId: deleteForms 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: Form ids required: true schema: type: array items: type: string example: 588f7ee98f138b19220041a7 responses: '204': description: forms deleted '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: not found /v1/org/{orgId}/form/person/{personId}: get: tags: - form summary: Return all active forms applicable to a particular person operationId: findFormsForPerson consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: personId in: path description: Person id required: true type: string responses: '200': description: successful operation schema: $ref: '#/definitions/ResultsForm' '400': description: bad request '401': description: not authorized '404': description: not found /v1/org/{orgId}/form/status: post: tags: - form summary: Update status for existing forms operationId: updateFormStatus 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: Form data to update required: true schema: $ref: '#/definitions/FormStatusUpdateRequest' responses: '200': description: form status updated '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: not found /v1/org/{orgId}/form/{formId}: get: tags: - form summary: Return a particular form by id operationId: getForm consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string responses: '200': description: successful operation schema: $ref: '#/definitions/Form' '400': description: bad request '404': description: not found patch: tags: - form summary: Update an existing form operationId: updateForm consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string - name: body in: body description: Form data to update required: true schema: $ref: '#/definitions/UpdateForm' responses: '204': description: form updated '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: not found delete: tags: - form summary: Delete a form operationId: deleteForm consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string responses: '204': description: form deleted '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: not found post: tags: - form summary: Submit data from a form operationId: legacySubmitForm consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Org id required: true type: string - name: body in: body description: Form data to submit required: true schema: $ref: '#/definitions/FormSubmitRequest' responses: '204': description: form submitted '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: org not found /v1/org/{orgId}/form/{formId}/collect: post: tags: - form summary: Collect data for an existing form, sending emails and chat notifications to people being requested operationId: collectFormData consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string - name: body in: body description: Details on the data collection required: false schema: $ref: '#/definitions/FormCollectRequest' responses: '201': description: form collection started schema: $ref: '#/definitions/FormCollectionResponse' '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: org not found /v1/org/{orgId}/form/{formId}/draft: get: tags: - form summary: Get the current state of form draft data operationId: getFormDraft consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string - name: personId in: query description: Person id required: false type: string responses: '200': description: successful operation schema: $ref: '#/definitions/PartialFormDraft' '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: org not found /v1/org/{orgId}/form/{formId}/duplicate: post: tags: - form summary: Duplicate a form operationId: duplicateForm consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id to duplicate required: true type: string - name: body in: body description: Form duplication options required: true schema: $ref: '#/definitions/DuplicateFormOptions' responses: '201': description: successful operation schema: $ref: '#/definitions/Form' '400': description: invalid data '403': description: permission denied '404': description: not found /v1/org/{orgId}/form/{formId}/preview-render: post: tags: - form summary: Render a preview of a form operationId: renderPreviewForm consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/FormPreviewRenderRequest' responses: '200': description: successful operation schema: $ref: '#/definitions/FormRender' '400': description: bad request '401': description: not authorized '404': description: not found /v1/org/{orgId}/form/{formId}/remind: post: tags: - form summary: Sends reminder for a form with existing tasks, sending emails/chat notifications to people being requested operationId: remindFormData consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string - name: body in: body description: Details on the data collection required: false schema: $ref: '#/definitions/FormCollectRequest' responses: '201': description: form reminder started schema: $ref: '#/definitions/Process' '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: org not found /v1/org/{orgId}/form/{formId}/render: get: tags: - form summary: Render a form for display operationId: renderForm consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string - name: targetId in: query description: Target id required: false type: string - name: targetType in: query description: Target type required: false type: string enum: - NONE - PERSON - name: formResponseId in: query description: Form response id, if editing a prior form response required: false type: string - name: formResponseChangeId in: query description: Form response change id, if editing a prior form response (deprecated) required: false type: string - name: formVersionId in: query description: Form version id, if rendering a previous version of the form required: false type: string responses: '200': description: successful operation schema: $ref: '#/definitions/FormRender' '400': description: bad request '401': description: not authorized '404': description: not found /v1/org/{orgId}/form/{formId}/rerender/question/{updateQuestionId}: post: tags: - form summary: Re-render form blocks based on changes to the form values operationId: rerenderForm consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string - name: updateQuestionId in: path description: The question id that is being updated to trigger the re-render required: true type: string - name: targetId in: query description: Target id required: false type: string - name: targetType in: query description: Target type required: false type: string enum: - NONE - PERSON - name: formVersionId in: query description: Form version id, if rendering a previous version of the form required: false type: string - name: body in: body description: Form data to submit required: true schema: type: object additionalProperties: type: object responses: '200': description: successful operation schema: $ref: '#/definitions/FormRerender' '400': description: bad request '401': description: not authorized '404': description: not found /v1/org/{orgId}/form/{formId}/submit: post: tags: - form summary: Submit data from a form operationId: submitForm consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string - name: targetId in: query description: Target id required: false type: string - name: targetType in: query description: Target type required: false type: string enum: - NONE - PERSON - name: body in: body description: Form data to submit required: true schema: type: object additionalProperties: type: object responses: '204': description: form submitted '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: org not found /v1/org/{orgId}/form/{formId}/submit/draft: post: tags: - form summary: Submit data from a form draft operationId: submitFormDraft consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: formId in: path description: Form id required: true type: string - name: targetId in: query description: Target id required: false type: string - name: targetType in: query description: Target type required: false type: string enum: - NONE - PERSON - name: body in: body description: Form data to submit required: true schema: type: object additionalProperties: type: object responses: '201': description: form draft submitted schema: $ref: '#/definitions/FormDraft' '400': description: invalid data '401': description: not authorized '403': description: permission denied '404': description: org 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 FormPreviewRenderRequest: type: object required: - form - blocks properties: targetId: type: string example: 588f7ee98f138b19220041a7 targetType: type: string enum: - NONE - PERSON form: $ref: '#/definitions/PartialForm' blocks: type: array items: $ref: '#/definitions/FormPreviewBlock' PartialQuestion: type: object properties: id: type: string description: globally unique id example: 588f7ee98f138b19220041a7 orgId: type: string description: parent organization id (empty if global) example: 588f7ee98f138b19220041a7 question: type: string description: text of the question example: What is your favorite color? questionTr: description: translations for the question text $ref: '#/definitions/Translations' fieldId: type: string description: if the question is linked to a field, the id of that field. Any question responses will be automatically saved to the field example: 588f7ee98f138b19220041a7 type: type: string description: datatype of the question enum: - ADDRESS - AUDIO - BOOLEAN - COMP - COMPOUND - COMP_BAND - CONTACTS - CURRENCY - DATE - DECIMAL - ELAPSED_DAYS - ELAPSED_MONTHS - ELAPSED_YEARS - EMAIL - ENUM - ENUM_EXPR - ENUM_MULTI - ENUM_SCALE - EXPR - FILE - GROUP - GROUPS - GROUP_ASSIGNMENTS - GROUP_TYPE - GROUP_POSITION_ASSIGNMENTS - IMAGE - INTEGER - JOB - JOB_CODE - JOBS - JOB_TIER - LIST - MAP - MONEY - NAME - OBJECT - PAY_INTERVAL - PERCENT - PERSON - PERSONS - PHONE - STOCKGRANT - STRING - TABLE_REF - TEXT - TIMEOFF - TIMESTAMP - TRACKED_GROUP - URL - USER - VARIABLE_COMP - VARIABLE_COMPS plural: type: string description: plural type of the question datatype (either SINGLE, LIST, or SET) enum: - SINGLE - LIST - SET values: type: array description: possible values (enum type only) items: $ref: '#/definitions/EnumValue' places: type: integer format: int32 description: number of decimal places for numeric values options: description: validation options $ref: '#/definitions/FieldOptions' 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' CreateForm: type: object required: - label - blocks - status properties: label: type: string description: human-readable full name of form example: 'Health Index: Q2' minItems: 1 maxItems: 255 displayName: type: string description: display name of form during completion example: Health Index minItems: 1 maxItems: 255 displayNameTr: description: display name of form, translated $ref: '#/definitions/Translations' description: type: string description: description of form example: The Engineering department, where engineers develop new technology and products. minItems: 0 maxItems: 1000 blocks: type: array description: ordered list of blocks being collected in this form items: $ref: '#/definitions/FormBlock' status: type: string description: status of the form enum: - ACTIVE - INACTIVE - ARCHIVED type: type: string description: type of the form enum: - BUILT_IN - CUSTOM targetType: type: string description: target type that the form can be filled out about enum: - NONE - PERSON targetFilter: type: string description: filter that controls on which profiles this tab will appear submitFilter: type: string description: filter that controls which respondents can submit this form. The form:submit permission, if present, overrides this filter responseReadFilter: type: string description: filter that controls who can read the form responses. The formResponse:read permission, if present, overrides this filter approval: type: string description: approval needed, if any approval is required enum: - MANAGER - GRAND_MANAGER release: type: string description: whether a release step is involved (subsequent to approval if any) enum: - SUBMITTER - ADMIN releaseMessageChannel: description: the message channel to be used for release notifications $ref: '#/definitions/MessageChannelConfig' share: type: string description: whether sharing form responses is allowed enum: - SUBMITTER - ADMIN shareMessageChannel: description: the message channel to be used for sharing notifications $ref: '#/definitions/MessageChannelConfig' autoShare: type: array description: list of automatic sharing to be done after submission items: $ref: '#/definitions/AutoShare' autoShareMessageChannel: description: the message channel to be used for automatic sharing notifications $ref: '#/definitions/MessageChannelConfig' submitterEdit: description: post-submission editing permissions for the submitter $ref: '#/definitions/FormEditAccess' approverEdit: description: post-submission editing permissions for the approver $ref: '#/definitions/FormEditAccess' signature: description: if the form response should generate a PDF which should be sent for signature, these settings are used $ref: '#/definitions/FormSignatureConfig' authorSensitive: type: string description: view sensitivity for the author of this form - the level of view access required to view the createId and updateId fields. If null, the author's identity is always visible as long as the viewer can read the form response. If set to PRIVATE, the author's identity is stored in ChartHop, but protected such that even users with sensitive access cannot access the data. If set to ANONYMOUS, the author's identity is not stored in ChartHop at all. enum: - ANONYMOUS - PRIVATE - HIGH - MANAGER options: description: options, such as notification settings $ref: '#/definitions/FormOptions' completeMode: type: string description: appearance of the form during completion enum: - MODAL - FULLSCREEN ai: description: AI form completion and assistance settings $ref: '#/definitions/FormAiConfig' Translations: type: object required: - values properties: values: type: object additionalProperties: type: string FormRerender: type: object required: - blocks - visibleBlockIds properties: blocks: type: array items: $ref: '#/definitions/FormRenderBlock' visibleBlockIds: type: array items: type: string example: 588f7ee98f138b19220041a7 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 ResultsForm: type: object required: - data properties: data: type: array items: $ref: '#/definitions/Form' next: type: string access: type: array items: $ref: '#/definitions/ResultsAccess' 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 FormRenderBlock: type: object required: - type - id properties: type: type: string enum: - QUESTION - CONTENT id: type: string example: 588f7ee98f138b19220041a7 name: type: string question: type: string questionTr: $ref: '#/definitions/Translations' dataType: type: string enum: - ADDRESS - AUDIO - BOOLEAN - COMP - COMPOUND - COMP_BAND - CONTACTS - CURRENCY - DATE - DECIMAL - ELAPSED_DAYS - ELAPSED_MONTHS - ELAPSED_YEARS - EMAIL - ENUM - ENUM_EXPR - ENUM_MULTI - ENUM_SCALE - EXPR - FILE - GROUP - GROUPS - GROUP_ASSIGNMENTS - GROUP_TYPE - GROUP_POSITION_ASSIGNMENTS - IMAGE - INTEGER - JOB - JOB_CODE - JOBS - JOB_TIER - LIST - MAP - MONEY - NAME - OBJECT - PAY_INTERVAL - PERCENT - PERSON - PERSONS - PHONE - STOCKGRANT - STRING - TABLE_REF - TEXT - TIMEOFF - TIMESTAMP - TRACKED_GROUP - URL - USER - VARIABLE_COMP - VARIABLE_COMPS plural: type: string enum: - SINGLE - LIST - SET values: type: array items: $ref: '#/definitions/EnumValue' options: $ref: '#/definitions/FieldOptions' value: type: object required: type: boolean content: type: string contentTr: $ref: '#/definitions/Translations' label: type: string FormStatusUpdateRequest: type: object required: - updateStatus - formIds properties: updateStatus: type: string description: New status to update enum: - ACTIVE - INACTIVE - ARCHIVED formIds: type: array description: Form ids items: type: string example: 588f7ee98f138b19220041a7 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 UpdateForm: type: object properties: label: type: string description: human-readable full name of form example: 'Health Index: Q2' minItems: 1 maxItems: 255 displayName: type: string description: display name of form during completion example: Health Index minItems: 1 maxItems: 255 displayNameTr: description: display name of form, translated $ref: '#/definitions/Translations' description: type: string description: description of form example: The Engineering department, where engineers develop new technology and products. minItems: 0 maxItems: 1000 blocks: type: array description: ordered list of blocks being collected in this form items: $ref: '#/definitions/FormBlock' status: type: string description: status of the form enum: - ACTIVE - INACTIVE - ARCHIVED type: type: string description: type of the form enum: - BUILT_IN - CUSTOM targetType: type: string description: target type that the form can be filled out about enum: - NONE - PERSON targetFilter: type: string description: filter that controls on which profiles this tab will appear submitFilter: type: string description: filter that controls which respondents can submit this form. The form:submit permission, if present, overrides this filter responseReadFilter: type: string description: filter that controls who can read the form responses. The formResponse:read permission, if present, overrides this filter approval: type: string description: approval needed, if any approval is required enum: - MANAGER - GRAND_MANAGER release: type: string description: whether a release step is involved (subsequent to approval if any) enum: - SUBMITTER - ADMIN releaseMessageChannel: description: the message channel to be used for release notifications $ref: '#/definitions/MessageChannelConfig' share: type: string description: whether sharing form responses is allowed enum: - SUBMITTER - ADMIN shareMessageChannel: description: the message channel to be used for sharing notifications $ref: '#/definitions/MessageChannelConfig' autoShare: type: array description: list of automatic sharing to be done after submission items: $ref: '#/definitions/AutoShare' autoShareMessageChannel: description: the message channel to be used for automatic sharing notifications $ref: '#/definitions/MessageChannelConfig' submitterEdit: description: post-submission editing permissions for the submitter $ref: '#/definitions/FormEditAccess' approverEdit: description: post-submission editing permissions for the approver $ref: '#/definitions/FormEditAccess' signature: description: if the form response should generate a PDF which should be sent for signature, these settings are used $ref: '#/definitions/FormSignatureConfig' authorSensitive: type: string description: view sensitivity for the author of this form - the level of view access required to view the createId and updateId fields. If null, the author's identity is always visible as long as the viewer can read the form response. If set to PRIVATE, the author's identity is stored in ChartHop, but protected such that even users with sensitive access cannot access the data. If set to ANONYMOUS, the author's identity is not stored in ChartHop at all. enum: - ANONYMOUS - PRIVATE - HIGH - MANAGER options: description: options, such as notification settings $ref: '#/definitions/FormOptions' completeMode: type: string description: appearance of the form during completion enum: - MODAL - FULLSCREEN ai: description: AI form completion and assistance settings $ref: '#/definitions/FormAiConfig' 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 AutoShare: type: object required: - access - shareWith properties: access: type: string enum: - NONE - LIMITED_READ - LIMITED_WRITE - STANDARD_READ - STANDARD_WRITE - COMPENSATION_READ - FULL_READ - COMP_PLANNING_PARTICIPANT - COMPENSATION_WRITE - WRITE - COMPENSATION_OWNER - OWNER shareWith: type: string ResultsFormSummary: type: object required: - data properties: data: type: array items: $ref: '#/definitions/FormSummary' next: type: string 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' EnumValue: type: object required: - name - label properties: name: type: string description: enum value name label: type: string description: enum value label color: type: string description: color of property pattern: ^#[a-f0-9]{6}$ expr: type: string description: computed expression, for ENUM_EXPR type num: type: number description: numeric value, for ENUM_SCALE type sort: type: integer format: int32 description: sort order rank: type: integer format: int32 description: rank order, if selected in rank order id: type: string description: unique identifier for enum example: 588f7ee98f138b19220041a7 labelTr: description: translations for the label $ref: '#/definitions/Translations' Task: type: object required: - id - orgId - userId - type - entityId - status properties: id: type: string description: globally unique id example: 588f7ee98f138b19220041a7 orgId: type: string description: parent organization id example: 588f7ee98f138b19220041a7 userId: type: string description: user who is responsible for the task example: 588f7ee98f138b19220041a7 assessmentId: type: string description: parent assessment id that this task belongs to example: 588f7ee98f138b19220041a7 parentEntityId: type: string description: parent entity id that this task belongs to, should be used with entityId example: 588f7ee98f138b19220041a7 type: type: string description: type of task enum: - FORM_SUBMIT - FORM_RESPONSE_APPROVE - FORM_RESPONSE_RESUBMIT - CHANGE_APPROVE - TIMEOFF_APPROVE - SCENARIO_CHANGES_APPROVE - SCENARIO_CHANGES_CREATE - ORG_IMPORT - COMP_REVIEW_APPROVAL_SUBMIT - SCENARIO_APPROVAL_SUBMIT - APPROVAL_CHAIN_UPDATE_FALLBACK_APPROVER - ACTION - SIGNATURE - GOAL_PROGRESS - TODO entityId: type: string description: the primary entity being referenced by the task - for example for a FORM_SUBMIT, this will be the form example: 588f7ee98f138b19220041a7 targetId: type: string description: the optional target entity being referenced by the task - for example for a FORM_SUBMIT, this will be the person example: 588f7ee98f138b19220041a7 categoryId: type: string description: the data category that the task belongs to example: 588f7ee98f138b19220041a7 actionId: type: string description: the action that created the task, if the task was generated from an action example: 588f7ee98f138b19220041a7 status: type: string description: status of this task enum: - PENDING - DONE - EXPIRED - SKIPPED doneAt: type: string description: timestamp that the task was done, if it was done example: '2017-01-24T13:57:52Z' createId: type: string description: created by user id example: 588f7ee98f138b19220041a7 createBehalfId: type: string description: created on behalf of user id example: 588f7ee98f138b19220041a7 createAttribution: $ref: '#/definitions/Attribution' createAt: type: string description: created timestamp example: '2017-01-24T13:57:52Z' label: type: string description: The user-visible label for the task; if not set, will automatically default based on the task type message: type: string description: The message attached to this task example: this is the best task ever shareAccess: type: array description: users who are specifically granted permission to view or edit this task items: $ref: '#/definitions/ShareAccess' path: type: string description: the optional path of this task (only applies to Type == ORG_IMPORT) 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' taskConfigId: type: string description: id of the TaskConfig example: 588f7ee98f138b19220041a7 slug: type: string description: slug used to reference tasks in events example: onboardingForm dueAt: type: string description: due date for the task pastDueAction: type: string description: what action to take when the task is past its due date example: NONE enum: - NONE - SET_EXPIRED isSkippable: type: boolean description: check for if the task can be skipped MessageChannelConfig: type: object required: - channels - alwaysEmail properties: channels: type: array items: type: string enum: - EMAIL - CHAT - CHAT_SLACK - CHAT_TEAMS alwaysEmail: type: boolean Form: type: object required: - id - orgId - label - status - options 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 full name of form example: 'Health Index: Q2' minItems: 1 maxItems: 255 displayName: type: string description: display name of form during completion example: Health Index minItems: 1 maxItems: 255 displayNameTr: description: display name of form, translated $ref: '#/definitions/Translations' description: type: string description: description of form example: The Engineering department, where engineers develop new technology and products. minItems: 0 maxItems: 1000 blocks: type: array description: ordered list of blocks being collected in this form items: $ref: '#/definitions/FormBlock' status: type: string description: status of the form enum: - ACTIVE - INACTIVE - ARCHIVED type: type: string description: type of the form enum: - BUILT_IN - CUSTOM targetType: type: string description: target type that the form can be filled out about enum: - NONE - PERSON targetFilter: type: string description: filter that controls on which profiles this tab will appear submitFilter: type: string description: filter that controls which respondents can submit this form. The form:submit permission, if present, overrides this filter responseReadFilter: type: string description: filter that controls who can read the form responses. The formResponse:read permission, if present, overrides this filter approval: type: string description: approval needed, if any approval is required enum: - MANAGER - GRAND_MANAGER release: type: string description: whether a release step is involved (subsequent to approval if any) enum: - SUBMITTER - ADMIN releaseMessageChannel: description: the message channel to be used for release notifications $ref: '#/definitions/MessageChannelConfig' share: type: string description: whether sharing form responses is allowed enum: - SUBMITTER - ADMIN shareMessageChannel: description: the message channel to be used for sharing notifications $ref: '#/definitions/MessageChannelConfig' autoShare: type: array description: list of automatic sharing to be done after submission items: $ref: '#/definitions/AutoShare' autoShareMessageChannel: description: the message channel to be used for automatic sharing notifications $ref: '#/definitions/MessageChannelConfig' submitterEdit: description: post-submission editing permissions for the submitter $ref: '#/definitions/FormEditAccess' approverEdit: description: post-submission editing permissions for the approver $ref: '#/definitions/FormEditAccess' signature: description: if the form response should generate a PDF which should be sent for signature, these settings are used $ref: '#/definitions/FormSignatureConfig' authorSensitive: type: string description: view sensitivity for the author of this form - the level of view access required to view the createId and updateId fields. If null, the author's identity is always visible as long as the viewer can read the form response. If set to PRIVATE, the author's identity is stored in ChartHop, but protected such that even users with sensitive access cannot access the data. If set to ANONYMOUS, the author's identity is not stored in ChartHop at all. enum: - ANONYMOUS - PRIVATE - HIGH - MANAGER options: description: options, such as notification settings $ref: '#/definitions/FormOptions' completeMode: type: string description: appearance of the form during completion enum: - MODAL - FULLSCREEN ai: description: AI form completion and assistance settings $ref: '#/definitions/FormAiConfig' 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: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' PartialFormDraft: type: object properties: id: type: string description: globally unique id example: 588f7ee98f138b19220041a7 orgId: type: string description: parent organization id example: 588f7ee98f138b19220041a7 formId: type: string description: form being submitted example: 588f7ee98f138b19220041a7 personId: type: string description: person form is being filled out on example: 588f7ee98f138b19220041a7 data: type: object description: draft submission data - map of field names to data additionalProperties: type: object 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' pendingApprovalChangeId: type: string example: 588f7ee98f138b19220041a7 format: type: string description: whether the draft is using extended-json format for data storage enum: - EXTENDED_JSON - LEGACY FormAiConfig: type: object required: - enableRead - enableWrite properties: enableRead: type: boolean enableWrite: type: boolean agentUserId: type: string example: 588f7ee98f138b19220041a7 instructions: type: string label: type: string agentSubmit: type: string description: 'whether AI agents are allowed to submit this form: null/absent (never), CHAT (only when in an interactive chat with a human), AUTO (also when running autonomously). Defaults to never.' enum: - CHAT - AUTO FormCollectionResponse: type: object required: - recipientList properties: process: $ref: '#/definitions/Process' recipientList: type: array items: $ref: '#/definitions/Task' FormCollectRequest: type: object required: - preview properties: assessmentId: type: string description: the assessment id that this form collection request aligns to (for example a performance review cycle) example: 588f7ee98f138b19220041a7 targetFilter: type: string description: filter query to apply on who should receive the form collection request submitFilter: type: string description: Filter to for jobs/person that match via relationship message: type: string description: message to include in notification messageChannel: description: message channel configuration, if not using default $ref: '#/definitions/MessageChannelConfig' preview: type: boolean description: Is this a preview? previewFields: type: string description: In preview mode, fields to return about the respondents FormSubmitRequest: type: object required: - personId - data properties: personId: type: string description: person data is being filled out on behalf of example: 588f7ee98f138b19220041a7 data: type: object description: data being submitted additionalProperties: type: object blocksData: type: object description: data being submitted additionalProperties: type: object FormRender: type: object required: - id - label - displayName - options - blocks - rerenderQuestionIds - responseSensitive properties: id: type: string example: 588f7ee98f138b19220041a7 label: type: string displayName: type: string displayNameTr: $ref: '#/definitions/Translations' options: $ref: '#/definitions/FormOptions' blocks: type: array items: $ref: '#/definitions/FormRenderBlock' rerenderQuestionIds: type: array uniqueItems: true items: type: string example: 588f7ee98f138b19220041a7 responseSensitive: type: string enum: - GLOBAL - ORG - SENSITIVE - PERSONAL - MANAGER - HIGH - PRIVATE authorSensitive: type: string enum: - ANONYMOUS - PRIVATE - HIGH - MANAGER ai: $ref: '#/definitions/FormAiConfig' formVersionId: type: string example: 588f7ee98f138b19220041a7 ShareAccess: type: object required: - access properties: access: type: string description: access permission level enum: - NONE - LIMITED_READ - LIMITED_WRITE - STANDARD_READ - STANDARD_WRITE - COMPENSATION_READ - FULL_READ - COMP_PLANNING_PARTICIPANT - COMPENSATION_WRITE - WRITE - COMPENSATION_OWNER - OWNER userId: type: string description: user id example: 5887a7718f138b6a2a0041a7 groupId: type: string description: group id example: 5887a7718f138b6a2a0041a7 fields: type: string description: fields example: name,image,title PartialForm: type: object 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 full name of form example: 'Health Index: Q2' minItems: 1 maxItems: 255 displayName: type: string description: display name of form during completion example: Health Index minItems: 1 maxItems: 255 displayNameTr: description: display name of form, translated $ref: '#/definitions/Translations' description: type: string description: description of form example: The Engineering department, where engineers develop new technology and products. minItems: 0 maxItems: 1000 blocks: type: array description: ordered list of blocks being collected in this form items: $ref: '#/definitions/FormBlock' status: type: string description: status of the form enum: - ACTIVE - INACTIVE - ARCHIVED type: type: string description: type of the form enum: - BUILT_IN - CUSTOM targetType: type: string description: target type that the form can be filled out about enum: - NONE - PERSON targetFilter: type: string description: filter that controls on which profiles this tab will appear submitFilter: type: string description: filter that controls which respondents can submit this form. The form:submit permission, if present, overrides this filter responseReadFilter: type: string description: filter that controls who can read the form responses. The formResponse:read permission, if present, overrides this filter approval: type: string description: approval needed, if any approval is required enum: - MANAGER - GRAND_MANAGER release: type: string description: whether a release step is involved (subsequent to approval if any) enum: - SUBMITTER - ADMIN releaseMessageChannel: description: the message channel to be used for release notifications $ref: '#/definitions/MessageChannelConfig' share: type: string description: whether sharing form responses is allowed enum: - SUBMITTER - ADMIN shareMessageChannel: description: the message channel to be used for sharing notifications $ref: '#/definitions/MessageChannelConfig' autoShare: type: array description: list of automatic sharing to be done after submission items: $ref: '#/definitions/AutoShare' autoShareMessageChannel: description: the message channel to be used for automatic sharing notifications $ref: '#/definitions/MessageChannelConfig' submitterEdit: description: post-submission editing permissions for the submitter $ref: '#/definitions/FormEditAccess' approverEdit: description: post-submission editing permissions for the approver $ref: '#/definitions/FormEditAccess' signature: description: if the form response should generate a PDF which should be sent for signature, these settings are used $ref: '#/definitions/FormSignatureConfig' authorSensitive: type: string description: view sensitivity for the author of this form - the level of view access required to view the createId and updateId fields. If null, the author's identity is always visible as long as the viewer can read the form response. If set to PRIVATE, the author's identity is stored in ChartHop, but protected such that even users with sensitive access cannot access the data. If set to ANONYMOUS, the author's identity is not stored in ChartHop at all. enum: - ANONYMOUS - PRIVATE - HIGH - MANAGER options: description: options, such as notification settings $ref: '#/definitions/FormOptions' completeMode: type: string description: appearance of the form during completion enum: - MODAL - FULLSCREEN ai: description: AI form completion and assistance settings $ref: '#/definitions/FormAiConfig' 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: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' DuplicateFormOptions: type: object required: - unlinkFields properties: unlinkFields: type: boolean unlinkQuestionIds: type: array uniqueItems: true items: type: string example: 588f7ee98f138b19220041a7 FormPreviewBlock: type: object required: - type properties: id: type: string example: 588f7ee98f138b19220041a7 type: type: string enum: - QUESTION - CONTENT content: type: string question: $ref: '#/definitions/PartialQuestion' required: type: boolean filter: type: string FormSummary: type: object required: - id - label - displayName properties: id: type: string example: 588f7ee98f138b19220041a7 label: type: string displayName: type: string displayNameTr: $ref: '#/definitions/Translations' FormOptions: type: object properties: notifySubmitter: type: boolean notifySubmitterManager: type: boolean notifySelf: type: boolean notifyManager: type: boolean notifyUserIds: type: array items: type: string example: 588f7ee98f138b19220041a7 fillValues: type: boolean enableDraft: type: boolean peersField: type: string enableExport: type: boolean timeToEdit: type: string endDate: type: string FormEditAccess: type: object properties: allow: type: string enum: - ALWAYS - WHILE_PROPOSED - UNTIL_ACTIVE - WHILE_ASSESSMENT_ACTIVE - TIME_LIMIT timeLimitSecs: type: integer format: int64 FormDraft: type: object required: - id - orgId - formId - data - createId - createAt - updateId - updateAt properties: id: type: string description: globally unique id example: 588f7ee98f138b19220041a7 orgId: type: string description: parent organization id example: 588f7ee98f138b19220041a7 formId: type: string description: form being submitted example: 588f7ee98f138b19220041a7 personId: type: string description: person form is being filled out on example: 588f7ee98f138b19220041a7 data: type: object description: draft submission data - map of field names to data additionalProperties: type: object 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' pendingApprovalChangeId: type: string example: 588f7ee98f138b19220041a7 format: type: string description: whether the draft is using extended-json format for data storage enum: - EXTENDED_JSON - LEGACY