import os from .vendor_sync import VendorSync, RequestParams from .constants import Vendor class BrazeBotSync(VendorSync): def __init__(self): super().__init__( name="braze_bot_sync", dry_run=False, vendor=Vendor.BRAZE, description="Applies bot metadata to Braze users so we can stop sending emails to bots", schedule="0 * * * *", group_name="email_ops", batch_size=100_000, rate_limit_delay=3, owners=["team:community-pod"], metadata={"slack": "#tech-anti-bots"}, tags={"team": "community-pod", "category": "email-ops", "tech-alerts": "true"}, ) self.api_key = os.getenv("BRAZE_API_KEY") if not self.api_key: raise ValueError("BRAZE_API_KEY environment variable not set") def get_vendor_user_id(self, record) -> str: return record["USER_UID"] def get_request_details(self, record) -> RequestParams: return { "method": "POST", "url": "https://rest.iad-07.braze.com/users/track", "headers": { "Authorization": f"Bearer {self.api_key}", "Content-type": "application/json", }, "json": { "attributes": [ { "external_id": str(record["USER_UID"]), "_update_existing_only": True, "is_bot": record["IS_BOT"], } ] }, "entity_id": str(record["USER_UID"]), } # Create instance braze_bot_sync = BrazeBotSync()