{
   "$id": "https://docs.mparticle.com/schema/mparticle.inbound.eventsapi.schema.json",
   "$schema": "http://json-schema.org/draft-07/schema#",
   "description": "mParticle Event Batch Schema",
   "properties": {
      "source_request_id": {
         "$ref": "#/definitions/String"
      },
      "events": {
         "type": [
            "array",
            "null"
         ],
         "items": {
            "oneOf": [
               {
                  "$ref": "#/definitions/SessionStartEvent"
               },
               {
                  "$ref": "#/definitions/SessionEndEvent"
               },
               {
                  "$ref": "#/definitions/ScreenViewEvent"
               },
               {
                  "$ref": "#/definitions/CustomEvent"
               },
               {
                  "$ref": "#/definitions/CrashReportEvent"
               },
               {
                  "$ref": "#/definitions/OptOutEvent"
               },
               {
                  "$ref": "#/definitions/FirstRunEvent"
               },
               {
                  "$ref": "#/definitions/PushRegistrationEvent"
               },
               {
                  "$ref": "#/definitions/ApplicationStateTransitionEvent"
               },
               {
                  "$ref": "#/definitions/PushMessageEvent"
               },
               {
                  "$ref": "#/definitions/NetworkPerformanceEvent"
               },
               {
                  "$ref": "#/definitions/BreadcrumbEvent"
               },
               {
                  "$ref": "#/definitions/ProfileEvent"
               },
               {
                  "$ref": "#/definitions/CommerceEvent"
               },
               {
                  "$ref": "#/definitions/UserAttributeChangeEvent"
               },
               {
                  "$ref": "#/definitions/UserIdentityChangeEvent"
               },
               {
                  "$ref": "#/definitions/UninstallEvent"
               }
            ]
         }
      },
      "device_info": {
         "$ref": "#/definitions/DeviceInformation"
      },
      "application_info": {
         "$ref": "#/definitions/ApplicationInformation"
      },
      "user_attributes": {
         "type": [
            "object",
            "null"
         ],
         "additionalProperties": {
            "$ref": "#/definitions/StringOrArray"
         }
      },
      "deleted_user_attributes": {
         "type": [
            "array",
            "null"
         ],
         "items": {
            "type": "string"
         }
      },
      "user_identities": {
         "type": [
            "object",
            "null"
         ],
         "properties": {
            "other": {
               "$ref": "#/definitions/String"
            },
            "customer_id": {
               "$ref": "#/definitions/String"
            },
            "facebook": {
               "$ref": "#/definitions/String"
            },
            "twitter": {
               "$ref": "#/definitions/String"
            },
            "google": {
               "$ref": "#/definitions/String"
            },
            "microsoft": {
               "$ref": "#/definitions/String"
            },
            "yahoo": {
               "$ref": "#/definitions/String"
            },
            "email": {
               "$ref": "#/definitions/String"
            },
            "alias": {
               "$ref": "#/definitions/String"
            },
            "facebook_custom_audience_id": {
               "$ref": "#/definitions/String"
            },
            "other_id_2": {
               "$ref": "#/definitions/String"
            },
            "other_id_3": {
               "$ref": "#/definitions/String"
            },
            "other_id_4": {
               "$ref": "#/definitions/String"
            },
            "other_id_5": {
               "$ref": "#/definitions/String"
            },
            "other_id_6": {
               "$ref": "#/definitions/String"
            },
            "other_id_7": {
               "$ref": "#/definitions/String"
            },
            "other_id_8": {
               "$ref": "#/definitions/String"
            },
            "other_id_9": {
               "$ref": "#/definitions/String"
            },
            "other_id_10": {
               "$ref": "#/definitions/String"
            },
            "mobile_number": {
               "$ref": "#/definitions/String"
            },
            "phone_number_2": {
               "$ref": "#/definitions/String"
            },
            "phone_number_3": {
               "$ref": "#/definitions/String"
            }
         },
         "additionalProperties": false
      },
      "environment": {
         "type": "string",
         "default": "production",
         "enum": [
            "development",
            "production"
         ]
      },
      "api_key": {
         "$ref": "#/definitions/String"
      },
      "api_keys": {
         "type": [
            "array",
            "null"
         ],
         "items": {
            "type": "string"
         }
      },
      "ip": {
         "oneOf": [
            {
               "$ref": "#/definitions/IpV4Address"
            },
            {
               "$ref": "#/definitions/IpV6Address"
            }
         ]
      },
      "integration_attributes": {
         "type": [
            "object",
            "null"
         ],
         "additionalProperties": {
            "type": "object",
            "additionalProperties": {
               "$ref": "#/definitions/String"
            }
         }
      },
      "context": {
         "$ref": "#/definitions/BatchContext"
      },
      "partner_identity": {
         "$ref": "#/definitions/String"
      },
      "partner_identities": {
         "type": [
            "object",
            "null"
         ],
         "additionalProperties": {
            "$ref": "#/definitions/String"
         }
      },
      "source_info": {
         "$ref": "#/definitions/SourceInformation"
      },
      "mp_deviceid": {
         "$ref": "#/definitions/Uuid"
      },
      "attribution_info": {
         "$ref": "#/definitions/AttributionInfo"
      },
      "timestamp_unixtime_ms": {
         "$ref": "#/definitions/Integer"
      },
      "batch_id": {
         "$ref": "#/definitions/Integer"
      },
      "mpid": {
         "$ref": "#/definitions/Integer"
      },
      "origin_mpid": {
         "$ref": "#/definitions/Integer"
      },
      "sdk_version": {
         "$ref": "#/definitions/String"
      },
      "consent_state": {
         "$ref": "#/definitions/ConsentState"
      },
      "job_id": {
         "$ref": "#/definitions/String"
      }
   },
   "additionalProperties": false,
   "definitions": {
      "BatchContext": {
         "properties": {
            "data_plan": {
               "$ref": "#/definitions/DataPlanContext"
            },
            "location": {
               "$ref": "#/definitions/GeoLocation"
            }
         }
      },
      "DataPlanContext": {
         "properties": {
            "plan_id": {
               "type": "string"
            },
            "plan_version": {
               "$ref": "#/definitions/Integer"
            }
         },
         "additionalProperties": false,
         "required": [
            "plan_id"
         ]
      },
      "StringOrArray": {
         "anyOf": [
            {
               "$ref": "#/definitions/String"
            },
            {
               "$ref": "#/definitions/Array"
            }
         ]
      },
      "Array": {
         "type": [
            "array",
            "null"
         ],
         "items": {
            "$ref": "#/definitions/String"
         }
      },
      "IpV4Address": {
         "type": [
            "string",
            "null"
         ],
         "format": "ipv4"
      },
      "IpV6Address": {
         "type": [
            "string",
            "null"
         ],
         "format": "ipv6"
      },
      "Uuid": {
         "type": [
            "string",
            "null"
         ],
         "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
      },
      "Integer": {
         "type": [
            "integer",
            "null"
         ]
      },
      "Number": {
         "type": [
            "number",
            "null"
         ]
      },
      "String": {
         "type": [
            "string",
            "null",
            "boolean",
            "integer",
            "number"
         ]
      },
      "Boolean": {
         "type": [
            "boolean",
            "null"
         ]
      },
      "ApiResponse": {
         "type": "object",
         "properties": {
            "errors": {
               "type": "array",
               "items": {
                  "type": "object",
                  "properties": {
                     "code": {
                        "type": "string"
                     },
                     "message": {
                        "type": "string"
                     }
                  }
               }
            }
         }
      },
      "CustomEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "custom_event_type": {
                           "type": "string",
                           "enum": [
                              "navigation",
                              "location",
                              "search",
                              "transaction",
                              "user_content",
                              "user_preference",
                              "social",
                              "other",
                              "media"
                           ]
                        },
                        "event_name": {
                           "type": "string"
                        },
                        "custom_flags": {
                           "type": [
                              "object",
                              "null"
                           ],
                           "additionalProperties": {
                              "$ref": "#/definitions/String"
                           }
                        }
                     },
                     "required": [
                        "custom_event_type",
                        "event_name"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "custom_event"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ],
         "additionalProperties": false
      },
      "ApplicationInformation": {
         "properties": {
            "application_name": {
               "$ref": "#/definitions/String"
            },
            "application_version": {
               "$ref": "#/definitions/String"
            },
            "application_build_number": {
               "$ref": "#/definitions/String"
            },
            "install_referrer": {
               "$ref": "#/definitions/String"
            },
            "package": {
               "$ref": "#/definitions/String"
            },
            "os": {
               "$ref": "#/definitions/String",
               "default": "Unknown",
               "enum": [
                  "IOS",
                  "Android",
                  "WindowsPhone",
                  "MobileWeb",
                  "UnityIOS",
                  "UnityAndroid",
                  "Desktop",
                  "TVOS",
                  "Roku",
                  "OutOfBand",
                  "Alexa",
                  "SmartTV",
                  "FireTV",
                  "Xbox"
               ]
            },
            "apple_search_ads_attributes": {
               "type": [
                  "object",
                  "null"
               ],
               "additionalProperties": {
                  "type": "object",
                  "additionalProperties": {
                     "$ref": "#/definitions/String"
                  }
               }
            }
         },
         "additionalProperties": false
      },
      "ApplicationStateTransitionEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "successfully_closed": {
                           "$ref": "#/definitions/Boolean"
                        },
                        "is_first_run": {
                           "$ref": "#/definitions/Boolean"
                        },
                        "is_upgrade": {
                           "$ref": "#/definitions/Boolean"
                        },
                        "push_notification_payload": {
                           "$ref": "#/definitions/String"
                        },
                        "launch_referral": {
                           "$ref": "#/definitions/String"
                        },
                        "application_transition_type": {
                           "type": "string",
                           "enum": [
                              "application_initialized",
                              "application_exit",
                              "application_background",
                              "application_foreground"
                           ]
                        }
                     },
                     "required": [
                        "application_transition_type"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "application_state_transition"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ],
         "additionalProperties": false
      },
      "AttributionInfo": {
         "properties": {
            "service_provider": {
               "$ref": "#/definitions/String"
            },
            "publisher": {
               "$ref": "#/definitions/String"
            },
            "campaign": {
               "$ref": "#/definitions/String"
            }
         },
         "required": [
            "service_provider",
            "publisher",
            "campaign"
         ],
         "additionalProperties": false
      },
      "BreadcrumbEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "session_number": {
                           "$ref": "#/definitions/Integer"
                        },
                        "label": {
                           "type": "string"
                        }
                     },
                     "required": [
                        "label"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "breadcrumb"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ],
         "additionalProperties": false
      },
      "CommerceEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "product_action": {
                           "$ref": "#/definitions/ProductAction"
                        },
                        "promotion_action": {
                           "$ref": "#/definitions/PromotionAction"
                        },
                        "product_impressions": {
                           "type": [
                              "array",
                              "null"
                           ],
                           "items": {
                              "$ref": "#/definitions/ProductImpression"
                           }
                        },
                        "shopping_cart": {
                           "$ref": "#/definitions/ShoppingCart"
                        },
                        "currency_code": {
                           "$ref": "#/definitions/String"
                        },
                        "screen_name": {
                           "type": "string"
                        },
                        "is_non_interactive": {
                           "$ref": "#/definitions/Boolean"
                        },
                        "event_name": {
                           "type": "string"
                        },
                        "custom_event_type": {
                           "type": "string",
                           "enum": [
                              "navigation",
                              "location",
                              "search",
                              "transaction",
                              "user_content",
                              "user_preference",
                              "social",
                              "other",
                              "media",
                              "add_to_cart",
                              "remove_from_cart",
                              "checkout",
                              "checkout_option",
                              "click",
                              "view_detail",
                              "purchase",
                              "refund",
                              "promotion_view",
                              "promotion_click",
                              "add_to_wishlist",
                              "remove_from_wishlist",
                              "impression",
                              "attribution",
                              "consent_granted",
                              "consent_denied"
                           ]
                        },
                        "custom_flags": {
                           "type": [
                              "object",
                              "null"
                           ],
                           "additionalProperties": {
                              "$ref": "#/definitions/String"
                           }
                        }
                     }
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "commerce_event"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ],
         "additionalProperties": false
      },
      "EventData": {
         "properties": {
            "timestamp_unixtime_ms": {
               "$ref": "#/definitions/Integer"
            },
            "event_id": {
               "$ref": "#/definitions/Integer"
            },
            "source_message_id": {
               "type": "string"
            },
            "session_id": {
               "$ref": "#/definitions/Integer"
            },
            "session_uuid": {
               "$ref": "#/definitions/Uuid"
            },
            "session_start_unixtime_ms": {
               "$ref": "#/definitions/Integer"
            },
            "event_start_unixtime_ms": {
               "$ref": "#/definitions/Integer"
            },
            "custom_attributes": {
               "type": [
                  "object",
                  "null"
               ],
               "additionalProperties": {
                  "$ref": "#/definitions/String"
               }
            },
            "location": {
               "$ref": "#/definitions/GeoLocation"
            },
            "device_current_state": {
               "$ref": "#/definitions/DeviceCurrentState"
            },
            "is_goal_defined": {
               "$ref": "#/definitions/Boolean"
            },
            "lifetime_value_change": {
               "$ref": "#/definitions/Number"
            },
            "lifetime_value_attribute_name": {
               "$ref": "#/definitions/String"
            },
            "data_connection_type": {
               "$ref": "#/definitions/String"
            },
            "event_num": {
               "$ref": "#/definitions/Integer"
            },
            "view_controller": {
               "$ref": "#/definitions/String"
            },
            "is_main_thread": {
               "$ref": "#/definitions/Boolean"
            },
            "canonical_name": {
               "$ref": "#/definitions/String"
            },
            "event_system_notification_info": {
               "$ref": "#/definitions/EventSystemNotificationInfo"
            }
         }
      },
      "ConsentState": {
         "properties": {
            "gdpr": {
               "$ref": "#/definitions/GDPRConsentState"
            },
            "ccpa": {
               "$ref": "#/definitions/CCPAConsentState"
            }
         },
         "additionalProperties": false
      },
      "CrashReportEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "breadcrumbs": {
                           "type": [
                              "array",
                              "null"
                           ],
                           "items": {
                              "$ref": "#/definitions/BreadcrumbEvent"
                           }
                        },
                        "class_name": {
                           "$ref": "#/definitions/String"
                        },
                        "severity": {
                           "$ref": "#/definitions/String"
                        },
                        "message": {
                           "$ref": "#/definitions/String"
                        },
                        "stack_trace": {
                           "$ref": "#/definitions/String"
                        },
                        "exception_handled": {
                           "$ref": "#/definitions/Boolean"
                        },
                        "topmost_context": {
                           "$ref": "#/definitions/String"
                        },
                        "pl_crash_report_file_base64": {
                           "$ref": "#/definitions/String"
                        },
                        "ios_image_base_address": {
                           "$ref": "#/definitions/Integer"
                        },
                        "ios_image_size": {
                           "$ref": "#/definitions/Integer"
                        },
                        "session_number": {
                           "$ref": "#/definitions/Integer"
                        }
                     },
                     "required": [
                        "severity",
                        "message"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "crash_report"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "DeviceCurrentState": {
         "properties": {
            "time_since_start_ms": {
               "$ref": "#/definitions/Integer"
            },
            "battery_level": {
               "$ref": "#/definitions/Number"
            },
            "data_connection_type": {
               "$ref": "#/definitions/String"
            },
            "data_connection_type_detail": {
               "$ref": "#/definitions/String"
            },
            "gps_state": {
               "$ref": "#/definitions/Boolean"
            },
            "total_system_memory_usage_bytes": {
               "$ref": "#/definitions/Integer"
            },
            "disk_space_free_bytes": {
               "$ref": "#/definitions/Integer"
            },
            "external_disk_space_free_bytes": {
               "$ref": "#/definitions/Integer"
            },
            "cpu": {
               "$ref": "#/definitions/String"
            },
            "system_memory_available_bytes": {
               "$ref": "#/definitions/Number"
            },
            "system_memory_low": {
               "$ref": "#/definitions/Boolean"
            },
            "system_memory_threshold_bytes": {
               "$ref": "#/definitions/Number"
            },
            "application_memory_available_bytes": {
               "$ref": "#/definitions/Number"
            },
            "application_memory_max_bytes": {
               "$ref": "#/definitions/Number"
            },
            "application_memory_total_bytes": {
               "$ref": "#/definitions/Number"
            },
            "device_orientation": {
               "$ref": "#/definitions/String",
               "enum": [
                  "portrait",
                  "portrait_upside_down",
                  "landscape",
                  "LandscapeLeft",
                  "LandscapeRight",
                  "FaceUp",
                  "FaceDown",
                  "Square"
               ]
            },
            "status_bar_orientation": {
               "$ref": "#/definitions/String",
               "enum": [
                  "portrait",
                  "portrait_upside_down",
                  "landscape",
                  "LandscapeLeft",
                  "LandscapeRight",
                  "FaceUp",
                  "FaceDown",
                  "Square"
               ]
            }
         },
         "additionalProperties": false
      },
      "DeviceInformation": {
         "properties": {
            "brand": {
               "$ref": "#/definitions/String"
            },
            "product": {
               "$ref": "#/definitions/String"
            },
            "device": {
               "$ref": "#/definitions/String"
            },
            "android_uuid": {
               "$ref": "#/definitions/String"
            },
            "device_manufacturer": {
               "$ref": "#/definitions/String"
            },
            "platform": {
               "type": "string",
               "enum": [
                  "iOS",
                  "Android",
                  "web",
                  "tvOS",
                  "roku",
                  "out_of_band",
                  "alexa",
                  "smart_tv",
                  "fire_tv",
                  "xbox"
               ]
            },
            "os_version": {
               "$ref": "#/definitions/String"
            },
            "device_model": {
               "$ref": "#/definitions/String"
            },
            "screen_height": {
               "$ref": "#/definitions/Integer"
            },
            "screen_width": {
               "$ref": "#/definitions/Integer"
            },
            "screen_dpi": {
               "$ref": "#/definitions/Integer"
            },
            "device_country": {
               "$ref": "#/definitions/String"
            },
            "locale_language": {
               "$ref": "#/definitions/String"
            },
            "locale_country": {
               "$ref": "#/definitions/String"
            },
            "network_country": {
               "$ref": "#/definitions/String"
            },
            "network_carrier": {
               "$ref": "#/definitions/String"
            },
            "network_code": {
               "$ref": "#/definitions/String"
            },
            "network_mobile_country_code": {
               "$ref": "#/definitions/String"
            },
            "timezone_offset": {
               "$ref": "#/definitions/Integer"
            },
            "build_identifier": {
               "$ref": "#/definitions/String"
            },
            "http_header_user_agent": {
               "$ref": "#/definitions/String"
            },
            "ios_advertising_id": {
               "$ref": "#/definitions/Uuid"
            },
            "att_authorization_status": {
               "type": "string",
               "enum": [
                  "authorized",
                  "denied",
                  "not_determined",
                  "restricted"
               ]
            },
            "att_timestamp_unixtime_ms": {
               "$ref": "#/definitions/Integer"
            },
            "push_token": {
               "$ref": "#/definitions/String"
            },
            "cpu_architecture": {
               "$ref": "#/definitions/String"
            },
            "is_tablet": {
               "$ref": "#/definitions/Boolean"
            },
            "push_notification_sound_enabled": {
               "$ref": "#/definitions/Boolean"
            },
            "push_notification_vibrate_enabled": {
               "$ref": "#/definitions/Boolean"
            },
            "radio_access_technology": {
               "$ref": "#/definitions/String"
            },
            "supports_telephony": {
               "$ref": "#/definitions/Boolean"
            },
            "has_nfc": {
               "$ref": "#/definitions/Boolean"
            },
            "bluetooth_enabled": {
               "$ref": "#/definitions/Boolean"
            },
            "bluetooth_version": {
               "$ref": "#/definitions/String"
            },
            "ios_idfv": {
               "$ref": "#/definitions/Uuid"
            },
            "android_advertising_id": {
               "$ref": "#/definitions/Uuid"
            },
            "build_version_release": {
               "$ref": "#/definitions/String"
            },
            "limit_ad_tracking": {
               "$ref": "#/definitions/Boolean"
            },
            "amp_id": {
               "$ref": "#/definitions/String"
            },
            "is_dst": {
               "$ref": "#/definitions/Boolean"
            },
            "roku_advertising_id": {
               "$ref": "#/definitions/Uuid"
            },
            "roku_publisher_id": {
               "$ref": "#/definitions/Uuid"
            },
            "microsoft_advertising_id": {
               "$ref": "#/definitions/String"
            },
            "microsoft_publisher_id": {
               "$ref": "#/definitions/String"
            },
            "fire_advertising_id": {
               "$ref": "#/definitions/Uuid"
            }
         },
         "additionalProperties": false
      },
      "EventSystemNotificationInfo": {
         "properties": {
            "type": {
               "type": "string",
               "enum": [
                  "gdpr_change"
               ]
            }
         },
         "required": [
            "type"
         ]
      },
      "FirstRunEvent": {
         "type": "object",
         "properties": {
            "data": {
               "$ref": "#/definitions/EventData"
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "first_run"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ],
         "additionalProperties": false
      },
      "GDPRConsentState": {
         "type": "object",
         "additionalProperties": {
            "$ref": "#/definitions/GDPRConsentPurpose"
         }
      },
      "GDPRConsentPurpose": {
         "properties": {
            "regulation": {
               "$ref": "#/definitions/String"
            },
            "document": {
               "$ref": "#/definitions/String"
            },
            "consented": {
               "$ref": "#/definitions/Boolean"
            },
            "timestamp_unixtime_ms": {
               "$ref": "#/definitions/Integer"
            },
            "location": {
               "$ref": "#/definitions/String"
            },
            "hardware_id": {
               "$ref": "#/definitions/String"
            }
         },
         "required": [
            "consented",
            "timestamp_unixtime_ms"
         ],
         "additionalProperties": false
      },
      "CCPAConsentState": {
         "type": "object",
         "additionalProperties": {
            "$ref": "#/definitions/CCPAConsentPurpose"
         }
      },
      "CCPAConsentPurpose": {
         "properties": {
            "regulation": {
               "$ref": "#/definitions/String"
            },
            "document": {
               "$ref": "#/definitions/String"
            },
            "consented": {
               "$ref": "#/definitions/Boolean"
            },
            "timestamp_unixtime_ms": {
               "$ref": "#/definitions/Integer"
            },
            "location": {
               "$ref": "#/definitions/String"
            },
            "hardware_id": {
               "$ref": "#/definitions/String"
            }
         },
         "required": [
            "consented",
            "timestamp_unixtime_ms"
         ],
         "additionalProperties": false
      },
      "GeoLocation": {
         "properties": {
            "latitude": {
               "$ref": "#/definitions/Number"
            },
            "longitude": {
               "$ref": "#/definitions/Number"
            },
            "accuracy": {
               "$ref": "#/definitions/Number"
            },
            "dma_code": {
               "$ref": "#/definitions/Integer"
            },
            "country_code": {
               "$ref": "#/definitions/String"
            },
            "region_code": {
               "$ref": "#/definitions/String"
            },
            "postal_code": {
               "$ref": "#/definitions/String"
            },
            "location_source": {
               "$ref": "#/definitions/String"
            },
            "city_name": {
               "$ref": "#/definitions/String"
            }
         },
         "required": [
            "latitude",
            "longitude"
         ],
         "additionalProperties": false
      },
      "NetworkPerformanceEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "http_verb": {
                           "type": "string"
                        },
                        "url": {
                           "type": "string"
                        },
                        "time_elapsed": {
                           "$ref": "#/definitions/Integer"
                        },
                        "bytes_in": {
                           "$ref": "#/definitions/Integer"
                        },
                        "bytes_out": {
                           "$ref": "#/definitions/Integer"
                        },
                        "response_code": {
                           "$ref": "#/definitions/Integer"
                        },
                        "data": {
                           "$ref": "#/definitions/String"
                        }
                     },
                     "required": [
                        "url",
                        "response_code"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "network_performance"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "OptOutEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "is_opted_out": {
                           "$ref": "#/definitions/Boolean"
                        }
                     },
                     "required": [
                        "is_opted_out"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "opt_out"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "Product": {
         "properties": {
            "id": {
               "type": "string"
            },
            "name": {
               "type": "string"
            },
            "brand": {
               "$ref": "#/definitions/String"
            },
            "category": {
               "$ref": "#/definitions/String"
            },
            "variant": {
               "$ref": "#/definitions/String"
            },
            "position": {
               "$ref": "#/definitions/Integer"
            },
            "price": {
               "$ref": "#/definitions/Number"
            },
            "quantity": {
               "$ref": "#/definitions/Number"
            },
            "coupon_code": {
               "$ref": "#/definitions/String"
            },
            "added_to_cart_time_ms": {
               "$ref": "#/definitions/Integer"
            },
            "total_product_amount": {
               "$ref": "#/definitions/Number"
            },
            "custom_attributes": {
               "type": [
                  "object",
                  "null"
               ],
               "additionalProperties": {
                  "type": "string"
               }
            }
         }
      },
      "ProductAction": {
         "properties": {
            "action": {
               "type": "string",
               "enum": [
                  "add_to_cart",
                  "remove_from_cart",
                  "checkout",
                  "checkout_option",
                  "click",
                  "view_detail",
                  "purchase",
                  "refund",
                  "add_to_wishlist",
                  "remove_from_wish_list"
               ]
            },
            "checkout_step": {
               "$ref": "#/definitions/Integer"
            },
            "checkout_options": {
               "$ref": "#/definitions/String"
            },
            "product_action_list": {
               "$ref": "#/definitions/String"
            },
            "product_list_source": {
               "$ref": "#/definitions/String"
            },
            "transaction_id": {
               "type": "string"
            },
            "affiliation": {
               "$ref": "#/definitions/String"
            },
            "total_amount": {
               "$ref": "#/definitions/Number"
            },
            "tax_amount": {
               "$ref": "#/definitions/Number"
            },
            "shipping_amount": {
               "$ref": "#/definitions/Number"
            },
            "coupon_code": {
               "$ref": "#/definitions/String"
            },
            "products": {
               "type": [
                  "array",
                  "null"
               ],
               "items": {
                  "$ref": "#/definitions/Product"
               }
            }
         },
         "required": [
            "action"
         ],
         "additionalProperties": false
      },
      "ProductImpression": {
         "properties": {
            "product_impression_list": {
               "type": "string"
            },
            "products": {
               "type": [
                  "array",
                  "null"
               ],
               "items": {
                  "$ref": "#/definitions/Product"
               }
            }
         },
         "required": [
            "product_impression_list",
            "products"
         ],
         "additionalProperties": false
      },
      "ProfileEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "previous_mpid": {
                           "$ref": "#/definitions/Integer"
                        },
                        "current_mpid": {
                           "$ref": "#/definitions/Integer"
                        },
                        "profile_event_type": {
                           "type": "string",
                           "enum": [
                              "signup",
                              "login",
                              "logout",
                              "update",
                              "delete"
                           ]
                        }
                     },
                     "required": [
                        "previous_mpid",
                        "current_mpid",
                        "profile_event_type"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "profile"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "Promotion": {
         "properties": {
            "id": {
               "type": "string"
            },
            "name": {
               "type": "string"
            },
            "creative": {
               "$ref": "#/definitions/String"
            },
            "position": {
               "$ref": "#/definitions/String"
            }
         },
         "additionalProperties": false
      },
      "PromotionAction": {
         "properties": {
            "action": {
               "type": "string",
               "enum": [
                  "view",
                  "click"
               ]
            },
            "promotions": {
               "type": "array",
               "items": {
                  "$ref": "#/definitions/Promotion"
               }
            }
         },
         "required": [
            "action"
         ],
         "additionalProperties": false
      },
      "PushMessageEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "push_message_token": {
                           "$ref": "#/definitions/String"
                        },
                        "push_message_type": {
                           "type": "string",
                           "enum": [
                              "sent",
                              "received",
                              "action"
                           ]
                        },
                        "message": {
                           "$ref": "#/definitions/String"
                        },
                        "network": {
                           "$ref": "#/definitions/String"
                        },
                        "push_notification_payload": {
                           "$ref": "#/definitions/String"
                        },
                        "application_state": {
                           "$ref": "#/definitions/String",
                           "enum": [
                              "not_running",
                              "background",
                              "foreground"
                           ]
                        },
                        "action_identifier": {
                           "$ref": "#/definitions/String"
                        },
                        "push_message_behavior": {
                           "$ref": "#/definitions/String",
                           "enum": [
                              "Received",
                              "DirectOpen",
                              "Read",
                              "InfluencedOpen",
                              "Displayed"
                           ]
                        }
                     },
                     "required": [
                        "push_message_token",
                        "push_message_type",
                        "push_notification_payload"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "push_message"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "PushRegistrationEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "register": {
                           "$ref": "#/definitions/Boolean"
                        },
                        "registration_token": {
                           "type": "string"
                        }
                     },
                     "required": [
                        "register",
                        "registration_token"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "push_registration"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "ScreenViewEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "screen_name": {
                           "type": "string"
                        },
                        "activity_type": {
                           "$ref": "#/definitions/String"
                        },
                        "custom_flags": {
                           "type": [
                              "object",
                              "null"
                           ],
                           "additionalProperties": {
                              "$ref": "#/definitions/String"
                           }
                        }
                     },
                     "required": [
                        "screen_name"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "screen_view"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "SessionEndEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "session_duration_ms": {
                           "$ref": "#/definitions/Integer"
                        }
                     },
                     "required": [
                        "session_duration_ms"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "session_end"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "SessionStartEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "session_id": {
                           "$ref": "#/definitions/Integer"
                        }
                     }
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "session_start"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "ShoppingCart": {
         "properties": {
            "products": {
               "type": "array",
               "items": {
                  "$ref": "#/definitions/Product"
               }
            }
         },
         "required": [
            "products"
         ],
         "additionalProperties": false
      },
      "SourceInformation": {
         "properties": {
            "channel": {
               "type": "string",
               "enum": [
                  "native",
                  "javascript",
                  "pixel",
                  "desktop",
                  "partner",
                  "server_to_server"
               ]
            },
            "partner": {
               "$ref": "#/definitions/String"
            },
            "replay_request_id": {
               "$ref": "#/definitions/String"
            },
            "replay_job_id": {
               "$ref": "#/definitions/String"
            },
            "is_historical": {
               "$ref": "#/definitions/Boolean"
            }
         },
         "required": [
            "channel"
         ],
         "additionalProperties": false
      },
      "UninstallEvent": {
         "type": "object",
         "properties": {
            "data": {
               "$ref": "#/definitions/EventData"
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "uninstall"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "UserAttributeChangeEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "type": "object",
                     "properties": {
                        "user_attribute_name": {
                           "type": "string"
                        },
                        "new": {
                           "$ref": "#/definitions/StringOrArray"
                        },
                        "old": {
                           "$ref": "#/definitions/StringOrArray"
                        },
                        "deleted": {
                           "$ref": "#/definitions/Boolean"
                        },
                        "is_new_attribute": {
                           "$ref": "#/definitions/Boolean"
                        }
                     },
                     "required": [
                        "user_attribute_name"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "user_attribute_change"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "IdentityType": {
         "type": "string",
         "enum": [
            "other",
            "customer_id",
            "facebook",
            "twitter",
            "google",
            "microsoft",
            "yahoo",
            "email",
            "alias",
            "facebook_custom_audience_id",
            "other_id_2",
            "other_id_3",
            "other_id_4",
            "other_id_5",
            "other_id_6",
            "other_id_7",
            "other_id_8",
            "other_id_9",
            "other_id_10",
            "mobile_number",
            "phone_number_2",
            "phone_number_3"
         ]
      },
      "UserIdentity": {
         "properties": {
            "identity_type": {
               "$ref": "#/definitions/IdentityType"
            },
            "identity": {
               "$ref": "#/definitions/String"
            },
            "timestamp_unixtime_ms": {
               "$ref": "#/definitions/Integer"
            },
            "created_this_batch": {
               "$ref": "#/definitions/Boolean"
            }
         },
         "required": [
            "identity_type",
            "identity",
            "timestamp_unixtime_ms"
         ],
         "additionalProperties": false
      },
      "UserIdentityChangeEvent": {
         "type": "object",
         "properties": {
            "data": {
               "allOf": [
                  {
                     "$ref": "#/definitions/EventData"
                  },
                  {
                     "properties": {
                        "new": {
                           "$ref": "#/definitions/UserIdentity"
                        },
                        "old": {
                           "$ref": "#/definitions/UserIdentity"
                        }
                     },
                     "required": [
                        "new",
                        "old"
                     ]
                  }
               ]
            },
            "event_type": {
               "type": "string",
               "enum": [
                  "user_identity_change"
               ]
            }
         },
         "required": [
            "event_type",
            "data"
         ]
      },
      "EventType": {
         "type": "string",
         "enum": [
            "session_start",
            "session_end",
            "screen_view",
            "custom_event",
            "crash_report",
            "opt_out",
            "first_run",
            "pre_attribution",
            "push_registration",
            "application_state_transition",
            "push_message",
            "network_performance",
            "breadcrumb",
            "profile",
            "push_reaction",
            "commerce_event",
            "user_attribute_change",
            "user_identity_change",
            "uninstall"
         ]
      }
   }
}
