---
title: "Patch Intent"
method: PATCH
path: "/api/v1/design-intents/{intent_id}"
tags: ["design-intents"]
---

# Patch Intent

`PATCH /api/v1/design-intents/{intent_id}`

Apply a user PATCH (inline chip edit). Promotes edits to ``user_asserted``.

Ownership verification happens inside the service via the part->project->
user_id join. 403 if the user doesn't own the intent, 404 if the intent
doesn't exist.

## Path parameters

- `intent_id` string, uuid, required

## Request body

- DesignIntentPatch — Human-edit PATCH body (inline chip edits). The user may omit any field. Must NOT include ``interview_status``, ``confidence_score``, ``source_certainty`` directly, or any inferred_* field — those are agent-only. Edits to list entries promote their ``source_certainty`` to ``user_asserted`` automatically in the service layer.
  - `purpose` string, nullable
  - `primary_function` string, nullable
  - `environment` string, nullable
  - `critical_features` CriticalFeatureEntry[], nullable
    - `feature_id` string, required
    - `reason` string, required
    - `source_certainty` 'user_asserted' | 'user_hypothetical' | 'agent_inferred', required
  - `mating_surfaces` MatingSurfaceEntry[], nullable
    - `feature_id` string, required
    - `mate_type` string, required
    - `counterpart` string, nullable
    - `notes` string, nullable
    - `source_certainty` 'user_asserted' | 'user_hypothetical' | 'agent_inferred', required
  - `load_paths` LoadPathEntry[], nullable
    - `path` string, required
    - `magnitude` string, nullable
    - `direction` string, nullable
    - `source_certainty` 'user_asserted' | 'user_hypothetical' | 'agent_inferred', required
  - `tolerance_rationale` ToleranceRationaleEntry[], nullable
    - `feature_id` string, nullable
    - `spec` string, required
    - `why` string, required
    - `source_certainty` 'user_asserted' | 'user_hypothetical' | 'agent_inferred', required
  - `performance_requirements` PerformanceRequirementEntry[], nullable
    - `metric` string, required
    - `target` string, required
    - `source_certainty` 'user_asserted' | 'user_hypothetical' | 'agent_inferred', required
  - `free_text_notes` string, nullable

## Response `200`

Successful Response

- DesignIntentRead — Full DesignIntent state sent to the frontend.
  - `id` string, uuid, required
  - `part_id` string, uuid, required
  - `cad_file_version_id` string, uuid, required
  - `captured_via_conversation_id` string, uuid, nullable, required
  - `interview_status` 'not_started' | 'in_progress' | 'completed' | 'skipped' | 'superseded' | 'carry_forward_pending', required
  - `nudge_dismissed_at` string, date-time, nullable, required
  - `inferred_purpose` string, nullable, required
  - `inferred_primary_function` string, nullable, required
  - `purpose` string, nullable, required
  - `primary_function` string, nullable, required
  - `environment` string, nullable, required
  - `critical_features` CriticalFeatureEntry[], required
    - `feature_id` string, required
    - `reason` string, required
    - `source_certainty` 'user_asserted' | 'user_hypothetical' | 'agent_inferred', required
  - `mating_surfaces` MatingSurfaceEntry[], required
    - `feature_id` string, required
    - `mate_type` string, required
    - `counterpart` string, nullable
    - `notes` string, nullable
    - `source_certainty` 'user_asserted' | 'user_hypothetical' | 'agent_inferred', required
  - `load_paths` LoadPathEntry[], required
    - `path` string, required
    - `magnitude` string, nullable
    - `direction` string, nullable
    - `source_certainty` 'user_asserted' | 'user_hypothetical' | 'agent_inferred', required
  - `tolerance_rationale` ToleranceRationaleEntry[], required
    - `feature_id` string, nullable
    - `spec` string, required
    - `why` string, required
    - `source_certainty` 'user_asserted' | 'user_hypothetical' | 'agent_inferred', required
  - `performance_requirements` PerformanceRequirementEntry[], required
    - `metric` string, required
    - `target` string, required
    - `source_certainty` 'user_asserted' | 'user_hypothetical' | 'agent_inferred', required
  - `free_text_notes` string, nullable, required
  - `confidence_score` number, nullable, required
  - `fields_captured_count` integer, required
  - `questions_asked` integer, required
  - `passive_writes_count` integer, required
  - `interview_started_at` string, date-time, nullable, required
  - `interview_completed_at` string, date-time, nullable, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/prototyping/apis/prototyping-io-api.md) · [All operations](https://skmtc.dev/prototyping/apis/prototyping-io-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/prototyping/prototyping-io-api/revisions/f4a0079fbb57/schema)
