marketplace
POST /v1/marketplace/purchases/{sale_id}/revision
Send the delivery back, and say what is wrong.
אימות
שלח מפתח API כטוקן Bearer. נקודת קצה זו אינה מציינת הרשאת ספציפית במפרט, לכן הקצה למפתח שלך את המינימום הנדרש ובדוק את התגובה במקום להניח הנחות.
נקודת קצה זו אינה דורשת מזהה ארגון. המפתח שלך כבר מזהה את הארגון שאליו הוא שייך, והתגובה מוגבלת אליו בלבד.
נסה זאת
החלף כל דבר בסוגריים זוויתיים בערכים משלך, ואת מציין מיקום המפתח במפתח מלוח הבקרה שלך.
curl -X POST https://api.zinndigital.com/v1/marketplace/purchases/{sale_id}/revision \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "reason": <string> }'מחובר? קונסולת ה-API בלוח הבקרה שלך מזינה את מזהה הארגון האמיתי שלך ואת המפתח שלך, ומריצה את הבקשה מול ה-API הפיזי כך שתוכל לראות את התגובה בפועל. פתח נקודת קצה זו במסוף ה-API
פרטים
docs/82 §3. Not accepting is a **first-class path**, not an error state, and it **pauses the acceptance clock** — so a seller cannot run the timer out by stalling, and a buyer who did engage is never auto-accepted for a delivery they rejected. The reason is required and becomes part of the order record, visible to the seller: a rejection they cannot read is an instruction to change something unnamed, which produces a second rejection. Bounded by the package's `revisions_included`, which is a term the buyer paid for rather than an unlimited entitlement — exceeding it points at a dispute, which has staff in it. A package promising **zero** revisions still allows the first request, because the alternative to it is a chargeback.
פרמטרים
| שם | סוג | נדרש | מה זה |
|---|---|---|---|
sale_id (path) | string | כן | — |
גוף הבקשה
| שם | סוג | נדרש | מה זה |
|---|---|---|---|
reason | string | כן | What needs changing. Required, and shown to the seller — a rejection they cannot read names nothing, so it produces a second rejection. |
תשובה
| שם | סוג | נדרש | מה זה |
|---|---|---|---|
id | Uuid | כן | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
state | MarketplaceSaleState | כן | Where one purchased package is in its life (docs/82 §3). The terminal state is `accepted`, not `delivered`: delivery is the vendor's claim, acceptance is the buyer's act, and it… |
listing_id | Uuid | כן | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
listing_title | string | כן | — |
package_name | string | כן | — |
package_description | string | לא | — |
vendor_display_name | string | לא | The seller's public name, never the legal name held for identity checks. |
delivery_days | integer | לא | — |
revisions_included | integer | לא | — |
revision_count | integer | לא | — |
billing_mode | MarketplaceBillingMode | לא | How an offer is charged (docs/82 §2a). A property of the OFFER, chosen by the seller from what the listing type permits — a $200 one-off audit and $150/month of link building si… |
billing_interval | object | לא | — |
period_index | integer | לא | 0 for a one-time sale and a subscription's first period; one per renewal. |
amount_minor | integer | כן | — |
currency | CurrencyCode | כן | ISO 4217 currency code (money is minor units + this code — CLAUDE.md §2.8). |
auto_accepts | boolean | לא | Read this BEFORE `accept_by`. A null `accept_by` means two completely different things — not delivered yet, or this type never auto-accepts at all (an asset sale releasing on a… |
auto_accept_days | object | לא | — |
accept_by | object | לא | When this purchase auto-accepts if the buyer does nothing. |
delivered_at | object | לא | — |
accepted_at | object | לא | — |
accepted_automatically | boolean | לא | Whether the timer accepted this rather than the buyer. It does NOT change the outcome — auto-accept has the same finality as the button, which is why the buyer must be warned be… |
last_revision_reason | string | לא | — |
last_revision_at | object | לא | — |
order_id | Uuid | לא | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
created_at | string | לא | — |
שגיאות שנקודה קצה זו עשויה להחזיר
401 · 404 · 422