---
title: "Validate Event Batch"
method: POST
path: "/validate"
tags: ["Data Plan"]
---

# Validate Event Batch

`POST /validate`

## Request

- Base URL: `https://api.mparticle.com/platform/v2/workspaces/0/plans`
- URL: `https://api.mparticle.com/platform/v2/workspaces/0/plans/validate`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/mparticle/apis/mparticle-data-planning-api/docs/validate/post.ts> (a function with typed inputs; its response is checked against the schema)

Validate an event batch against a Data Plan document

## Request body

- object
  - `document` VersionDocument: This is the actual data plan, since a data plan can have many versions.
    - `data_points` DataPoint[]
      - `description` string
      - `match` DataPointMatch, required
        - `type` 'unknown' | 'screen_view' | 'custom_event' | 'user_attributes' | 'user_identities' | 'product_action' | 'promotion_action' | 'product_impression', required
        - `criteria` union, required
          - ScreenViewEventCriteria
            - `screen_name` string, required
          - CustomEventCriteria
            - `event_name` string, required
            - `custom_event_type` 'unknown' | 'navigation' | 'location' | 'search' | 'transaction' | 'user_content' | 'user_preference' | 'social' | 'other' | 'media', required
          - UserAttributeCriteria
          - CommerceActionEventCriteria: Data point match criteria object for commerce action events
            - `action` union
              - …
      - `validator` DataPointValidator, required
        - `type` 'json_schema', required
        - `definition` object, required: This should be a valid JSON schema
    - `active_transformation_ids` number[]
    - `transformations` DataPlanTransformation
      - `transformation_id` number
      - `transformation_name` string
      - `error_pointer` string
      - `validation_error_types` string[]
      - `schema_keywords` SchemaKeyword[]
      - `json_patch` DataPlanPatch[]
        - `op` 'unknown' | 'add' | 'remove' | 'replace' | 'copy' | 'move' | 'test'
        - `from` string
        - `path` string
        - `value` string
      - `description` string
  - `batch` MparticleS2sEventsOasBatch
    - `source_request_id` string
    - `context` MparticleS2sEventsOasBatchContext
      - `data_plan` MparticleS2sEventsOasDataPlanContext
        - `plan_id` string, required
        - `plan_version` integer
    - `events` MparticleS2sEventsOasBaseEvent[]: Provide a list of event objects - such as CustomEvent, ScreenViewEvent, or CommerceEvent
      - `data` MparticleS2sEventsOasCommonEventData
        - `timestamp_unixtime_ms` integer
        - `event_id` integer
        - `source_message_id` string
        - `session_id` integer
        - `session_uuid` string
        - `session_start_unixtime_ms` integer
        - `event_start_unixtime_ms` integer
        - `custom_attributes` object
        - `location` MparticleS2sEventsOasGeoLocation
          - `latitude` number, required
          - `longitude` number, required
          - `accuracy` number
        - `device_current_state` MparticleS2sEventsOasDeviceCurrentState
          - `time_since_start_ms` integer
          - `battery_level` number
          - `data_connection_type` string
          - `data_connection_type_detail` string
          - `gps_state` boolean
          - `total_system_memory_usage_bytes` integer
          - `disk_space_free_bytes` integer
          - `external_disk_space_free_bytes` integer
          - `cpu` string
          - `system_memory_available_bytes` number
          - `system_memory_low` boolean
          - `system_memory_threshold_bytes` number
          - `application_memory_available_bytes` number
          - `application_memory_max_bytes` number
          - `application_memory_total_bytes` number
          - `device_orientation` 'portrait' | 'portrait_upside_down' | 'landscape' | 'LandscapeLeft' | 'LandscapeRight' | 'FaceUp' | 'FaceDown' | 'Square'
          - `status_bar_orientation` 'portrait' | 'portrait_upside_down' | 'landscape' | 'LandscapeLeft' | 'LandscapeRight' | 'FaceUp' | 'FaceDown' | 'Square'
        - `is_goal_defined` boolean
        - `lifetime_value_change` boolean
        - `lifetime_value_attribute_name` string
        - `data_connection_type` string
        - `event_num` integer
        - `view_controller` string
        - `is_main_thread` boolean
        - `canonical_name` string
        - `event_system_notification_info` MparticleS2sEventsOasEventSystemNotificationInfo
          - `type` 'gdpr_change', required
      - `event_type` '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'
    - `device_info` MparticleS2sEventsOasDeviceInformation
      - `brand` string
      - `product` string
      - `device` string
      - `android_uuid` string
      - `device_manufacturer` string
      - `platform` 'iOS' | 'Android' | 'web' | 'desktop' | 'tvOS' | 'roku' | 'out_of_band' | 'smart_tv' | 'samsung_tv' | 'xbox'
      - `os_version` string
      - `device_model` string
      - `screen_height` integer
      - `screen_width` integer
      - `screen_dpi` integer
      - `device_country` string
      - `locale_language` string
      - `locale_country` string
      - `network_country` string
      - `network_carrier` string
      - `network_code` string
      - `network_mobile_country_code` string
      - `timezone_offset` integer
      - `build_identifier` string
      - `http_header_user_agent` string
      - `ios_advertising_id` string
      - `att_authorization_status` 'authorized' | 'denied' | 'not_determined' | 'restricted'
      - `att_timestamp_unixtime_ms` number
      - `push_token` string
      - `cpu_architecture` string
      - `is_tablet` boolean
      - `push_notification_sound_enabled` boolean
      - `push_notification_vibrate_enabled` boolean
      - `radio_access_technology` string
      - `supports_telephony` boolean
      - `has_nfc` boolean
      - `bluetooth_enabled` boolean
      - `bluetooth_version` string
      - `ios_idfv` string
      - `android_advertising_id` string
      - `build_version_release` string
      - `limit_ad_tracking` boolean
      - `amp_id` string
      - `is_dst` boolean
      - `roku_advertising_id` string
      - `roku_publisher_id` string
      - `microsoft_advertising_id` string
      - `microsoft_publisher_id` string
      - `fire_advertising_id` string
      - `tizen_advertising_id` string
    - `application_info` MparticleS2sEventsOasApplicationInformation
      - `application_name` string
      - `application_version` string
      - `application_build_number` string
      - `install_referrer` string
      - `package` string
      - `os` 'Unknown' | 'IOS' | 'Android' | 'WindowsPhone' | 'MobileWeb' | 'UnityIOS' | 'UnityAndroid' | 'Desktop' | 'TVOS' | 'Roku' | 'OutOfBand' | 'Alexa' | 'SmartTV' | 'FireTV' | 'Xbox'
      - `apple_search_ads_attributes` object
    - `user_attributes` object
    - `deleted_user_attributes` string[]
    - `user_identities` object
      - `other` string
      - `customer_id` string
      - `facebook` string
      - `twitter` string
      - `google` string
      - `microsoft` string
      - `yahoo` string
      - `email` string
      - `alias` string
      - `facebook_custom_audience_id` string
      - `other_id_2` string
      - `other_id_3` string
      - `other_id_4` string
      - `other_id_5` string
      - `other_id_6` string
      - `other_id_7` string
      - `other_id_8` string
      - `other_id_9` string
      - `other_id_10` string
      - `mobile_number` string
      - `phone_number_2` string
      - `phone_number_3` string
    - `environment` 'unknown' | 'development' | 'production', required
    - `api_key` string
    - `api_keys` string[]
    - `ip` string
    - `integration_attributes` object
    - `partner_identity` string
    - `source_info` MparticleS2sEventsOasSourceInformation
      - `channel` 'native' | 'javascript' | 'pixel' | 'desktop' | 'partner' | 'server_to_server'
      - `partner` string
      - `replay_request_id` string
      - `replay_job_id` string
      - `is_historical` boolean
    - `mp_deviceid` string
    - `attribution_info` MparticleS2sEventsOasAttributionInfo
      - `service_provider` string, required
      - `publisher` string, required
      - `campaign` string, required
    - `timestamp_unixtime_ms` integer
    - `batch_id` integer
    - `mpid` integer
    - `sdk_version` string
    - `consent_state` MparticleS2sEventsOasConsentState
      - `gdpr` MparticleS2sEventsOasGDPRConsentState, required
        - `regulation` string, required
        - `document` string, required
        - `consented` boolean, required
        - `timestamp_unixtime_ms` integer, required
        - `location` string, required
        - `hardware_id` string, required
    - `job_id` string

## Response `200`

Example response

- object
  - `results` object[]
    - `data` object
      - `match` DataPointMatch
        - `type` 'unknown' | 'screen_view' | 'custom_event' | 'user_attributes' | 'user_identities' | 'product_action' | 'promotion_action' | 'product_impression', required
        - `criteria` union, required
          - ScreenViewEventCriteria
            - `screen_name` string, required
          - CustomEventCriteria
            - `event_name` string, required
            - `custom_event_type` 'unknown' | 'navigation' | 'location' | 'search' | 'transaction' | 'user_content' | 'user_preference' | 'social' | 'other' | 'media', required
          - UserAttributeCriteria
          - CommerceActionEventCriteria: Data point match criteria object for commerce action events
            - `action` union
              - …
      - `validation_errors` object[]
        - `validation_error_type` 'unknown' | 'unplanned' | 'missing_required' | 'invalid_value'
        - `key` string
        - `error_pointer` string
        - `expected` string
        - `actual` string
        - `action_expected` 'unknown' | 'allow' | 'drop_event' | 'drop_attribute' | 'drop_batch'
        - `schema_keyword` 'none' | 'additionalItems' | 'additionalProperties' | 'allOf' | 'anyOf' | 'const' | 'contains' | 'contentEncoding' | 'contentMediaType' | 'default' | 'definitions' | 'dependencies' | 'dependentRequired' | 'dependentSchemas' | 'else' | 'enum' | 'exclusiveMaximum' | 'exclusiveMinimum' | 'format' | 'id' | 'if' | 'items' | 'maxContains' | 'maximum' | 'maximum' | 'maxLength' | 'maxProperties' | 'minContains' | 'minimum' | 'minItems' | 'minLength' | 'minProperties' | 'multipleOf' | 'not' | 'oneOf' | 'pattern' | 'patternProperties' | 'properties' | 'propertyNames' | 'readOnly' | 'required' | 'then' | 'type' | 'unevaluatedItems' | 'unevaluatedProperties' | 'uniqueItems' | 'writeOnly' | '$anchor' | '$defs' | '$id' | '$recursiveAnchor' | '$recursiveRef' | '$ref' | '$schema' | '$vocabulary' | 'timeLimit' | '$comment' | 'description' | 'examples' | 'title'
      - `validated_event_id` number
      - `validated_source_message_id` string
      - `executed_transformations` object
        - `transformation_id` number
        - `transformation_status` 'success' | 'failure' | 'unchanged' | 'quarantined'
        - `transformation_error_type` 'valid' | 'invalid' | 'unrecognized_data_point' | 'events_schema_violated'
        - `transformation_error_message` string
        - `transformation_error_pointer` string
      - `timestamp_unixtime_ms` integer
      - `event_id` integer
      - `source_message_id` string
      - `session_id` integer
      - `session_uuid` string
      - `session_start_unixtime_ms` integer
      - `event_start_unixtime_ms` integer
      - `custom_attributes` object
      - `location` MparticleS2sEventsOasGeoLocation
        - `latitude` number, required
        - `longitude` number, required
        - `accuracy` number
      - `device_current_state` MparticleS2sEventsOasDeviceCurrentState
        - `time_since_start_ms` integer
        - `battery_level` number
        - `data_connection_type` string
        - `data_connection_type_detail` string
        - `gps_state` boolean
        - `total_system_memory_usage_bytes` integer
        - `disk_space_free_bytes` integer
        - `external_disk_space_free_bytes` integer
        - `cpu` string
        - `system_memory_available_bytes` number
        - `system_memory_low` boolean
        - `system_memory_threshold_bytes` number
        - `application_memory_available_bytes` number
        - `application_memory_max_bytes` number
        - `application_memory_total_bytes` number
        - `device_orientation` 'portrait' | 'portrait_upside_down' | 'landscape' | 'LandscapeLeft' | 'LandscapeRight' | 'FaceUp' | 'FaceDown' | 'Square'
        - `status_bar_orientation` 'portrait' | 'portrait_upside_down' | 'landscape' | 'LandscapeLeft' | 'LandscapeRight' | 'FaceUp' | 'FaceDown' | 'Square'
      - `is_goal_defined` boolean
      - `lifetime_value_change` boolean
      - `lifetime_value_attribute_name` string
      - `data_connection_type` string
      - `event_num` integer
      - `view_controller` string
      - `is_main_thread` boolean
      - `canonical_name` string
      - `event_system_notification_info` MparticleS2sEventsOasEventSystemNotificationInfo
        - `type` 'gdpr_change', required
  - `batch` object

## Other responses

- `400`: Example response
- `401`: Unauthorized
- `403`: Forbidden
- `429`: Too Many Requests

## Changes

- **2026-11-06** `d8df9035366b`: 2 info
  - added the new optional request property `batch/device_info/tizen_advertising_id`
  - added the new `samsung_tv` enum value to the request property `batch/device_info/platform`

[Operation history](https://skmtc.dev/mparticle/apis/mparticle-data-planning-api/changes/validate/post.md)

---

[API](https://skmtc.dev/mparticle/apis/mparticle-data-planning-api.md) - [All operations](https://skmtc.dev/mparticle/apis/mparticle-data-planning-api/llms.txt) - [OpenAPI document](https://skmtc.dev/mparticle/apis/mparticle-data-planning-api/revisions/d8df9035366b?raw)
