@@ -619,10 +619,12 @@ async def create_media_buy(self, params: dict[str, Any], context: Any = None) ->
619619 status = "active" if has_creatives else "pending_creatives"
620620
621621 mb_id = f"mb-{ uuid .uuid4 ().hex [:8 ]} "
622+ confirmed_at = _now_z ()
622623 media_buys [mb_id ] = {
623624 "status" : status ,
624625 "currency" : "USD" ,
625626 "packages" : packages ,
627+ "confirmed_at" : confirmed_at ,
626628 "revision" : 1 ,
627629 }
628630 # Pull valid_actions from the SDK's authoritative state machine —
@@ -631,6 +633,8 @@ async def create_media_buy(self, params: dict[str, Any], context: Any = None) ->
631633 mb_id ,
632634 packages ,
633635 status = status ,
636+ revision = 1 ,
637+ confirmed_at = confirmed_at ,
634638 valid_actions = valid_actions_for_status (status ) or None ,
635639 )
636640
@@ -645,6 +649,8 @@ async def get_media_buys(self, params: dict[str, Any], context: Any = None) -> d
645649 {
646650 "media_buy_id" : mb_id ,
647651 "status" : mb ["status" ],
652+ "confirmed_at" : mb .get ("confirmed_at" ) or _now_z (),
653+ "revision" : mb .get ("revision" , 1 ),
648654 "currency" : mb .get ("currency" , "USD" ),
649655 "packages" : mb .get ("packages" , []),
650656 "total_budget" : total_budget ,
@@ -710,7 +716,8 @@ async def update_media_buy(self, params: dict[str, Any], context: Any = None) ->
710716 if status in ("completed" , "rejected" , "canceled" ):
711717 return adcp_error ("NOT_CANCELLABLE" , f"Cannot cancel a { status } media buy" )
712718 mb ["status" ] = "canceled"
713- return cancel_media_buy_response (mb_id , "buyer" )
719+ mb ["revision" ] = mb .get ("revision" , 1 ) + 1
720+ return cancel_media_buy_response (mb_id , "buyer" , revision = mb ["revision" ])
714721
715722 mb ["revision" ] = mb .get ("revision" , 1 ) + 1
716723 return update_media_buy_response (
@@ -797,6 +804,7 @@ async def sync_creatives(self, params: dict[str, Any], context: Any = None) -> d
797804 if mb .get ("status" ) == "pending_creatives" :
798805 mb ["status" ] = "pending_start"
799806 mb ["revision" ] = mb .get ("revision" , 1 ) + 1
807+ mb .setdefault ("confirmed_at" , _now_z ())
800808 return sync_creatives_response (results )
801809
802810 async def list_creatives (self , params : dict [str , Any ], context : Any = None ) -> dict [str , Any ]:
@@ -1138,6 +1146,8 @@ async def seed_media_buy(
11381146 data .setdefault ("status" , "active" )
11391147 data .setdefault ("currency" , "USD" )
11401148 data .setdefault ("packages" , [])
1149+ data .setdefault ("confirmed_at" , _now_z ())
1150+ data .setdefault ("revision" , 1 )
11411151 media_buys [mb_id ] = data
11421152 return {"media_buy_id" : mb_id }
11431153
0 commit comments