# Ferrero Content Scaling - Main Configuration # All settings can be overridden by environment-specific configs # Environment selector (set via ENV environment variable) environment: ${ENV:-staging} # DAM Configuration dam: base_url: ${DAM_BASE_URL} # OAuth2 Authentication (default - current working method) auth_url: ${DAM_AUTH_URL} client_id: ${DAM_CLIENT_ID} client_secret: ${DAM_CLIENT_SECRET} # mTLS Certificate Authentication (optional - use with --auth-pfx flag) mtls_base_url: ${DAM_MTLS_BASE_URL:-} mtls_cert_path: ${DAM_MTLS_CERT_PATH:-} mtls_cert_password: ${DAM_MTLS_CERT_PASSWORD:-} # mTLS V2 (Hybrid) - Use cert to get OAuth token mtls_oauth_url: ${DAM_MTLS_OAUTH_URL:-} timeout_seconds: 120 # Box Configuration box: enterprise_id: ${BOX_ENTERPRISE_ID} client_id: ${BOX_CLIENT_ID} client_secret: ${BOX_CLIENT_SECRET} jwt_key_id: ${BOX_JWT_KEY_ID} rsa_private_key_path: ../Box-config.json passphrase: ${BOX_PASSPHRASE} # Separate folders for different workflows root_folder_a1_a2: ${BOX_ROOT_FOLDER_A1_A2} # For downloaded Local master assets (348304357505) root_folder_a2_a3: ${BOX_ROOT_FOLDER_A2_A3} # For agency uploads to process (348526703108) root_folder_b1_b2: ${BOX_ROOT_FOLDER_B1_B2} # For downloaded Global master assets (349261192115) live_campaigns_folder_id: ${BOX_LIVE_CAMPAIGNS_FOLDER_ID} # For live campaigns CSV upload webhook_signature_keys: - ${BOX_WEBHOOK_PRIMARY_KEY:-} - ${BOX_WEBHOOK_SECONDARY_KEY:-} # Database Configuration database: host: ${DB_HOST:-localhost} port: ${DB_PORT:-5437} database: ferrero_tracking user: ${DB_USER} password: ${DB_PASSWORD} # Polling Configuration (A1→A2) polling: enabled: true interval_seconds: 300 # 5 minutes max_campaigns_per_run: 10 # Webhook Configuration (A2→A3 receiver) webhook_receiver: enabled: true host: 0.0.0.0 port: ${WEBHOOK_RECEIVER_PORT:-5555} validate_signatures: true # Outgoing Webhooks (we call these) webhooks: campaign_status_update: enabled: true url: ${CAMPAIGN_STATUS_WEBHOOK_URL} timeout_seconds: 10 retry_on_failure: true max_retries: 3 auth: type: none # bearer, basic, or none token: ${WEBHOOK_AUTH_TOKEN:-} # Retry Configuration retry: max_attempts: 3 backoff: exponential # exponential, linear, fixed initial_delay_seconds: 5 max_delay_seconds: 60 # Notification Configuration notifications: enabled: true smtp: server: ${SMTP_SERVER:-} port: ${SMTP_PORT:-587} user: ${SMTP_USER:-} password: ${SMTP_PASSWORD:-} sender_email: ${SENDER_EMAIL:-} mailgun: api_key: ${MAILGUN_API_KEY:-} domain: ${MAILGUN_DOMAIN:-} sender_email: ${MAILGUN_SENDER_EMAIL:-} recipients: success: - ${REPORT_EMAILS} errors: - ${ERROR_EMAIL} critical: - ${ERROR_EMAIL} templates_path: config/email_templates.yaml # Field Configuration fields: mappings_file: config/field_mappings.yaml # CreativeX Configuration creativex: llama_api_key: ${LLAMA_CLOUD_API_KEY} agent_name: ${CREATIVEX_AGENT_NAME} box_folder_id: ${BOX_ROOT_FOLDER_CREATIVEX} # Logging Configuration logging: level: INFO format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s" file: directory: logs max_bytes: 10485760 # 10MB backup_count: 5 console: true # Temp File Configuration temp: directory: temp/downloads cleanup_after_hours: 24 max_size_mb: 1000