Edit the listing by publishing the next offer version (host owner)
The host console's listing editor. Despite the verb this is APPEND-ONLY: the next version is inserted and no existing row is ever rewritten, so a live job keeps the rate its quote snapshotted — the quote remains the only price authority. expected_version is compare-and-swapped against the CURRENT offer version (not the machine version the POST form uses); a race answers 409 with error.code = VERSION_CONFLICT and a sibling current block so the editor can show what changed instead of overwriting it. listing_expires_at has no column of its own and is FOLDED onto available_until (the earlier of the two wins — available_until already means "bookable until", which is what the catalog filters on); the response echoes the stored value. min_duration_s and max_duration_s are accepted but NOT stored, because no per-offer duration bound exists in the schema and nothing at quote time would enforce one; they are named back to the caller in ignored_fields rather than silently dropped. A publish that would retract availability a live job is already holding is refused 409 CONFLICT.
Request
- Base URL: https://amplerun-api.spiry.org
- URL: https://amplerun-api.spiry.org/api/v1/hosts/machines/{id}/offer
- Auth: HTTP bearer
Path parameters
Headers
UUID scoped to authenticated principal, route and canonical request hash.
Request body
Example request
{
"expected_version": "1",
"rate_micro_per_hour": "1",
"available_from": "2026-09-25T12:00:00Z",
"available_until": "2026-09-25T12:00:00Z",
"listing_expires_at": "2026-09-25T12:00:00Z"
}Response
Next offer version published.
Example response
{
"offer_id": "3f0e2a55-8c1b-4d2e-9a6f-0b7c1d2e3f40",
"offer_version": "1",
"rate_micro_per_hour": "1",
"available_from": "2026-09-25T12:00:00Z",
"available_until": "2026-09-25T12:00:00Z"
}Changes
No recorded changes to this operation across all 1 revision of this API.