v2

OpenAPI 3.1.02026-08-05123191254.3 KB
external-v2-deals

Update Deal

Partially update an existing deal (JSON Merge Patch semantics).

Only the fields present in the request body are updated. An empty body (all fields absent) returns 400 because no meaningful update was requested.

Property edits are explicit sub-operations on add_properties / update_properties / remove_property_ids — no implicit replace-all. All boundary checks (cross-list overlap, access scoping, target-exists, min-property post-op count) happen here before any controller call so a single rejected request leaves the deal untouched.

patch/api/external/v2/deals/{deal_id}

Path parameters

deal_idinteger required

Request body

titlestring nullable

Deal title

loan_amountnumber nullable

Requested loan amount

priority'No priority' | 'Urgent' | 'High' | 'Medium' | 'Low'
loan_type'Construction' | 'Heavy Bridge' | 'Light Bridge' | 'Permanent' | 'Land' | 'Predevelopment' | 'TBD'
transaction_type'TBD' | 'Acquisition' | 'Refinance' | 'New Construction'
business_plan'stabilized' | 'value_add' | 'construction' | 'land'
descriptionstring nullable

Free-text deal description

estimated_close_datestring date nullable

Estimated close date (ISO 8601 date string, e.g. 2025-12-31)

sponsor_private_company_idinteger nullable

ID of the sponsor company (a PrivateCompany) to link to this deal. Must belong to the caller's account.

remove_property_idsinteger[] nullable

Property IDs to detach from this deal. Each must currently be on the deal (else 404). Removal is a hard delete of the DealProperty join row; the underlying Property record is preserved. The deal must keep at least one property after the operation (else 400).

Response

Successful Response

request_idstring required
timestampstring required