Overview
The Cross-Media Measurement API follows a hierarchical resource-oriented architecture where resources represent key entities in the measurement ecosystem. Understanding this resource model is essential for effectively using the API.The API resource relationships are described in detail throughout this page, showing how MeasurementConsumers, DataProviders, Measurements, Requisitions, and other resources interact.
Core Resources
MeasurementConsumer
A MeasurementConsumer represents an entity that requests and consumes measurement results, typically an advertiser or ad agency.MeasurementConsumers are identified by resource names following the pattern:
measurementConsumers/{measurement_consumer}- Create Measurements to request cross-media analytics
- Own Certificates for authentication and encryption
- Manage ApiKeys for programmatic access
- Maintain encryption PublicKeys for secure result delivery
DataProvider
A DataProvider represents an entity that provides event data for measurements, such as a publisher or panel provider.- Define EventGroups representing event data collections
- Fulfill Requisitions by providing encrypted data
- Manage Certificates and PublicKeys for secure communication
- Specify data availability intervals
Duchy
A Duchy represents a computation worker that participates in multi-party computation protocols. Duchies are non-colluding entities that jointly compute measurement results without seeing individual user data.Duchies are managed by the system and are read-only resources. They cannot be created or modified through the public API.
Measurement Workflow Resources
Measurement
A Measurement represents a request from a MeasurementConsumer to compute metrics across data from multiple DataProviders. Resource Pattern:measurementConsumers/{measurement_consumer}/measurements/{measurement}
State Lifecycle:
AWAITING_REQUISITION_FULFILLMENT- Waiting for DataProviders to fulfill requisitionsCOMPUTING- Multi-party computation in progressSUCCEEDED- Completed successfully (terminal state)FAILED- Completed with failure (terminal state)CANCELLED- Cancelled by MeasurementConsumer (terminal state)
- Reach: Unique user count (deduplicated VIDs)
- Frequency: Distribution of impression frequency per user
- Impression: Total impression count
- WatchDuration: Total watch time
- Population: Population count
Requisition
A Requisition represents a request for data from a single DataProvider for a specific Measurement. Requisitions are automatically created when a Measurement is created. Resource Pattern:dataProviders/{data_provider}/requisitions/{requisition}
Requisitions link Measurements to EventGroups, specifying exactly what data is needed from each DataProvider.
EventGroup
An EventGroup represents a logical grouping of events defined by a DataProvider, such as a single advertising campaign or creative. Resource Pattern:dataProviders/{data_provider}/eventGroups/{event_group}
- Associates events with a specific MeasurementConsumer
- Defines the time range when events are available
- Specifies media types (VIDEO, DISPLAY, etc.)
- Contains encrypted metadata describing the events
Security Resources
Certificate
Certificates are used for authentication and signature verification throughout the API. Resource Patterns:dataProviders/{data_provider}/certificates/{certificate}measurementConsumers/{measurement_consumer}/certificates/{certificate}duchies/{duchy}/certificates/{certificate}
REVOCATION_STATE_UNSPECIFIEDVALIDREVOKEDHOLD
PublicKey
PublicKeys are used for encrypting data that only the key owner can decrypt. Resource Patterns:dataProviders/{data_provider}/publicKeymeasurementConsumers/{measurement_consumer}/publicKey
PublicKeys are singleton resources - each parent has exactly one PublicKey that can be updated.
ApiKey
ApiKeys enable programmatic access to the API for MeasurementConsumers. Resource Pattern:measurementConsumers/{measurement_consumer}/apiKeys/{api_key}
Resource Relationships
The resource hierarchy creates several important relationships:Parent-Child Relationships
Cross-Resource References
- EventGroup → MeasurementConsumer: EventGroups reference the MeasurementConsumer they’re associated with
- Requisition → Measurement: Requisitions reference the Measurement they belong to
- Requisition → EventGroup: Requisitions specify which EventGroups to query
- Measurement → Certificates: Measurements reference certificates for encryption and verification
Resource Naming Convention
All resources follow Google’s API Resource naming conventions:- Resources use singular names:
measurement,eventGroup,requisition - Collections use plural names:
measurements,eventGroups,requisitions - IDs are opaque strings assigned by the server
- Full resource names are slash-separated paths
Immutability
Many resources and fields in the API are immutable once created:- Measurements: Once created, the measurement_spec and data_providers cannot be changed
- Requisitions: Automatically created and cannot be modified (only fulfilled or refused)
- EventGroups: Core fields like measurement_consumer are immutable
Immutability ensures the integrity of measurements and prevents tampering with data after creation.
Related Concepts
- Measurements - Deep dive into measurement types and lifecycle
- Event Groups - Understanding event data organization
- Multi-Party Computation - How Duchies collaborate securely
