@@ -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
0 commit comments