---
title: "Update Sections"
method: PUT
path: "/evidence-packet-drafts/{evidence_packet_id}/sections"
tags: ["evidence-packet-drafts"]
---

# Update Sections

`PUT /evidence-packet-drafts/{evidence_packet_id}/sections`

Reconcile the sections of a draft evidence packet against a desired set of blocks.

Accepts a complete list of configuration block IDs that should be selected.
The backend idempotently:
- Creates EvidencePacketSection rows for any block in the list that doesn't have one
- Deletes EvidencePacketSection rows whose source block is no longer in the list
- Adds document request rows for newly-needed document types
- Removes document request rows that are only needed by deleted sections

Manually-added document requests (not claimed by any section) are always preserved.

Only allowed for packets in DRAFT status.

## Path parameters

- `evidence_packet_id` string, uuid, required

## Request body

- UpdateSectionsBody
  - `block_ids` string[], required

## Response `200`

Successful Response

- EvidencePacketDetailResponse — Detailed response model for evidence packet, used in the collection flow. This includes all the information needed to render the evidence collection UI. Document requests are sorted by index and each row encodes whether the document is required or suggested, and whether it has been declined (reason is non-null).
  - `request_id` string, uuid, required
  - `requesting_company_id` string, uuid, required
  - `requesting_company_name` string, nullable
  - `requestee_company_id` string, uuid, required
  - `requestee_vendor_name` string, nullable
  - `initiated_by_user_id` string, uuid, nullable
  - `initiated_by_user_name` string, nullable
  - `requestee_user_email` string, nullable
  - `requestee_user_name` string, nullable
  - `recipients` EvidencePacketRecipientResponse[]
    - `user_id` string, uuid, required
    - `email` string, required
    - `name` string, required
  - `document_requests` BackendModelsPydanticApiResponsesEvidencePacketsDocumentRequestResponse[]
    - `id` string, uuid, required
    - `slug` string, required
    - `label` string, required
    - `required` boolean, required
    - `decline_reason` string, nullable, required
    - `index` integer, required
  - `instructions` string, nullable
  - `upload_step_instructions` string, nullable
  - `questions_step_instructions` string, nullable
  - `submit_step_instructions` string, nullable
  - `require_decline_note` boolean
  - `due_date` string, date-time, nullable
  - `overdue_last_notified_at` string, date-time, nullable
  - `status` 'draft' | 'pending' | 'in_progress' | 'completed' | 'cancelled', required — Status of an evidence packet request.
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `uploaded_files` EvidencePacketFileResponse[]
    - `id` string, uuid, required
    - `upload_id` string, uuid, required
    - `file_id` string, uuid, required
    - `filename` string, nullable, required
    - `document_request_id` string, uuid, nullable, required
    - `requirement_id` string, uuid, nullable
    - `file_type_slug` string, nullable
    - `status` string, required
    - `created_at` string, date-time, nullable
  - `requirements` EvidenceRequirementResponse[]
    - `id` string, uuid, required
    - `evidence_packet_contents_id` string, uuid, nullable, required
    - `template_id` string, uuid, nullable, required
    - `template_name` string, nullable, required
    - `question_id` string, uuid, required
    - `question_index` integer, required
    - `question` union, required
      - FreeResponseQuestion
        - `question` string, required
        - `additional_context` string, nullable
        - `score_compliance` boolean
        - `question_id` string, required
        - `type` 'free'
      - MultipleChoiceQuestion
        - `question` string, required
        - `options` string[], required
        - `additional_context` string, nullable
        - `score_compliance` boolean
        - `question_id` string, required
        - `type` 'multiple'
      - ChooseOneQuestion
        - `question` string, required
        - `options` string[], required
        - `additional_context` string, nullable
        - `score_compliance` boolean
        - `question_id` string, required
        - `type` 'one'
    - `answer` union, required
      - QuestionnaireAnswerChoiceAnswer
        - `question` string, required
        - `options` string[], nullable
        - `type` 'free' | 'one' | 'multiple', required
        - `answer` ChoiceAnswerOutput[], required
          - `choice` string, required
          - `explanation` string
          - `citations` BackendModelsPydanticDraftingCitation[], required
            - `type` string, required
            - `cited_text` string, required
            - `document_index` integer, required
            - `document_title` string, required
            - `end_page_number` integer, required
            - `start_page_number` integer, required
          - `conflicting` boolean
        - `compliant` 'compliant' | 'non_compliant' | 'partially_compliant' | 'not_applicable'
        - `vendor_answer` QuestionnaireVendorAnswer
          - `answer` string
          - `choices` string[], nullable
          - `notes` string, nullable
        - `label` string, nullable
      - QuestionnaireAnswerFreeAnswer
        - `question` string, required
        - `options` string[], nullable
        - `type` 'free' | 'one' | 'multiple', required
        - `answer` FreeAnswerOutput[], required
          - `answer` string, required
          - `citations` BackendModelsPydanticDraftingCitation[], required
            - `type` string, required
            - `cited_text` string, required
            - `document_index` integer, required
            - `document_title` string, required
            - `end_page_number` integer, required
            - `start_page_number` integer, required
        - `compliant` 'compliant' | 'non_compliant' | 'partially_compliant' | 'not_applicable'
        - `vendor_answer` QuestionnaireVendorAnswer
          - `answer` string
          - `choices` string[], nullable
          - `notes` string, nullable
        - `label` string, nullable
    - `compliance` 'compliant' | 'non_compliant' | 'partially_compliant' | 'no_evidence' | 'not_applicable', required — Compliance status for an evidence requirement.
    - `check_label` string, nullable
    - `ai_check_label` string, nullable
    - `classified_at` string, date-time, nullable
    - `note` QuestionnaireVendorAnswer, required
      - `answer` string
      - `choices` string[], nullable
      - `notes` string, nullable
    - `reviewer_note` string, nullable
    - `approval_status` 'pending' | 'approved' | 'issue_created' — Approval status for an evidence requirement check.
    - `issue_id` string, uuid, nullable
    - `collaborative_task_id` string, uuid, nullable
    - `vendor_response_required` boolean
    - `closed_at` string, date-time, nullable
    - `closed_by` RequirementCloser — The user who closed out a requirement (approved it or created an issue).
      - `user_id` string, uuid, required
      - `name` string, required
      - `email` string, required
  - `sections` EvidencePacketSectionResponse[]
    - `id` string, uuid, required
    - `risk_area_name` string, required
    - `documents_requested` string[]
    - `rubric_file_id` string, uuid, nullable
    - `source_block_id` string, uuid, nullable
    - `vendor_response_required` boolean
    - `template_requirements` TemplateRequirementGroup[]
      - `template_id` string, uuid, required
      - `template_name` string, required
      - `questions` TemplateSectionQuestion[]
        - `question_id` string, required
        - `question` union, required
          - FreeResponseQuestion
            - `question` string, required
            - `additional_context` string, nullable
            - `score_compliance` boolean
            - `question_id` string, required
            - `type` 'free'
          - MultipleChoiceQuestion
            - `question` string, required
            - `options` string[], required
            - `additional_context` string, nullable
            - `score_compliance` boolean
            - `question_id` string, required
            - `type` 'multiple'
          - ChooseOneQuestion
            - `question` string, required
            - `options` string[], required
            - `additional_context` string, nullable
            - `score_compliance` boolean
            - `question_id` string, required
            - `type` 'one'
  - `control_strength_labels` ControlStrengthLabel[]
    - `label` string, required
    - `description` string, required
    - `hex_color` string

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/kobaltlabs/apis/fastapi.md) · [All operations](https://skmtc.dev/kobaltlabs/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kobaltlabs/fastapi/revisions/425d5b8a3c17/schema)
