---
title: "Override Lead"
method: PATCH
path: "/api/v1/seller/leads/{lead_id}"
---

# Override Lead

`PATCH /api/v1/seller/leads/{lead_id}`

## Request

- Base URL: `https://trovastorage.it` (the document declares no server; this is the origin it was published from)
- URL: `https://trovastorage.it/api/v1/seller/leads/{lead_id}`
- Auth: one of:
  - API key in header `X-Access-Token`
  - HTTP bearer

The override, and the moment the guardrail becomes visible.

A new class does not simply overwrite a label: the server re-resolves against
what is actually free, using the lead's own coordinates and radius — never
anything from this body, which must not be able to move the point on the map.
The original reading survives untouched.

Since M4B the correction, the note and the centre are this operator's row
of the request, not the request: another centre that received the same
request reads its own. The status is no longer set here: it follows from
what the centre does (respond, decline, won), and a body that asks for a
different one answers 409.

## Path parameters

- `lead_id` string, uuid, required

## Request body

- LeadPatchRequest: The store manager's override. A different class makes the server re-resolve against live inventory and write a fresh snapshot. The original reading — `original_text`, `interpretation`, `interpreted_size_class_m2` — is never touched.
  - `size_class_m2` integer, nullable
  - `status` string, nullable
  - `internal_note` string, nullable
  - `site_id` string, uuid, nullable

## Response `200`

Successful Response

- LeadDetail
  - `id` string, uuid, required
  - `created_at` string, date-time, required
  - `status` string, required
  - `site_id` string, uuid, nullable, required
  - `site_name` string, nullable, required
  - `size_class_m2` integer, required
  - `interpreted_size_class_m2` integer, required
  - `overridden` boolean, required
  - `free_count` integer, required
  - `zero_results` boolean, required
  - `contact_name` string, nullable, required
  - `appointment_starts_at` string, date-time, nullable, required
  - `appointment_meeting_type` string, nullable
  - `appointment_state` string, nullable
  - `intent` string, nullable
  - `contact_preference` string, nullable
  - `distribution_state` string
  - `entered_by_admin` boolean
  - `size_known` boolean
  - `recipient_id` string, uuid, nullable
  - `state` string
  - `unread` boolean
  - `unread_messages` integer
  - `others_count` integer
  - `direct` boolean
  - `area` string, nullable
  - `offered` boolean
  - `closed_reason` string, nullable
  - `own_centres` OwnCentreRow[]
    - `recipient_id` string, uuid, required
    - `site_name` string, required
    - `state` string, required
  - `origin` string
  - `origin_detail` string, nullable
  - `moved_in` boolean, nullable
  - `contact_released` boolean
  - `original_text` string, required
  - `interpretation` object, required
  - `resolution` SpecialistResolution, required
    - `size_class_m2` integer, required
    - `band_min_m2` number, required
    - `band_max_m2` number, nullable, required
    - `radius_km` number, required
    - `free_count` integer, required
    - `centres` ResolvedCentre[], required
      - `site_id` string, uuid, required
      - `name` string, required
      - `city` string, required
      - `lat` number, required
      - `lng` number, required
      - `distance_km` number, required
      - `free_count` integer, required
      - `operator` string
      - `listing_url` string, nullable
      - `declared` string, nullable
    - `alternatives` ResolvedAlternative[], required
      - `kind` string, required
      - `size_class_m2` integer, required
      - `radius_km` number, required
      - `free_count` integer, required
      - `centres` ResolvedCentre[], required
        - `site_id` string, uuid, required
        - `name` string, required
        - `city` string, required
        - `lat` number, required
        - `lng` number, required
        - `distance_km` number, required
        - `free_count` integer, required
        - `operator` string
        - `listing_url` string, nullable
        - `declared` string, nullable
      - `dropped_features` string[]
    - `zero_results` boolean, required
    - `sites_in_range` integer
    - `coverage` string[]
    - `unavailable_features` string[]
    - `frees_up` ResolvedFreesUp[]
      - `site_id` string, uuid, required
      - `name` string, required
      - `distance_km` number, required
      - `free_from` string, date, required
    - `access_rules` string[]
  - `resolved_at` string, date-time, required
  - `radius_km` number, required
  - `features` string[], required
  - `contact_email` string, nullable, required
  - `contact_phone` string, nullable, required
  - `internal_note` string, nullable, required
  - `consultation` ConsultationResponse, required
    - `id` string, uuid, required
    - `lead_id` string, uuid, required
    - `state` string, required
    - `slot_id` string, uuid, nullable, required
    - `starts_at` string, date-time, nullable, required
    - `duration_min` integer, nullable, required
    - `site_id` string, uuid, nullable, required
    - `site_name` string, nullable, required
    - `preferred_window` string, nullable, required
    - `note` string, nullable, required
    - `contact_name` string, nullable
    - `meeting_type` string, nullable
    - `confirmation_email_status` string, nullable
  - `transcript` object[], required
  - `size_class_options` integer[], required
  - `client_notice` ClientNotice: What the client was told about the action the operator just took. Only on the response to that action: it is a receipt, not a property of the lead.
    - `action` 'confirmed' | 'cancelled', required
    - `email` string, required
    - `notified` boolean, required
  - `other_operators_centres` integer
  - `request_answers` LabelledAnswer[]
    - `question` string, required
    - `answers` string[], required
    - `other` string, nullable
  - `cancel_reason` string, nullable
  - `offer` OfferOut
    - `price_min_cents` integer, required
    - `price_max_cents` integer, nullable, required
    - `price_unit` 'month' | 'week' | 'total', required
    - `message` string, required
    - `created_at` string, date-time, required
  - `messages` ThreadMessageOut[]
    - `id` string, uuid, required
    - `sender` string, required
    - `body` string, required
    - `created_at` string, date-time, required
    - `read` boolean, required
  - `can_respond` boolean
  - `can_decline` boolean
  - `can_message` boolean
  - `can_mark_won` boolean
  - `can_confirm_move_in` boolean
  - `thread_closed` boolean
  - `decline_reason` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/trovastorage/apis/stock-your-inventory.md) · [All operations](https://skmtc.dev/trovastorage/apis/stock-your-inventory/llms.txt) · [OpenAPI document](https://skmtc.dev/trovastorage/apis/stock-your-inventory/revisions/c75f591a585c?raw)
