openapi: 3.0.1
info:
  title: Tasks API
  description: Provides access to the tasks that are part of a Hyperproof organization.
  version: '1.0'
servers:
  - url: https://api.hyperproof.app/v1/tasks
    description: Hyperproof US
  - url: https://api.hyperproofgov.app/v1/tasks
    description: Hyperproof Gov
  - url: https://api.hyperproof.eu/v1/tasks
    description: Hyperproof EU
security:
  - oauth2: []
paths:
  /:
    post:
      summary: Add Task
      description: >
        `POST /`


        #### Description


        Creates a new task within an organization, initializing its details such
        as title, description, due dates, and assigned users.
      operationId: add-task
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskPost'
            example:
              title: Submit the latest employee agreements
              targetObject:
                objectId: 23b802db-bad2-4f7a-b8d1-ac1177909992
                objectType: control
              description: >-
                The latest employee agreements are needed for the upcoming
                audit.
              assigneeId: ad21d858-c271-4c6d-8780-fecf6b16e534
              priority: medium
              dueDate: '2020-12-17T20:00:00.0000000+00:00'
              hasIntegration: false
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
              example:
                id: ba50096d-bbfa-47af-94a7-092b0984cf35
                orgId: 4c05da3f-f076-461c-8105-80a07a42ab7f
                title: Submit the latest employee agreements
                description: >-
                  The latest employee agreements are needed for the upcoming
                  audit.
                assigneeId: ad21d858-c271-4c6d-8780-fecf6b16e534
                targetId: 23b802db-bad2-4f7a-b8d1-ac1177909992
                targetType: control
                taskStatusId: e2303b2b-5ee4-4354-92de-dfacd1d33f09
                priority: medium
                dueDate: '2020-12-17T20:00:00.0000000+00:00'
                createdOn: '2020-12-17T20:00:00.0000000+00:00'
                updatedOn: '2020-12-17T20:00:00.0000000+00:00'
  /{taskId}:
    get:
      summary: Get Task
      description: >
        `GET /{taskId}`


        #### Description


        Retrieves detailed information about a specific task by its ID,
        including its attributes, status, assignments, and related activity.
      operationId: get-task
      parameters:
        - name: taskId
          in: path
          description: Unique ID of the task to retrieve.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
              example:
                id: ba50096d-bbfa-47af-94a7-092b0984cf35
                orgId: 4c05da3f-f076-461c-8105-80a07a42ab7f
                title: Submit the latest employee agreements
                description: >-
                  The latest employee agreements are needed for the upcoming
                  audit.
                assigneeId: ad21d858-c271-4c6d-8780-fecf6b16e534
                targetId: 23b802db-bad2-4f7a-b8d1-ac1177909992
                targetType: control
                taskStatusId: e2303b2b-5ee4-4354-92de-dfacd1d33f09
                priority: medium
                dueDate: '2020-12-17T20:00:00.0000000+00:00'
                createdOn: '2020-12-17T20:00:00.0000000+00:00'
                updatedOn: '2020-12-17T20:00:00.0000000+00:00'
    patch:
      summary: Update Task
      description: >
        `PATCH /{taskId}`


        #### Description


        Updates an existing task with new values, modifying its attributes such
        as title, description, status, assignee, or due dates.
      operationId: update-task
      parameters:
        - name: taskId
          in: path
          description: Unique ID of the task to update.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskPatch'
            example:
              title: Submit the latest employee agreements
              description: >-
                The latest employee agreements are needed for the upcoming
                audit.
              assigneeId: ad21d858-c271-4c6d-8780-fecf6b16e534
              targetId: 23b802db-bad2-4f7a-b8d1-ac1177909992
              targetType: control
              taskStatusId: e2303b2b-5ee4-4354-92de-dfacd1d33f09
              priority: medium
              dueDate: '2020-12-17T20:00:00.0000000+00:00'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
              example:
                id: ba50096d-bbfa-47af-94a7-092b0984cf35
                orgId: 4c05da3f-f076-461c-8105-80a07a42ab7f
                title: Submit the latest employee agreements
                description: >-
                  The latest employee agreements are needed for the upcoming
                  audit.
                assigneeId: ad21d858-c271-4c6d-8780-fecf6b16e534
                targetId: 23b802db-bad2-4f7a-b8d1-ac1177909992
                targetType: control
                taskStatusId: e2303b2b-5ee4-4354-92de-dfacd1d33f09
                priority: medium
                dueDate: '2020-12-17T20:00:00.0000000+00:00'
                createdOn: '2020-12-17T20:00:00.0000000+00:00'
                updatedOn: '2020-12-17T20:00:00.0000000+00:00'
  /{taskId}/proof:
    post:
      summary: Add Task Proof
      description: >
        `POST /{taskId}/proof`


        #### Description


        Adds a proof item to a task, attaching supporting evidence and its
        associated metadata for tracking and review.
      operationId: add-task-proof
      parameters:
        - name: taskId
          in: path
          description: Unique ID of the task.
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
                - proof
              properties:
                proof:
                  type: string
                  format: binary
                hp-proof-owned-by:
                  type: string
                hp-proof-source:
                  type: string
                hp-proof-source-id:
                  type: string
                hp-proof-source-file-id:
                  type: string
                hp-proof-source-modified-on:
                  type: string
                  format: date-time
                hp-proof-live-sync-enabled:
                  type: boolean
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Proof'
              example:
                id: 4eb909de-51af-11ee-a644-522476618ae8
                orgId: ce83e3cd-5199-11ee-a644-522476618ae8
                filename: example.txt
                contentType: text/plain
                fileExtension: txt
                size: 627
                version: 0
                source: localComputer
                ownedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                uploadedOn: '2023-09-12T20:59:47.6943530+00:00'
                isPrivate: false
                status: active
                createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                createdOn: '2023-09-12T20:59:47.6943530+00:00'
                updatedOn: '2023-09-12T20:59:47.6943530+00:00'
    get:
      summary: Get Task Proof Metadata
      description: >
        `GET /{taskId}/proof`


        #### Description


        Retrieves metadata for all proof items linked to a specific task,
        including details such as file information, sources, and upload
        timestamps.
      operationId: get-task-proof-meta
      parameters:
        - name: taskId
          in: path
          description: Unique ID of the task.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProofCollection'
              example:
                - id: 4eb909de-51af-11ee-a644-522476618ae8
                  orgId: ce83e3cd-5199-11ee-a644-522476618ae8
                  filename: example.txt
                  contentType: text/plain
                  fileExtension: txt
                  size: 627
                  version: 0
                  source: localComputer
                  ownedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                  uploadedOn: '2023-09-12T20:59:47.6943530+00:00'
                  isPrivate: false
                  status: active
                  createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                  updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                  createdOn: '2023-09-12T20:59:47.6943530+00:00'
                  updatedOn: '2023-09-12T20:59:47.6943530+00:00'
  /filter:
    put:
      summary: Get Tasks Filtered
      description: >
        `PUT /filter`


        #### Description


        Retrieves a list of tasks that match the specified filter criteria, such
        as status, assignee, due date, or category.
      operationId: get-tasks-filtered
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskFilter'
            example:
              targetObjectType: control
              targetObjectIds:
                - 23b802db-bad2-4f7a-b8d1-ac1177909992
              taskIds:
                - 23b802db-bad2-4f7a-b8d1-ac1177909992
              assigneeIds:
                - 23b802db-bad2-4f7a-b8d1-ac1177909992
              modifiedAfter: '2020-12-17T20:00:00.0000000+00:00'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskCollection'
              example:
                - id: ba50096d-bbfa-47af-94a7-092b0984cf35
                  orgId: 4c05da3f-f076-461c-8105-80a07a42ab7f
                  title: Submit the latest employee agreements
                  description: >-
                    The latest employee agreements are needed for the upcoming
                    audit.
                  assigneeId: ad21d858-c271-4c6d-8780-fecf6b16e534
                  targetId: 23b802db-bad2-4f7a-b8d1-ac1177909992
                  targetType: control
                  taskStatusId: e2303b2b-5ee4-4354-92de-dfacd1d33f09
                  priority: medium
                  dueDate: '2020-12-17T20:00:00.0000000+00:00'
                  createdOn: '2020-12-17T20:00:00.0000000+00:00'
                  updatedOn: '2020-12-17T20:00:00.0000000+00:00'
  /{taskId}/comments:
    get:
      summary: Get Task Comments
      description: >
        `GET /{taskId}/comments`


        #### Description


        Retrieves all comments from a specified task's Activity Feed, including
        their content, authors, and timestamps.
      operationId: get-task-comments
      parameters:
        - name: taskId
          in: path
          description: Unique ID of the task.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentCollection'
              example:
                - id: ad21d858-c271-4c6d-8780-fecf6b16e534
                  orgId: ad21d858-c271-4c6d-8780-fecf6b16e534
                  commentTextFormatted: >-
                    This is a comment mentioning a user
                    {{user:53c8880a-7e14-4493-a392-0f10bf11cfce}}
                  objectId: ad21d858-c271-4c6d-8780-fecf6b16e534
                  objectType: task
                  status: active
                  createdBy: 554fbf38-f579-4cc8-819f-6377bd9defcb
                  updatedBy: 53c8880a-7e14-4493-a392-0f10bf11cfce
                  createdOn: '2024-06-23T19:37:23.0000000+00:00'
                  updatedOn: '2024-06-27T22:28:30.0000000+00:00'
    post:
      summary: Add Task Comment
      description: >
        `POST /{taskId}/comments`


        #### Description


        Adds a new comment to a task’s Activity Feed, recording the message
        along with its author and timestamp.
      operationId: post-taskid-comments
      parameters:
        - name: taskId
          in: path
          description: Unique ID of the task.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentPost'
            example:
              commentTextFormatted: The audit is completed.
              isInternalComment: true
              objectId: 82d7c228-8bcd-11e9-a94b-ab3de849498z
              objectType: risk
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Activity'
              example:
                id: a3f89b48-9ae1-4852-a229-c4aea92230b0
                orgId: ce83e3cd-5199-11ee-a644-522476618ae8
                type: comment
                message: This is a comment
                objectId: 16d22ded-88ac-4f5c-bc99-8064d9fc44d7
                objectType: audit
                status: active
                createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                createdOn: '2023-09-12T18:26:10.0053650+00:00'
                updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                updatedOn: '2023-09-12T18:26:10.0053650+00:00'
    patch:
      summary: Update Task Comment
      description: >
        `PATCH /{taskId}/comments?sourceCommentId={sourceCommentId}`


        #### Description


        Updates an existing comment in a task's Activity Feed. The comment is
        matched based on the `sourceCommentId` query parameter or body.
      operationId: update-task-comment
      parameters:
        - name: taskId
          in: path
          description: Unique ID of the task.
          required: true
          schema:
            type: string
        - name: sourceCommentId
          in: query
          description: Unique ID of the source comment.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentPatch'
            example:
              commentTextFormatted: The audit is completed.
              isInternalComment: true
              objectId: 82d7c228-8bcd-11e9-a94b-ab3de849498z
              objectType: risk
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Activity'
              example:
                id: a3f89b48-9ae1-4852-a229-c4aea92230b0
                orgId: ce83e3cd-5199-11ee-a644-522476618ae8
                type: comment
                message: This is a comment
                objectId: 16d22ded-88ac-4f5c-bc99-8064d9fc44d7
                objectType: audit
                status: active
                createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                createdOn: '2023-09-12T18:26:10.0053650+00:00'
                updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                updatedOn: '2023-09-12T18:26:10.0053650+00:00'
  /{taskId}/comments/{commentId}:
    patch:
      summary: Update Task Comment
      description: >
        `PATCH /{taskId}/comments/{commentId}`


        #### Description


        Updates an existing comment in a task's Activity Feed, modifying its
        content or associated metadata.
      operationId: patch-taskid-comments-commentid
      parameters:
        - name: taskId
          in: path
          description: Unique ID of the task.
          required: true
          schema:
            type: string
        - name: commentId
          in: path
          description: Unique ID of the comment
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentPatch'
            example:
              commentTextFormatted: The audit is completed.
              isInternalComment: true
              objectId: 82d7c228-8bcd-11e9-a94b-ab3de849498z
              objectType: risk
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Activity'
              example:
                id: a3f89b48-9ae1-4852-a229-c4aea92230b0
                orgId: ce83e3cd-5199-11ee-a644-522476618ae8
                type: comment
                message: This is a comment
                objectId: 16d22ded-88ac-4f5c-bc99-8064d9fc44d7
                objectType: audit
                status: active
                createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                createdOn: '2023-09-12T18:26:10.0053650+00:00'
                updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                updatedOn: '2023-09-12T18:26:10.0053650+00:00'
    delete:
      summary: Delete Task Comment
      description: >
        `DEL /{taskId}/comments/{commentId}`


        #### Description


        Deletes a specified comment from a task, permanently removing it from
        the task’s Activity Feed and history.
      operationId: delete-taskid-comments-commentid
      parameters:
        - name: taskId
          in: path
          description: Unique ID of the task.
          required: true
          schema:
            type: string
        - name: commentId
          in: path
          description: Unique ID of the comment
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Activity'
              example:
                id: a3f89b48-9ae1-4852-a229-c4aea92230b0
                orgId: ce83e3cd-5199-11ee-a644-522476618ae8
                type: comment
                message: This is a comment
                objectId: 16d22ded-88ac-4f5c-bc99-8064d9fc44d7
                objectType: audit
                status: active
                createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                createdOn: '2023-09-12T18:26:10.0053650+00:00'
                updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                updatedOn: '2023-09-12T18:26:10.0053650+00:00'
components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://accounts.hyperproof.app/oauth/token
          scopes:
            task.read: Grants read access to tasks
            task.update: Grants update access to tasks
  schemas:
    ObjectReference:
      type: object
      properties:
        objectType:
          $ref: '#/components/schemas/ObjectType'
        objectId:
          type: string
          description: The unique identifier of the referenced object.
        parentId:
          type: string
          description: The unique identifier of the parent of the referenced object.
    ObjectType:
      type: string
      description: The type of the object.
      enum:
        - audit
        - connection
        - control
        - controlScope
        - domain
        - freshnessHistory
        - exportFile
        - label
        - organization
        - organizationUser
        - policy
        - program
        - proof
        - request
        - requirement
        - risk
        - riskRegister
        - section
        - task
        - scope
        - template
        - user
    ObjectStatus:
      type: string
      description: The status of the object
      enum:
        - active
        - archived
    Activity:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier of the activity
        orgId:
          type: string
          format: uuid
          description: The unique identifier for the organization the activity belongs to.
        type:
          type: string
          description: The type of the activity.
          enum:
            - event
            - comment
        message:
          type: string
          description: The description of this event.
        objectId:
          type: string
          format: uuid
          description: The unique identifier of the object related to the activity.
        objectType:
          $ref: '#/components/schemas/ObjectType'
        status:
          type: string
          description: The current status of the activity.
          enum:
            - active
            - deleted
            - pending
            - canceled
        createdBy:
          type: string
          format: uuid
          description: The unique identifier of the user who created the activity.
        createdOn:
          type: string
          format: date-time
          description: The date and time the activity was created (ISO-8601 format).
        updatedBy:
          type: string
          format: uuid
          description: The unique identifier of the user who last updated the activity.
        updatedOn:
          type: string
          format: date-time
          description: The date and time the activity was last updated (ISO-8601 format).
      example:
        id: a3f89b48-9ae1-4852-a229-c4aea92230b0
        orgId: ce83e3cd-5199-11ee-a644-522476618ae8
        type: comment
        message: This is a comment
        objectId: 16d22ded-88ac-4f5c-bc99-8064d9fc44d7
        objectType: audit
        status: active
        createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        createdOn: '2023-09-12T18:26:10.005365Z'
        updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        updatedOn: '2023-09-12T18:26:10.005365Z'
    Comment:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier for the comment.
        orgId:
          type: string
          format: uuid
          description: The unique identifier for the organization the comment belongs to.
        commentTextFormatted:
          type: string
          description: The formatted text of the comment.
        objectId:
          type: string
          format: uuid
          description: The unique identifier of the object the comment is attached to.
        objectType:
          $ref: '#/components/schemas/ObjectType'
        status:
          $ref: '#/components/schemas/ObjectStatus'
        createdBy:
          type: string
          format: uuid
          description: The unique identifier of the user who created the comment.
        updatedBy:
          type: string
          format: uuid
          description: The unique identifier of the user who last updated the comment.
        createdOn:
          type: string
          format: date-time
          description: The date and time the comment was created (ISO-8601 format).
        updatedOn:
          type: string
          format: date-time
          description: The date and time the comment was last updated (ISO-8601 format).
        sourceUpdatedOn:
          type: string
          format: date-time
          description: >-
            The date and time the comment was updated in teh source system
            (ISO-8601 format).
        deletedOn:
          type: string
          format: date-time
          description: The date and time the comment was deleted (ISO-8601 format).
        isInternal:
          type: boolean
          description: >-
            Whether the comment is internal-only and not visible to external
            auditors.
      example:
        id: ad21d858-c271-4c6d-8780-fecf6b16e534
        orgId: ad21d858-c271-4c6d-8780-fecf6b16e534
        commentTextFormatted: >-
          This is a comment mentioning a user
          {{user:53c8880a-7e14-4493-a392-0f10bf11cfce}}
        objectId: ad21d858-c271-4c6d-8780-fecf6b16e534
        objectType: task
        status: active
        createdBy: 554fbf38-f579-4cc8-819f-6377bd9defcb
        updatedBy: 53c8880a-7e14-4493-a392-0f10bf11cfce
        createdOn: 2024-06-23T19:37:23+0000
        updatedOn: 2024-06-27T22:28:30+0000
    CommentCollection:
      type: array
      description: Collection of comments
      items:
        $ref: '#/components/schemas/Comment'
    CommentPatch:
      type: object
      properties:
        commentTextFormatted:
          type: string
          description: The formatted text of the comment.
        isInternalComment:
          type: boolean
          description: >-
            The flag indicating if the comment is internal-only and not visible
            to external auditors.
      example:
        commentTextFormatted: The audit is completed.
        isInternalComment: true
        objectId: 82d7c228-8bcd-11e9-a94b-ab3de849498z
    CommentPost:
      type: object
      properties:
        commentTextFormatted:
          type: string
          description: The formatted text for the comment.
        isInternalComment:
          type: boolean
          description: >-
            Whether the comment is internal-only. Internal comments are not
            visible to external auditors.
        objectType:
          $ref: '#/components/schemas/ObjectType'
        objectId:
          type: string
          description: The object identifier the comment is attached to.
        sourceCommentId:
          type: string
          description: >-
            The identifier of the comment in the external system from which it
            was synced.
        sourceUpdatedOn:
          type: string
          description: The date and time of the source for the comment (ISO-8601 format).
      required:
        - commentTextFormatted
      example:
        commentTextFormatted: The audit is completed.
        isInternalComment: true
        objectId: 82d7c228-8bcd-11e9-a94b-ab3de849498z
        objectType: risk
    Priority:
      type: string
      description: The priority level.
      enum:
        - highest
        - high
        - medium
        - low
        - lowest
    Proof:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the proof item
        orgId:
          type: string
          description: Unique identifier for the organization
        filename:
          type: string
          description: Name of the uploaded file
        nameOverride:
          type: string
          description: Name of proof Hyperproof given by Hyperproof user
        contentType:
          type: string
          description: MIME type of the file (e.g.,`text/plain`)
        fileExtension:
          type: string
          description: File extension (e.g.,`txt`)
        size:
          type: number
          description: File size in bytes
        version:
          type: integer
          description: Version of the proof item
        source:
          type: string
          description: Source of the file (e.g.,localComputer)
        sourceVersion:
          type: integer
          description: The version of the proof maintained by the source system
        ownedBy:
          type: string
          description: Unique identifier of the user who owns the proof item
        isPrivate:
          type: boolean
          description: Whether the proof item is private
        uploadedOn:
          type: string
          description: The date the proof was uploaded (ISO-8601 format)
        status:
          type: string
          description: Status of the proof item
          enum:
            - active
            - archived
            - deleted
            - pending
            - canceled
        createdBy:
          type: string
          description: Unique identifier of the user who created the proof item
        createdOn:
          type: string
          description: The date the proof was created (ISO-8601 format)
        updatedBy:
          type: string
          description: Unique identifier of the user who last updated the proof item
        updatedOn:
          type: string
          description: The date the proof was updated (ISO-8601 format)
      example:
        id: 4eb909de-51af-11ee-a644-522476618ae8
        orgId: ce83e3cd-5199-11ee-a644-522476618ae8
        filename: example.txt
        contentType: text/plain
        fileExtension: txt
        size: 627
        version: 0
        source: localComputer
        ownedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        uploadedOn: '2023-09-12T20:59:47.694353Z'
        isPrivate: false
        status: active
        createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        createdOn: '2023-09-12T20:59:47.694353Z'
        updatedOn: '2023-09-12T20:59:47.694353Z'
    ProofCollection:
      type: array
      description: A collection of proof.
      items:
        $ref: '#/components/schemas/Proof'
    ProofPost:
      type: object
      required:
        - proof
      properties:
        proof:
          type: string
          format: binary
        hp-proof-owned-by:
          type: string
        hp-proof-source:
          type: string
        hp-proof-source-id:
          type: string
        hp-proof-source-file-id:
          type: string
        hp-proof-source-modified-on:
          type: string
          format: date-time
        hp-proof-live-sync-enabled:
          type: boolean
    Task:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the task.
          format: uuid
        orgId:
          type: string
          description: The unique identifier of the organization the task belongs to.
        title:
          type: string
          description: The title of the task.
        description:
          type: string
          description: The description of the task.
        assigneeId:
          type: string
          description: The unique identifier of the user assigned to the task.
        targetId:
          type: string
          description: The unique identifier of the object that is the target of the task.
        targetType:
          type: string
          description: The object type of the target of the task.
        taskStatusId:
          type: string
          description: The unique identifier of the task status for the task.
        priority:
          $ref: '#/components/schemas/Priority'
        dueDate:
          type: string
          format: date-time
          description: The due date of the task (ISO-8601 format).
        createdOn:
          type: string
          format: date-time
          description: The date and time the task was created (ISO-8601 format).
        updatedOn:
          type: string
          format: date-time
          description: The date and time the task was last updated (ISO-8601 format).
        groupId:
          type: string
          description: The unique identifier of the group assigned to the task.
      example:
        id: ba50096d-bbfa-47af-94a7-092b0984cf35
        orgId: 4c05da3f-f076-461c-8105-80a07a42ab7f
        title: Submit the latest employee agreements
        description: The latest employee agreements are needed for the upcoming audit.
        assigneeId: ad21d858-c271-4c6d-8780-fecf6b16e534
        targetId: 23b802db-bad2-4f7a-b8d1-ac1177909992
        targetType: control
        taskStatusId: e2303b2b-5ee4-4354-92de-dfacd1d33f09
        priority: medium
        dueDate: '2020-12-17T20:00:00Z'
        createdOn: '2020-12-17T20:00:00Z'
        updatedOn: '2020-12-17T20:00:00Z'
        groupId: 193ceec7-4911-11ef-8f90-8688bf62af58
    TaskPatch:
      type: object
      properties:
        title:
          type: string
          description: The title of the task.
        description:
          type: string
          description: The description of the task.
        assigneeId:
          type: string
          format: uuid
          description: The unique identifier of the user assigned to the task.
        targetId:
          type: string
          format: uuid
          description: The unique identifier of the object that is the target of the task.
        targetType:
          type: string
          description: The object type of the target of the task.
        taskStatusId:
          type: string
          format: uuid
          description: The unique identifier of the task status for the task.
        priority:
          $ref: '#/components/schemas/Priority'
        dueDate:
          type: string
          format: date-time
          description: The due date of the task (ISO-8601 format).
        groupId:
          type: string
          format: uuid
          description: The unique identifier of the group assigned to the task.
        clearGroupId:
          type: boolean
          description: >-
            Whether to clear the existing group identifier. GroupId must be
            empty.
      example:
        title: Submit the latest employee agreements
        description: The latest employee agreements are needed for the upcoming audit.
        assigneeId: ad21d858-c271-4c6d-8780-fecf6b16e534
        targetId: 23b802db-bad2-4f7a-b8d1-ac1177909992
        targetType: control
        taskStatusId: e2303b2b-5ee4-4354-92de-dfacd1d33f09
        priority: medium
        dueDate: '2020-12-17T20:00:00Z'
    TaskPost:
      type: object
      required:
        - title
        - targetObject
      properties:
        title:
          type: string
          description: The title of the task.
        targetObject:
          $ref: '#/components/schemas/ObjectReference'
        description:
          type: string
          description: The description of the task.
        assigneeId:
          type: string
          format: uuid
          description: The unique identifier of the user assigned to the task.
        priority:
          $ref: '#/components/schemas/Priority'
        dueDate:
          type: string
          format: date-time
          description: The due date of the task (ISO-8601 format).
        hasIntegration:
          type: boolean
          description: Whether the task has an integration.
        groupId:
          type: string
          format: uuid
          description: The unique identifier of the group assigned to the task.
      example:
        title: Submit the latest employee agreements
        targetObject:
          objectId: 23b802db-bad2-4f7a-b8d1-ac1177909992
          objectType: control
        description: The latest employee agreements are needed for the upcoming audit.
        assigneeId: ad21d858-c271-4c6d-8780-fecf6b16e534
        priority: medium
        dueDate: '2020-12-17T20:00:00Z'
        hasIntegration: false
    TaskFilter:
      type: object
      properties:
        targetObjectType:
          $ref: '#/components/schemas/ObjectType'
        targetObjectIds:
          type: array
          description: The list of target object identifiers to filter by.
          items:
            type: string
            format: uuid
        taskIds:
          type: array
          description: The list of task identifiers to filter by.
          items:
            type: string
            format: uuid
        assigneeIds:
          type: array
          description: The list of assignee identifiers to filter tasks by.
          items:
            type: string
            format: uuid
        modifiedAfter:
          type: string
          format: date-time
          description: >-
            Filter tasks that were modified after the date provided (ISO-8601
            format).
      example:
        targetObjectType: control
        targetObjectIds:
          - 23b802db-bad2-4f7a-b8d1-ac1177909992
        taskIds:
          - 23b802db-bad2-4f7a-b8d1-ac1177909992
        assigneeIds:
          - 23b802db-bad2-4f7a-b8d1-ac1177909992
        modifiedAfter: '2020-12-17T20:00:00Z'
    TaskCollection:
      type: array
      description: A list of tasks.
      items:
        $ref: '#/components/schemas/Task'
