marketplace

PATCH /v1/marketplace/listings/{listing_id}

Edit a Zinn®, or publish it.

All marketplace endpoints

Authentication

Send an API key as a bearer token. This endpoint does not state a specific permission in the specification, so give your key the least it needs and check the response rather than assuming.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X PATCH https://api.zinndigital.com/v1/marketplace/listings/{listing_id} \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{  }'

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

`publish: true` validates every value against the stamped schema version, requires at least one package, recomputes the price cache and takes the listing live — in one transaction, because a listing that went live with a stale price sorts wrongly on every storefront page and quotes a price nobody agreed to, and nothing raises. ⛔ A live Zinn®'s `slug` is permanent: it is the public URL, and changing it breaks every link to it and loses the ranking that link earned. ⛔ A `domain` value is stored in the reveal table, never in `field_values` — the storefront's read path cannot leak what it cannot see (docs/83 §3).

Parameters

NameTypeRequiredWhat it is
listing_id (path)stringYes

Request body

NameTypeRequiredWhat it is
inclusion_itemsobject[]NoThe handover checklist a buyer confirms receipt of, for an asset-transfer listing (a website, a domain, a Shopify store). The seller composes it; the listing type's `handover_te…
titlestringNo
summarystringNo
slugstringNo
field_valuesobjectNoPlain `{key: value}` — the envelope is added by the engine.
publishbooleanNoValidate against the stamped schema, require a package, recompute the price cache and go live — in one transaction.
statestring<live, paused, archived>NoTake a Zinn® off sale, put it back, or retire it. Applied AFTER any value edit in the same request, so the storefront projection is rebuilt once from the state the listing actua…

Response

NameTypeRequiredWhat it is
idstringYes
vendor_idstringYes
marketplace_idstringYes
marketplace_keystringYes
category_idstringNo
listing_type_idstringYes
listing_type_keystringYes
schema_versionintegerYesThe version this listing's values were authored against. Stamped once, never moved — a later schema must not reinterpret an older listing.
titlestringYes
slugstringYesPermanent once live. It is the public URL.
summarystringYes
field_valuesobjectYes"`{key: {v, ver}}`" — uniform two keys, `ver: null` for a seller-declared value, so no consumer branches on key presence. ⛔ A `domain` value is NOT here — it is in the reveal ta…
field_schemaMarketplaceFieldDefinition[]NoPresent on the detail read; the schema THIS listing is authored against.
stateMarketplaceListingStateYes⛔ `archived`, never deleted. A listing that sold has public URLs, backlinks and an order behind it, and a 404 costs rankings that do not come back.
price_minorintegerYes
price_max_minorintegerYes
currencystringYes
published_atstringNo
packagesMarketplacePackage[]Yes

Errors this endpoint can return

401 · 404 · 422