curl -X PATCH "$base_url/public/v1/sales-lease-exchange/$listing_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id" \
-H "Content-Type: application/json" \
-d '{"price_usd": 225000}'
curl -X PATCH "$base_url/public/v1/sales-lease-exchange/$listing_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id" \
-H "Content-Type: application/json" \
-d '{"status": "sold"}'
curl -X PATCH "$base_url/public/v1/sales-lease-exchange/$listing_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id" \
-H "Content-Type: application/json" \
-d '{"audience": ["Airline", "MRO"]}'
import requests
resp = requests.patch(
f"{base_url}/public/v1/sales-lease-exchange/{listing_id}",
headers={"Authorization": f"Bearer {api_key}", "X-Organization-Id": org_id},
json={"price_usd": 225000},
)
resp.raise_for_status()
{
"id": "df1e...",
"price_usd": 225000,
...
}
{ "detail": "Listing not found" }
Sales / Lease / Exchange
Update a sales / lease / exchange
Partial update on a sales / lease / exchange your org owns.
PATCH
/
public
/
v1
/
sales-lease-exchange
/
{listing_id}
curl -X PATCH "$base_url/public/v1/sales-lease-exchange/$listing_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id" \
-H "Content-Type: application/json" \
-d '{"price_usd": 225000}'
curl -X PATCH "$base_url/public/v1/sales-lease-exchange/$listing_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id" \
-H "Content-Type: application/json" \
-d '{"status": "sold"}'
curl -X PATCH "$base_url/public/v1/sales-lease-exchange/$listing_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id" \
-H "Content-Type: application/json" \
-d '{"audience": ["Airline", "MRO"]}'
import requests
resp = requests.patch(
f"{base_url}/public/v1/sales-lease-exchange/{listing_id}",
headers={"Authorization": f"Bearer {api_key}", "X-Organization-Id": org_id},
json={"price_usd": 225000},
)
resp.raise_for_status()
{
"id": "df1e...",
"price_usd": 225000,
...
}
{ "detail": "Listing not found" }
PATCH a listing your organization owns. Sparse only fields on the
request body are written. Omitted fields are untouched.
Headers
string
required
Bearer tdao_live_…string
required
Your organization’s UUID.
string
required
application/jsonPath parameters
string (UUID)
required
Body
Every field is optional. Common fields you’ll update:string
number
string
ISO country code.
string
number
string
One of
active, under_offer, sold, leased, exchanged,
suspended, archived, draft, pending_review. PATCH is the
only way to change a listing’s status today there’s no separate
transition endpoint for listings.string
Re-classify by name (e.g.
A320-200). Case-insensitive same
resolution as the create endpoint. APU and landing-gear vocab fields
aren’t supported via the public surface beyond the three listed
here landing-gear classification cannot be set via the API.array of URLs
Direct overwrite. Usually you want the upload / delete-by-url
endpoints instead.
Response
200 OK. The updated listing in the same shape every GET returns.
curl -X PATCH "$base_url/public/v1/sales-lease-exchange/$listing_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id" \
-H "Content-Type: application/json" \
-d '{"price_usd": 225000}'
curl -X PATCH "$base_url/public/v1/sales-lease-exchange/$listing_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id" \
-H "Content-Type: application/json" \
-d '{"status": "sold"}'
curl -X PATCH "$base_url/public/v1/sales-lease-exchange/$listing_id" \
-H "Authorization: Bearer $api_key" \
-H "X-Organization-Id: $org_id" \
-H "Content-Type: application/json" \
-d '{"audience": ["Airline", "MRO"]}'
import requests
resp = requests.patch(
f"{base_url}/public/v1/sales-lease-exchange/{listing_id}",
headers={"Authorization": f"Bearer {api_key}", "X-Organization-Id": org_id},
json={"price_usd": 225000},
)
resp.raise_for_status()
{
"id": "df1e...",
"price_usd": 225000,
...
}
{ "detail": "Listing not found" }
Audit trail
PATCH writes:listing.updatedgeneric withprevious_stateandnew_state.listing.audience.setorlisting.audience.changedwhen audience is touched. Two separate codes so support can filter first-time restriction vs subsequent change.

