Skip to content

Commit d15d364

Browse files
committed
fix(examples): include media-buy response revisions
1 parent fd5ccc5 commit d15d364

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

examples/sales_proposal_mode_seller/src/platform.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ class _MediaBuy:
4444
total_budget: float
4545
start_time: datetime
4646
end_time: datetime
47+
confirmed_at: str
48+
revision: int = 1
4749
status: str = "active"
4850
recipes_seen: dict[str, str] | None = None # product_id -> line_item_template_id
4951

@@ -139,6 +141,7 @@ def create_media_buy(
139141
total_budget = float(_dotted(req, "total_budget.amount", 0.0) or 0.0)
140142
start_time = _read_datetime(getattr(req, "start_time", None))
141143
end_time = _read_datetime(getattr(req, "end_time", None))
144+
confirmed_at = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
142145

143146
with self._lock:
144147
self._buys[media_buy_id] = _MediaBuy(
@@ -147,6 +150,7 @@ def create_media_buy(
147150
total_budget=total_budget,
148151
start_time=start_time,
149152
end_time=end_time,
153+
confirmed_at=confirmed_at,
150154
recipes_seen=recipes_seen,
151155
)
152156

@@ -156,7 +160,8 @@ def create_media_buy(
156160
"media_buy_id": media_buy_id,
157161
"buyer_ref": getattr(req, "buyer_ref", None),
158162
"status": "active",
159-
"confirmed_at": datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"),
163+
"confirmed_at": confirmed_at,
164+
"revision": 1,
160165
"proposal_id": str(proposal_id) if proposal_id else None,
161166
"packages": [
162167
{
@@ -203,10 +208,12 @@ def update_media_buy(
203208
),
204209
recovery="terminal",
205210
)
211+
buy.revision += 1
206212
return {
207213
"media_buy_id": media_buy_id,
208214
"buyer_ref": buy.proposal_id,
209215
"status": buy.status,
216+
"revision": buy.revision,
210217
"packages": [],
211218
}
212219

@@ -269,6 +276,8 @@ def get_media_buys(self, req: Any, ctx: RequestContext[Any]) -> dict[str, Any]:
269276
"media_buy_id": b.media_buy_id,
270277
"status": b.status,
271278
"buyer_ref": b.proposal_id,
279+
"confirmed_at": b.confirmed_at,
280+
"revision": b.revision,
272281
"packages": [],
273282
}
274283
for b in buys

examples/v3_reference_seller/src/platform.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,14 @@
135135
logger = logging.getLogger(__name__)
136136

137137

138+
def _order_confirmed_at(order: dict[str, Any]) -> str:
139+
"""Return a wire timestamp for the buy confirmation moment."""
140+
value = order.get("confirmed_at") or order.get("updated_at") or order.get("created_at")
141+
if value is not None:
142+
return str(value)
143+
return datetime.now(timezone.utc).isoformat()
144+
145+
138146
# ---------------------------------------------------------------------------
139147
# AccountStore — explicit (wire ref drives lookup)
140148
# ---------------------------------------------------------------------------
@@ -1193,6 +1201,7 @@ async def _project_create_success(
11931201
wire_status = "pending_creatives"
11941202
order_id = order["order_id"]
11951203
buy_state = self._buy_state.setdefault(order_id, {"packages": {}, "canceled": False})
1204+
revision = self._buy_revisions.setdefault(order_id, 1)
11961205
response_packages: list[dict[str, Any]] = []
11971206
for idx, pkg in enumerate(req_packages):
11981207
line_item = await upstream_helpers.add_line_item(
@@ -1217,6 +1226,8 @@ async def _project_create_success(
12171226
{
12181227
"media_buy_id": order_id,
12191228
"status": wire_status,
1229+
"confirmed_at": _order_confirmed_at(order),
1230+
"revision": revision,
12201231
"packages": response_packages,
12211232
"invoice_recipient": (
12221233
invoice_recipient.model_dump(mode="json", exclude_none=True)
@@ -1676,6 +1687,8 @@ async def get_media_buys(
16761687
{
16771688
"media_buy_id": order_id,
16781689
"status": wire_status,
1690+
"confirmed_at": _order_confirmed_at(order),
1691+
"revision": self._buy_revisions.setdefault(order_id, 1),
16791692
"currency": order.get("currency", "USD"),
16801693
"total_budget": float(order.get("budget", 0.0)),
16811694
"packages": packages,

0 commit comments

Comments
 (0)