---
title: "Update Landscaping Proposal Photo"
method: PATCH
path: "/landscaping-proposals/photos/{photo_id}"
tags: ["landscaping-proposals"]
---

# Update Landscaping Proposal Photo

`PATCH /landscaping-proposals/photos/{photo_id}`

## Path parameters

- `photo_id` string, required

## Request body

- LandscapingProposalPhotoUpdate
  - `capture_source` 'app_camera' | 'photo_library' | 'manual_override', nullable
  - `original_photo_id` string, uuid, nullable
  - `captured_at` string, date-time, nullable
  - `s3_bucket` string, nullable
  - `s3_object_key` string, nullable
  - `content_type` string, nullable
  - `file_size` integer, nullable
  - `width` integer, nullable
  - `height` integer, nullable
  - `status` 'pending_upload' | 'uploaded' | 'captioning' | 'captioned' | 'failed', nullable
  - `caption` string, nullable
  - `vision_labels` unknown[], nullable
    - unknown
  - `annotation` LandscapingPhotoAnnotation
    - `v` 1, required
    - `ref` LandscapingPhotoAnnotationRef, required
      - `w` integer, required
      - `h` integer, required
    - `items` union[], required
      - union
        - LandscapingPhotoAnnotationPen
          - `id` string, required
          - `color` string, required
          - `kind` 'pen', required
          - `sw` number, required
          - `pts` number[], required
        - LandscapingPhotoAnnotationLine
          - `id` string, required
          - `color` string, required
          - `kind` 'line' | 'arrow', required
          - `sw` number, required
          - `x1` number, required
          - `y1` number, required
          - `x2` number, required
          - `y2` number, required
        - LandscapingPhotoAnnotationRect
          - `id` string, required
          - `color` string, required
          - `kind` 'rect', required
          - `sw` number, required
          - `x` number, required
          - `y` number, required
          - `w` number, required
          - `h` number, required
        - LandscapingPhotoAnnotationEllipse
          - `id` string, required
          - `color` string, required
          - `kind` 'ellipse', required
          - `sw` number, required
          - `cx` number, required
          - `cy` number, required
          - `rx` number, required
          - `ry` number, required
        - LandscapingPhotoAnnotationText
          - `id` string, required
          - `color` string, required
          - `kind` 'text', required
          - `fs` number, required
          - `x` number, required
          - `y` number, required
          - `text` string, required
  - `metadata` object, nullable
  - `excluded` boolean, nullable

## Response `200`

Successful Response

- LandscapingProposalPhoto
  - `id` string, uuid, required
  - `event_id` string, uuid, required
  - `organization_id` string, required
  - `capture_source` 'app_camera' | 'photo_library' | 'manual_override', required
  - `original_photo_id` string, uuid, nullable
  - `captured_at` string, date-time, required
  - `s3_bucket` string, nullable
  - `s3_object_key` string, nullable
  - `content_type` string, nullable
  - `file_size` integer, nullable
  - `width` integer, nullable
  - `height` integer, nullable
  - `status` 'pending_upload' | 'uploaded' | 'captioning' | 'captioned' | 'failed', required
  - `caption` string, nullable
  - `vision_labels` unknown[]
    - unknown
  - `annotation` object, nullable
  - `metadata` object
  - `excluded` boolean
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `404` — Not found
- `422` — Validation Error

---

[API](https://skmtc.dev/noso/apis/crucible-backend-api.md) · [All operations](https://skmtc.dev/noso/apis/crucible-backend-api/llms.txt) · [OpenAPI document](https://skmtc.dev/noso/apis/crucible-backend-api/revisions/46c87bbc4486?raw)
