Entity Read Files (ERFs) are JSON representations of a partner's campaign objects made available through Google Cloud Storage.
ERFs were deprecated in June 2021 and sunset on October 31, 2024. ERFs are no longer generated. Use the Display & Video 360 API to retrieve Display & Video 360 resources.
This guide discusses how to migrate from Entity Read Files to the Display & Video 360 API by:
- Giving an overview of the differences between the two interfaces
- Comparing ERF tables to API services
- Providing guidance on entity retrieval through the API
- Acknowledging existing data gaps
- Presenting a mapping of all ERF fields to comparable API resource fields
Overview
When migrating from ERFs to the Display & Video 360 API, there are a number of key differences to consider, including:
- Data freshness. ERFs are generated daily and in bulk while the API retrieves the most up-to-date version of a resource.
- Resource structure. The API uses different JSON structures than ERF to represent the same resource types. Some resources, such as public targeting settings, may use a different ID space.
- Retrieval method. The Display & Video 360 API only enables the retrieval of resources individually, in paginated lists, or through BigQuery data transfers, in contrast to the raw JSON files provided by ERF.
- Scope. As opposed to ERFs, which are scoped by partner ID, most API resources are scoped by advertiser ID. Resources included in responses are limited to resources within that scope.
ERF data representation in the API
Entity Read Files are separated into "Public" and "Private" tables. Public tables provide information that is available and applicable to all users, such as targeting values. Private tables provide data that is specific to a partner, such as creative or line item resources.
The Display & Video 360 API does not use this dichotomy, instead making all of this information retrievable through various services and using different JSON structures. This section compares the information provided through public and private ERF tables to that made available through Display & Video 360 API resources and services.
Public information
ERF public tables provide reference materials for users to use when interpreting the targeting settings of their retrieved private resources and assigning targeting through a subset of Structured Data Files (SDFs) versions uploaded through the UI. These reference materials are the same for all users and consist of a numeric ID, used for mapping, and more descriptive details, such as a display name.
When using the Display & Video 360 API, targeting reference information can be retrieved through the targetingTypes.targetingOptions
service. Similar to the public tables, this service provides the IDs and details of targeting options for a specific targeting type. Refer to our existing Set Targeting page for a code example demonstrating targeting option ID retrieval.
Public tables and SDFs
Before SDF v7, Entity Read Files and Structured Data Files use the same ID space for targeting settings. If you are an SDF user using ERF public tables for interpreting or assigning targeting settings using SDF, you can instead download this reference material in CSV format through the Display & Video 360 UI.
Starting with v7, the ID spaces used by a subset of Structured Data Files columns have been updated to decouple SDF from the ERFs and further align with Display & Video 360 API. See the v7 migration guide and reference documentation for more information.
Private resources
ERF private tables provide a daily snapshot of the current settings of private resources owned by a partner. Due to the sheer volume of resources that can be created under a single partner, these files can grow to be very large and difficult to download and process.
In the API, each private table has a corresponding service that provides endpoints for retrieval and management of that resource type. Resources can be retrieved in bulk using each service's respective list method. The JSON structure for each resource is different in the API compared to ERF, utilizing different field names and shared resources.
Certain information available in the ERF representation of a resource, such as a resource's assigned targeting settings or a channel's sites, are represented in the API as children of the original resource and must be retrieved through additional API requests.
Entity retrieval in the API
Display & Video 360 resources can either be retrieved through direct API requests or automatic imports into BigQuery.
Direct API requests
Each resource type is retrievable through a different API service. Resources can be retrieved individually or in bulk using the appropriate service's get or list method, respectively. Important properties of Display & Video 360 API list methods include:
- Required scope. Unlike ERFs, which are scoped by partner, most resources in the API are scoped by advertiser. Retrieving all of a resource type, such as line items, under a partner may require an individual list request for each child advertiser of that partner. Exceptions include direct children of a partner, such as advertisers and partner-owned channels.
- Pagination. API list methods employ pagination to ensure that responses are within a reasonable size, limiting most individual request responses, or pages, to 100 resources. If the number of relevant resources is larger than the page size, consecutive list calls are required to retrieve subsequent pages of the full list response. A code example paging a list response is provided in a section of our Targeting guide page regarding retrieving available targeting options .
- Additional requests required for targeting retrieval. A resource's targeting settings are not included in its API JSON object, but are instead child resources known as assigned targeting options. These child resources must be retrieved through a separate request. For example, for each line item retrieved through an
advertisers.lineItems.list
request, a separateadvertisers.lineItems.bulkListAssignedTargetingOptions
request must be made to retrieve all targeting information.
Optimize resource retrieval
The Display & Video 360 API may require multiple requests to retrieve the same amount of information that is available in a single Entity Read File. Optimizing how you retrieve resources can help retrieve the data you need more efficiently:
- Make concurrent requests to the API. The Display & Video 360 API protects infrastructure using requests per project and requests per advertiser per project rate limits. This quota structure lets you implement a multithreaded solution across multiple advertisers that will reduce the total time it takes to retrieve all necessary resources. Although pagination requires that all resources of a type within a certain scope are retrieved through consecutive calls, retrieval of resources within another scope or of another type can be done concurrently.
- Utilize filters and order by parameters in your list calls to retrieve only relevant resources. For example, if you are only interested in line items that have been updated in the last day, you can use the
filter
parameter of theadvertisers.lineItems.list
method to only return line items with anupdateTime
greater than a given timestamp. This can significantly reduce the number of requests that need to be made. - Cache regularly used IDs to avoid unnecessary API requests. Certain reference information, such as targeting options IDs and Google Audience IDs, are relatively stable and can be safely stored to avoid the need for retrieval upon every use. However, cached values should be checked on a weekly basis to account for infrequent changes or deprecations.
See our Quota Optimization guide for more information on how to access the Display & Video 360 API efficiently.
Import into BigQuery
The Display & Video 360 API BigQuery Connector lets you automatically import Display & Video 360 resource configurations directly into BigQuery on a daily basis. The configurations are stored in BigQuery using Display & Video 360 API resource design. A subset of API resources are supported.
See the following cloud documentation for more information about using the Display & Video 360 API BigQuery Connector:
- What is a BigQuery Data Transfer Service?
- Schedule a Display & Video 360 transfer
- Display & Video 360 data transformation
Known API data gaps
There are notable data gaps you might encounter when migrating from ERF to Display & Video 360 API, such as:
- Story insertion orders. Story insertion orders are not retrievable through the API and must be retrieved through the Display & Video 360 UI.
- A subset of resource fields. A small number of resource fields present in ERF objects are not available in the corresponding resources retrieved through the Display & Video 360 API.
Appendix: Mapping ERF Fields to API
Public table mapping
The tables below map the fields of ERF public tables to existing targeting types and targeting option fields in the Display & Video 360 API. Although the value of one field might map to another, that does not guarantee that they utilize the same data type, enum values, or ID space.
App Collection
Retrievable under targeting type TARGETING_TYPE_APP_CATEGORY
.
ERF Field Name | DV360 API Availability |
---|---|
id | TargetingOption.targetingOptionId field. |
name | TargetingOption.appCategoryDetails.displayName field. |
Browser
Retrievable under targeting type TARGETING_TYPE_BROWSER
.
ERF Field Name | DV360 API Availability |
---|---|
id | TargetingOption.targetingOptionId field. |
is_mobile | Not available. |
name | TargetingOption.browserDetails.displayName field. |
DataPartner
There is no equivalent resource or fields available in Display & Video 360 API.
DeviceCriteria
Retrievable under targeting types TARGETING_TYPE_OPERATING_SYSTEM
, TARGETING_TYPE_DEVICE_MAKE_MODEL
, and TARGETING_TYPE_DEVICE_TYPE
.
ERF Field Name | DV360 API Availability |
---|---|
id | TargetingOption.targetingOptionId field or DeviceType enum. |
is_mobile | Not available. |
name | TargetingOption.operatingSystemDetails.displayName field, TargetingOption.deviceMakeModelDetails.displayName field, or DeviceType enum, depending on targeting type. |
criteria_type | TargetingOption.targetingType field. |
operating_system_id | Not available. |
mobile_brand_name | Not available. |
mobile_model_name | Not available. |
mobile_make_model_id | Not available. |
device_type | DeviceType enum. |
GeoLocation
Retrievable under targeting type TARGETING_TYPE_GEO_REGION
.
ERF Field Name | DV360 API Availability |
---|---|
id | TargetingOption.targetingOptionId field. |
canonical_name | TargetingOption.geoRegionDetails.displayName field. |
geo_name | Not available. |
country_code | Not available. |
region_code | Not available. |
city_name | Not available. |
postal_name | Not available. |
dma_code | Not available. |
Isp
Retrievable under targeting type TARGETING_TYPE_CARRIER_AND_ISP
.
ERF Field Name | DV360 API Availability |
---|---|
id | TargetingOption.targetingOptionId field. |
is_mobile | Not available. |
name | TargetingOption.carrierAndIspDetails.displayName field. |
secondary_criteria_id | TargetingOption.targetingOptionId field. |
Language
Retrievable under targeting type TARGETING_TYPE_LANGUAGE
.
ERF Field Name | DV360 API Availability |
---|---|
id | TargetingOption.targetingOptionId field. |
name | Not available. Full display name for a language is available at TargetingOption.languageDetails.displayName field. |
SiteToPlacementId
There is no equivalent resource or fields available in Display & Video 360 API.
SupportedExchange
Retrievable under targeting type TARGETING_TYPE_EXCHANGE
.
ERF Field Name | DV360 API Availability |
---|---|
id | Exchange enum. |
name | Exchange enum. |
UniversalSite
There is no equivalent resource or fields available in Display & Video 360 API. Individual sites and apps can be targeted directly under targeting types TARGETING_TYPE_URL
and TARGETING_TYPE_APP
, respectively. In Display & Video 360, any app or URL can be targeted, but not every app or URL can be reported on. If you would like to remove non-reportable apps and URLs from spending, follow the instructions on the DV360 Help Center.
Private table field mapping
The tables below map the fields of ERF private tables to existing fields or services in the Display & Video 360 API. Although the value of one field may map to another, that does not guarantee that they utilize the same data type, enum values or ID space.
Advertiser
ERF Field Name | DV360 API Availability |
---|---|
common_data.id | Advertiser.advertiserId field. |
common_data.name | Advertiser.displayName field. |
common_data.active | Advertiser.entityStatus field. |
common_data.integration_code | Advertiser.integrationDetails.integrationCode field. |
partner_id | Advertiser.partnerId field. |
currency_code | Advertiser.generalConfig.currencyCode field. |
timezone_code | Advertiser.generalConfig.timeZone field. |
landing_page_url | Advertiser.generalConfig.domainUrl field. |
available_channel_ids | Retrievable through advertisers.channels.list method. |
blacklist_channel_id | Retrievable through advertisers.targetingTypes.assignedtargetingOptions.list method under targeting type TARGETING_TYPE_CHANNEL . If AssignedTargetingOption.channelDetails.negative is true, the channel is negatively-targeted. |
dcm_configuration | Not available. |
dcm_network_id | Advertiser.adServerConfig.cmHybridConfig.cmAccountId field. |
dcm_advertiser_id | The Advertiser.adServerConfig.cmHybridConfig.cmAdvertiserIds field lists the CM360 Advertiser IDs that share the CM360 Floodlight configuration. |
dcm_floodlight_group_id | Advertiser.adServerConfig.cmHybridConfig.cmFloodlightConfigId field. |
dcm_syncable_site_ids | Advertiser.adServerConfig.cmHybridConfig.cmSyncableSiteIds field. |
enable_oba_tags | Not available. |
Campaign
ERF Field Name | DV360 API Availability |
---|---|
common_data.id | Campaign.campaignId field. |
common_data.name | Campaign.displayName field. |
common_data.active | Campaign.entityStatus field. |
common_data.integration_code | Not available. |
advertiser_id | Campaign.advertiserId field. |
budget | Campaign.campaignFlight and Campaign.campaignBudgets fields. |
frequency_cap | Campaign.frequencyCap field. |
default_target_list | Not available |
uses_video_creatives | Not available. |
uses_display_creatives | Not available. |
uses_audio_creatives | Not available. |
objective | Campaign.campaignGoal.campaignGoalType field. |
metric | Campaign.campaignGoal.performanceGoal.performanceGoalType field. |
objective_description | Campaign.campaignGoal.performanceGoal.performanceGoalString field. |
metric_amount_micros | Campaign.campaignGoal.performanceGoal.performanceGoalAmountMicros field. |
Creative
ERF Field Name | DV360 API Availability |
---|---|
common_data.id | Creative.creativeId field. |
common_data.name | Creative.displayName field. |
common_data.active | Creative.entityStatus field. |
common_data.integration_code | Creative.integrationCode field. |
advertiser_id | Creative.advertiserId field. |
dcm_placement_id | Creative.cmPlacementId field. |
width_pixels | Creative.dimensions.widthPixels field. |
height_pixels | Creative.dimensions.heightPixels field. |
approval_status | Creative.reviewStatus field. |
expanding_direction | Creative.expandingDirection field. |
creative_type | Creative.creativeType field. |
CustomAffinity
ERF Field Name | DV360 API Availability |
---|---|
id | CustomList.customListId field. |
name | CustomList.displayName field. |
description | Not available. |
advertiser_id | Not available. |
FloodlightActivity
ERF Field Name | DV360 API Availability |
---|---|
common_data.id | FloodlightActivity.floodlightActivityId field. |
common_data.name | FloodlightActivity.displayName field. |
common_data.active | FloodlightActivity.servingStatus field. |
common_data.integration_code | Not available. |
advertiser_id | The FloodlightActivity.advertiserIds field lists all advertisers with access to the floodlight activity under the given partner. |
partner_id | Provided by the user when making a request to the floodlightGroups.floodlightActivities service. |
remarketing_enabled | The FloodlightActivity.remarketingConfigs field lists this configuration for each advertiser with access to the floodlight activity under the given partner. |
ssl_required | FloodlightActivity.sslRequired field. |
InsertionOrder
ERF Field Name | DV360 API Availability |
---|---|
common_data.id | InsertionOrder.insertionOrderId field. |
common_data.name | InsertionOrder.displayName field. |
common_data.active | InsertionOrder.entityStatus field. |
common_data.integration_code | InsertionOrder.integrationDetails.integrationCode field. |
advertiser_id | InsertionOrder.advertiserId field. |
campaign_id | InsertionOrder.campaignId field. |
overall_budget | Not available. Can be calculated using contents of the InsertionOrder.budget.budgetSegments field. |
scheduled_segments | InsertionOrder.budget.budgetSegments field. |
frequency_cap | InsertionOrder.frequencyCap field. |
default_partner_costs | InsertionOrder.partnerCosts field. |
default_target_list | Not available. |
InventorySource
ERF Field Name | DV360 API Availability |
---|---|
id | InventorySource.inventorySourceId field. |
unclassified | Not available. |
inventory_name | InventorySource.displayName field. |
exchange_id | InventorySource.exchange field. |
accessing_advertisers | InventorySource.readWriteAccessors and InventorySource.readAdvertiserIds fields. |
external_id | InventorySource.dealId field. |
min_cpm_micros | InventorySource.rateDetails.rate.nanos field, depending on the value of the InventorySource.rateDetails.inventorySourceRateType field. |
min_cpm_currency_code | InventorySource.rateDetails.rate.currencyCode field. |
LineItem
NegativeKeywordList
ERF Field Name | DV360 API Availability |
---|---|
id | NegativeKeywordList.negativeKeywordListId field. |
name | NegativeKeywordList.displayName field. |
advertiser_id | NegativeKeywordList.advertiserId field. |
Partner
ERF Field Name | DV360 API Availability |
---|---|
common_data.id | Partner.partnerId field. |
common_data.name | Partner.displayName field. |
common_data.active | Partner.entityStatus field. |
common_data.integration_code | Not available. |
currency_code | Partner.generalConfig.currencyCode field. |
exchange_settings | Partner.exchangeConfig.enabledExchanges field. |
default_partner_costs | Not available. |
default_partner_revenue | Not available. |
default_target_list | Not available. |
Pixel
There is no equivalent resource or fields available in Display & Video 360 API.
UniversalChannel
ERF Field Name | DV360 API Availability |
---|---|
id | Channel.channelId field. |
name | Channel.displayName field. |
site_ids | Retrievable through advertisers.channels.sites.list and partners.channels.sites.list methods, depending on the type of owner . |
accessing_advertisers | Not available. |
is_deleted | Not available. |
is_brand_safe_channel | Not available. |
UserList
ERF Field Name | DV360 API Availability |
---|---|
id | FirstPartyAndPartnerAudience.firstPartyAndPartnerAudienceId field. |
name | FirstPartyAndPartnerAudience.displayName field. |
data_partner_id | Not available. |
accessing_advertisers | Not available. |
partner_pricing | Not available. |
advertiser_pricings | Not available. |