validationRules constant

Map<String, Map<String, dynamic>> const validationRules

Implementation

static const Map<String, Map<String, dynamic>> validationRules = {
  'logEvent': {
    'required': ['name'],
  },
  'setUserId': {
    'required': ['userId'],
  },

  // Screen tracking
  'logScreenView': {
    'required': ['screenName'],
    'optional': ['screenClass', 'parameters'],
  },

  // User lifecycle
  'logLogin': {
    'optional': ['loginMethod', 'parameters'],
  },
  'logSignUp': {
    'required': ['signUpMethod'],
    'optional': ['parameters'],
  },
  'logAppOpen': {
    'optional': ['parameters'],
  },

  // Content and interaction
  'logSelectContent': {
    'required': ['contentType', 'itemId'],
    'optional': ['parameters'],
  },
  'logShare': {
    'required': ['contentType', 'itemId', 'method'],
    'optional': ['parameters'],
  },
  'logSearch': {
    'required': ['searchTerm'],
    'optional': ['numberOfNights', 'numberOfRooms', 'numberOfPassengers', 'origin', 'destination', 'startDate', 'endDate', 'travelClass', 'parameters'],
  },
  'logViewSearchResults': {
    'required': ['searchTerm'],
    'optional': ['parameters'],
  },

  // Gaming and achievements
  'logLevelUp': {
    'required': ['level'],
    'optional': ['character', 'parameters'],
  },
  'logLevelStart': {
    'required': ['levelName'],
    'optional': ['parameters'],
  },
  'logLevelEnd': {
    'required': ['levelName'],
    'optional': ['success', 'parameters'],
  },
  'logPostScore': {
    'required': ['score'],
    'optional': ['level', 'character', 'parameters'],
  },
  'logUnlockAchievement': {
    'required': ['achievementId'],
    'optional': ['parameters'],
  },
  'logEarnVirtualCurrency': {
    'required': ['virtualCurrencyName', 'value'],
    'optional': ['parameters'],
  },
  'logSpendVirtualCurrency': {
    'required': ['itemName', 'virtualCurrencyName', 'value'],
    'optional': ['parameters'],
  },

  // Tutorial and onboarding
  'logTutorialBegin': {
    'optional': ['parameters'],
  },
  'logTutorialComplete': {
    'optional': ['parameters'],
  },

  // Social features
  'logJoinGroup': {
    'required': ['groupId'],
    'optional': ['parameters'],
  },

  // Marketing and attribution
  'logGenerateLead': {
    'optional': ['currency', 'value', 'parameters'],
  },
  'logCampaignDetails': {
    'required': ['source', 'medium', 'campaign'],
    'optional': ['term', 'content', 'aclid', 'cp1', 'parameters'],
  },
  'logAdImpression': {
    'optional': ['adPlatform', 'adSource', 'adFormat', 'adUnitName', 'value', 'currency', 'parameters'],
  },

  // E-COMMERCE OPERATIONS
  'logAddPaymentInfo': {
    'optional': ['coupon', 'currency', 'paymentType', 'value', 'items', 'parameters'],
  },
  'logAddShippingInfo': {
    'optional': ['coupon', 'currency', 'value', 'shippingTier', 'items', 'parameters'],
  },
  'logAddToCart': {
    'optional': ['items', 'value', 'currency', 'parameters'],
  },
  'logAddToWishlist': {
    'optional': ['items', 'value', 'currency', 'parameters'],
  },
  'logBeginCheckout': {
    'optional': ['value', 'currency', 'items', 'coupon', 'parameters'],
  },
  'logPurchase': {
    'optional': ['currency', 'coupon', 'value', 'items', 'tax', 'shipping', 'transactionId', 'affiliation', 'parameters'],
  },
  'logRemoveFromCart': {
    'optional': ['currency', 'value', 'items', 'parameters'],
  },
  'logViewCart': {
    'optional': ['currency', 'value', 'items', 'parameters'],
  },
  'logViewItem': {
    'optional': ['currency', 'value', 'items', 'parameters'],
  },
  'logViewItemList': {
    'optional': ['items', 'itemListId', 'itemListName', 'parameters'],
  },
  'logSelectItem': {
    'optional': ['itemListId', 'itemListName', 'items', 'parameters'],
  },
  'logSelectPromotion': {
    'optional': ['creativeName', 'creativeSlot', 'items', 'locationId', 'promotionId', 'promotionName', 'parameters'],
  },
  'logViewPromotion': {
    'optional': ['creativeName', 'creativeSlot', 'items', 'locationId', 'promotionId', 'promotionName', 'parameters'],
  },
  'logRefund': {
    'optional': ['currency', 'coupon', 'value', 'tax', 'shipping', 'transactionId', 'affiliation', 'items', 'parameters'],
  },

  // Configuration methods
  'setUserProperty': {
    'required': ['propertyName'],
    'optional': ['propertyValue'],
  },
  'setAnalyticsCollectionEnabled': {
    'required': ['enabled'],
  },
  'setConsent': {
    'anyOf': ['adStorageConsentGranted', 'analyticsStorageConsentGranted', 'adPersonalizationSignalsConsentGranted', 'adUserDataConsentGranted', 'functionalityStorageConsentGranted', 'personalizationStorageConsentGranted', 'securityStorageConsentGranted'],
    'message': 'At least one consent parameter required',
  },
  'setDefaultEventParameters': {
    'required': ['defaultParameters'],
  },
  'setSessionTimeoutDuration': {
    'anyOf': ['timeoutMilliseconds', 'timeout'],
    'message': 'Either timeoutMilliseconds or timeout parameter required',
  },
  'resetAnalyticsData': {},

  // iOS-specific conversion methods
  'initiateOnDeviceConversionMeasurementWithEmailAddress': {
    'required': ['emailAddress'],
  },
  'initiateOnDeviceConversionMeasurementWithPhoneNumber': {
    'required': ['phoneNumber'],
  },
  'initiateOnDeviceConversionMeasurementWithHashedEmailAddress': {
    'required': ['hashedEmailAddress'],
  },
  'initiateOnDeviceConversionMeasurementWithHashedPhoneNumber': {
    'required': ['hashedPhoneNumber'],
  },
};