Skip to main content

Overview

This source syncs entity metadata from Display & Video 360 using the Display Video API v4 and performance report data using the DoubleClick Bid Manager API v2. Entity streams cover the full DV360 resource hierarchy: partners → advertisers → campaigns, insertion orders, line items, creatives, channels, ad groups, and more, including nested resources such as assigned targeting options and YouTube asset associations. Bid Manager streams (bid_manager_queries, bid_manager_reports, bid_manager_report_rows) list saved queries and their completed reports, and download CSV report data directly from the GCS path returned by the Bid Manager API. Authentication uses a Google Cloud service account JSON key (not user OAuth). Domain-wide delegation is supported via the optional email field. All streams use full table replication. Each entity row includes entity_id, _raw (full API object as JSON), and flattened top-level fields.

Configuration

KeyRequiredDefaultDescription
path_to_credentials_json_filePath to a Google Cloud service account JSON key with access to Display & Video 360.
emailGoogle user to impersonate when using domain-wide delegation. Leave blank for direct service-account access.
partner_idDV360 partner ID. Required for advertisers and any advertiser-scoped stream when advertiser_ids is not set. Not required for partners or bid_manager_* streams. Optional for Test connection (falls back to partners.list without it).
advertiser_idsauto-discoverComma-separated DV360 advertiser IDs. If set, all advertiser-scoped streams use only these IDs and partner_id is not needed for those streams. If omitted, advertiser IDs are discovered by calling advertisers.list under partner_id.
bid_manager_query_idsall queriesComma-separated Bid Manager query IDs. If omitted, all queries from queries.list are used — this can be slow when there are many queries.

Sample configs

DV360 entity streams only (no Bid Manager):
path_to_credentials_json_file: /secrets/dv360_service_account.json
partner_id: "123456"
Scoped to specific advertisers (partner_id not required for advertiser-scoped streams):
path_to_credentials_json_file: /secrets/dv360_service_account.json
advertiser_ids: "111111111,222222222"
Bid Manager streams with explicit query IDs (disable entity streams in catalog):
path_to_credentials_json_file: /secrets/dv360_service_account.json
bid_manager_query_ids: "123456789,987654321"
Full config — DV360 entities + Bid Manager + domain-wide delegation:
path_to_credentials_json_file: /secrets/dv360_service_account.json
email: analyst@company.com
partner_id: "123456"
advertiser_ids: "111111111,222222222"
bid_manager_query_ids: "123456789"

Streams

DV360 entity streams

StreamAPI resource
partnerspartners.list — partners visible to the credential. No partner_id required.
advertisersadvertisers.list — advertisers under partner_id.
campaignsadvertisers.campaigns.list
insertion_ordersadvertisers.insertionOrders.list
line_itemsadvertisers.lineItems.list
ad_groupsadvertisers.adGroups.list
ad_group_adsadvertisers.adGroupAds.list
ad_assetsadvertisers.adAssets.list
creativesadvertisers.creatives.list
channelsadvertisers.channels.list
channel_sitesadvertisers.channels.sites.list — walks each channel per advertiser.
invoicesadvertisers.invoices.list
location_listsadvertisers.locationLists.list
location_list_assigned_locationsadvertisers.locationLists.assignedLocations.list
negative_keyword_listsadvertisers.negativeKeywordLists.list
negative_keyword_list_negative_keywordsadvertisers.negativeKeywordLists.negativeKeywords.list
advertiser_assigned_targeting_optionsadvertisers.targetingTypes.assignedTargetingOptions.list — one request per targeting type enum value.
ad_group_assigned_targeting_optionsadvertisers.adGroups.targetingTypes.assignedTargetingOptions.list — one request per ad group per targeting type.
ad_group_youtube_asset_associationsadvertisers.adGroups.youtubeAssetTypes.youtubeAssetAssociations.list
line_item_assigned_targeting_optionsadvertisers.lineItems.targetingTypes.assignedTargetingOptions.list
line_item_youtube_asset_associationsadvertisers.lineItems.youtubeAssetTypes.youtubeAssetAssociations.list

Bid Manager streams

StreamDescription
bid_manager_queriesSaved Bid Manager query definitions from queries.list.
bid_manager_reportsReport metadata per query from queries.reports.list.
bid_manager_report_rowsFor each completed (DONE) CSV report, streams rows from the GCS path in metadata.googleCloudStoragePath. Each record contains entity_id, _query_id, _report_id, _row_number, and row_data (JSON map of CSV column → value). Reports with status other than DONE, XLSX format, or no GCS path are skipped.
Sample data limits: bid_manager_queries returns at most 25 rows; bid_manager_reports uses only the first query and one report; bid_manager_report_rows returns at most 25 CSV rows from a single report.

Prerequisites

  1. Enable the Display & Video 360 API (displayvideo.googleapis.com) in Google Cloud Console.
  2. For Bid Manager streams, also enable the DoubleClick Bid Manager API (doubleclickbidmanager.googleapis.com) and grant the service account read access to the GCS buckets where report files are delivered.
  3. Create a service account and download its JSON key. Set path_to_credentials_json_file to the local path.
  4. In the DV360 UI, grant the service account access at the partner or advertiser level as appropriate.
  5. If your organization uses domain-wide delegation: configure it in Google Workspace Admin for the service account, include the DV360 and Bid Manager scopes, and set email to the user to impersonate.

OAuth scopes used

ScopeUsed by
https://www.googleapis.com/auth/display-videoAll DV360 entity streams
https://www.googleapis.com/auth/doubleclickbidmanagerBid Manager streams
https://www.googleapis.com/auth/devstorage.read_onlyBid Manager report file download from GCS