openapi: 3.1.0 info: title: Google Campaign Manager Campaign Manager 360 Ads Placements API description: The Campaign Manager 360 API (formerly DoubleClick Campaign Manager) provides programmatic access to manage digital advertising campaigns, ads, placements, and reports. Use this API to automate trafficking workflows, create and manage campaign structures, configure ad placements across publisher sites, and generate comprehensive reporting data for campaign performance analysis. The API supports the full campaign lifecycle from creation through reporting and optimization. version: v4 contact: name: Google Campaign Manager 360 API Support url: https://support.google.com/campaignmanager termsOfService: https://developers.google.com/terms servers: - url: https://dfareporting.googleapis.com/dfareporting/v4 description: Campaign Manager 360 API Production Server security: - OAuth2: - https://www.googleapis.com/auth/dfareporting - https://www.googleapis.com/auth/dfatrafficking tags: - name: Placements description: Manage placements representing ad inventory on publisher sites. Placements define the size, format, pricing, and site location where ads can be served, and generate the ad tags that publishers install on their pages. paths: /userprofiles/{profileId}/placements: get: operationId: listPlacements summary: Google Campaign Manager List Placements description: Retrieves a list of placements, possibly filtered. Results are returned in descending order by last modified time. tags: - Placements security: - OAuth2: - https://www.googleapis.com/auth/dfatrafficking parameters: - $ref: '#/components/parameters/ProfileId' - name: campaignIds in: query required: false description: Select only placements belonging to these campaigns. schema: type: array items: type: string style: form explode: true - name: advertiserIds in: query required: false description: Select only placements belonging to these advertisers. schema: type: array items: type: string style: form explode: true - name: ids in: query required: false description: Select only placements with these IDs. schema: type: array items: type: string style: form explode: true - name: siteIds in: query required: false description: Select only placements associated with these sites. schema: type: array items: type: string style: form explode: true - name: groupIds in: query required: false description: Select only placements belonging to these placement groups. schema: type: array items: type: string style: form explode: true - name: compatibilities in: query required: false description: Select only placements with these compatibilities. schema: type: string enum: - DISPLAY - DISPLAY_INTERSTITIAL - IN_STREAM_VIDEO - IN_STREAM_AUDIO - name: searchString in: query required: false description: Search string for filtering results. schema: type: string - name: sortField in: query required: false schema: type: string enum: - ID - NAME default: ID - name: sortOrder in: query required: false schema: type: string enum: - ASCENDING - DESCENDING default: ASCENDING - $ref: '#/components/parameters/MaxResults' - $ref: '#/components/parameters/PageToken' responses: '200': description: List of placements. content: application/json: schema: $ref: '#/components/schemas/PlacementsListResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' x-microcks-operation: delay: 0 dispatcher: FALLBACK post: operationId: insertPlacement summary: Google Campaign Manager Create a Placement description: Inserts a new placement. The placement is associated with a campaign, site, and directory site, and defines the ad inventory configuration for a specific location on a publisher site. tags: - Placements parameters: - $ref: '#/components/parameters/ProfileId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Placement' example: name: Homepage Leaderboard 728x90 campaignId: '12345678' siteId: '11111111' directorySiteId: '22222222' compatibility: DISPLAY size: id: '12345' width: 728 height: 90 tagFormats: - PLACEMENT_TAG_STANDARD - PLACEMENT_TAG_JAVASCRIPT pricingSchedule: startDate: '2026-01-01' endDate: '2026-03-31' pricingType: PRICING_TYPE_CPM responses: '200': description: Created placement. content: application/json: schema: $ref: '#/components/schemas/Placement' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' x-microcks-operation: delay: 0 dispatcher: FALLBACK /userprofiles/{profileId}/placements/{placementId}: get: operationId: getPlacement summary: Google Campaign Manager Get a Placement description: Gets one placement by ID. tags: - Placements security: - OAuth2: - https://www.googleapis.com/auth/dfatrafficking parameters: - $ref: '#/components/parameters/ProfileId' - $ref: '#/components/parameters/PlacementId' responses: '200': description: Placement details. content: application/json: schema: $ref: '#/components/schemas/Placement' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' x-microcks-operation: delay: 0 dispatcher: FALLBACK put: operationId: updatePlacement summary: Google Campaign Manager Update a Placement description: Updates an existing placement. tags: - Placements parameters: - $ref: '#/components/parameters/ProfileId' - $ref: '#/components/parameters/PlacementId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Placement' responses: '200': description: Updated placement. content: application/json: schema: $ref: '#/components/schemas/Placement' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' x-microcks-operation: delay: 0 dispatcher: FALLBACK patch: operationId: patchPlacement summary: Google Campaign Manager Patch a Placement description: Updates an existing placement. This method supports patch semantics. tags: - Placements parameters: - $ref: '#/components/parameters/ProfileId' - $ref: '#/components/parameters/PlacementId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Placement' responses: '200': description: Patched placement. content: application/json: schema: $ref: '#/components/schemas/Placement' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' x-microcks-operation: delay: 0 dispatcher: FALLBACK /userprofiles/{profileId}/placements/generatetags: post: operationId: generatePlacementTags summary: Google Campaign Manager Generate Placement Tags description: Generates tags for one or more placements. Tags are the code snippets that publishers place on their sites to enable ad serving for the associated placements. tags: - Placements parameters: - $ref: '#/components/parameters/ProfileId' - name: placementIds in: query required: false description: Generate tags for these placements. schema: type: array items: type: string style: form explode: true - name: tagFormats in: query required: false description: Tag formats to generate. schema: type: array items: type: string enum: - PLACEMENT_TAG_STANDARD - PLACEMENT_TAG_IFRAME_JAVASCRIPT - PLACEMENT_TAG_IFRAME_ILAYER - PLACEMENT_TAG_INTERNAL_REDIRECT - PLACEMENT_TAG_JAVASCRIPT - PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT - PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT - PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT - PLACEMENT_TAG_CLICK_COMMANDS - PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH - PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3 - PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_4 - PLACEMENT_TAG_TRACKING - PLACEMENT_TAG_TRACKING_IFRAME - PLACEMENT_TAG_TRACKING_JAVASCRIPT style: form explode: true - name: campaignId in: query required: false description: Generate placements belonging to this campaign. schema: type: string responses: '200': description: Generated placement tags. content: application/json: schema: $ref: '#/components/schemas/PlacementsGenerateTagsResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: schemas: PlacementsGenerateTagsResponse: type: object description: Response containing generated placement tags. properties: placementTags: type: array items: $ref: '#/components/schemas/PlacementTag' example: [] kind: type: string readOnly: true default: dfareporting#placementsGenerateTagsResponse example: example_value ConversionDomainOverride: type: object description: Conversion domain override for a placement. properties: conversionDomains: type: array items: type: object properties: id: type: string name: type: string example: [] LookbackConfiguration: type: object description: Lookback window configuration for attribution. properties: clickDuration: type: integer description: Lookback window, in days, from the last time a given user clicked on one of your ads. example: 10 postImpressionActivitiesDuration: type: integer description: Lookback window, in days, from the last time a given user viewed one of your ads. example: 10 Error: type: object description: Standard Google API error response. properties: error: type: object properties: code: type: integer description: HTTP status code. message: type: string description: Human-readable error message. status: type: string description: Error status string. errors: type: array items: type: object properties: message: type: string domain: type: string reason: type: string example: example_value Placement: type: object description: A Campaign Manager 360 placement. Placements represent ad inventory on publisher sites and define the size, format, pricing, and location where ads can be served. required: - name - campaignId - compatibility - tagFormats properties: id: type: string description: Placement ID. Read-only, auto-generated field. readOnly: true example: abc123 accountId: type: string description: Account ID of this placement. readOnly: true example: '500123' subaccountId: type: string description: Subaccount ID of this placement. readOnly: true example: '500123' advertiserId: type: string description: Advertiser ID of this placement. example: '500123' campaignId: type: string description: Campaign ID of this placement. Required on insert. example: '500123' name: type: string description: Name of this placement. Must be fewer than 512 characters. maxLength: 512 example: Example Title siteId: type: string description: Site ID associated with this placement. Required on insert, read-only after. example: '500123' directorySiteId: type: string description: Directory site ID of this placement. Required on insert, read-only after. example: '500123' externalId: type: string description: External ID for this placement. example: '500123' keyName: type: string description: Key name of this placement, auto-generated from the name. readOnly: true example: example_value placementGroupId: type: string description: ID of the placement group this placement belongs to. example: '500123' compatibility: type: string description: Placement compatibility. Required on insert. enum: - DISPLAY - DISPLAY_INTERSTITIAL - IN_STREAM_VIDEO - IN_STREAM_AUDIO example: DISPLAY size: $ref: '#/components/schemas/Size' additionalSizes: type: array description: Additional sizes associated with this placement. items: $ref: '#/components/schemas/Size' example: [] tagFormats: type: array description: Tag formats to generate for this placement. items: type: string enum: - PLACEMENT_TAG_STANDARD - PLACEMENT_TAG_IFRAME_JAVASCRIPT - PLACEMENT_TAG_IFRAME_ILAYER - PLACEMENT_TAG_INTERNAL_REDIRECT - PLACEMENT_TAG_JAVASCRIPT - PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT - PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT - PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT - PLACEMENT_TAG_CLICK_COMMANDS - PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH - PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3 - PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_4 - PLACEMENT_TAG_TRACKING - PLACEMENT_TAG_TRACKING_IFRAME - PLACEMENT_TAG_TRACKING_JAVASCRIPT example: [] paymentSource: type: string description: Payment source for this placement. Read-only after insert. enum: - PLACEMENT_AGENCY_PAID - PLACEMENT_PUBLISHER_PAID example: PLACEMENT_AGENCY_PAID paymentApproved: type: boolean description: Whether payment was approved for this placement. Read-only for non-publisher-paid placements. readOnly: true example: true status: type: string description: Third-party placement status. enum: - PENDING_REVIEW - PAYMENT_ACCEPTED - PAYMENT_REJECTED - ACKNOWLEDGE_REJECTION - ACKNOWLEDGE_ACCEPTANCE - DRAFT example: PENDING_REVIEW activeStatus: type: string description: Whether this placement is active, inactive, archived, or permanently archived. enum: - PLACEMENT_STATUS_ACTIVE - PLACEMENT_STATUS_INACTIVE - PLACEMENT_STATUS_ARCHIVED - PLACEMENT_STATUS_PERMANENTLY_ARCHIVED example: PLACEMENT_STATUS_ACTIVE pricingSchedule: $ref: '#/components/schemas/PricingSchedule' contentCategoryId: type: string description: ID of the content category assigned to this placement. example: '500123' placementStrategyId: type: string description: ID of the placement strategy assigned to this placement. example: '500123' comment: type: string description: Comments for this placement. example: example_value primary: type: boolean description: Whether this placement is the primary placement in a roadblock. example: true sslRequired: type: boolean description: Whether creatives assigned to this placement must be SSL-compliant. example: true adBlockingOptOut: type: boolean description: Whether this placement opts out of ad blocking. example: true wrappingOptOut: type: boolean description: Whether this placement opts out of tag wrapping. example: true videoSettings: $ref: '#/components/schemas/VideoSettings' videoActiveViewOptOut: type: boolean description: Whether Verification and ActiveView for in-stream video creatives are disabled for this placement. example: true vpaidAdapterChoice: type: string description: VPAID adapter setting for this placement. enum: - DEFAULT - FLASH - HTML5 - BOTH example: DEFAULT lookbackConfiguration: $ref: '#/components/schemas/LookbackConfiguration' tagSetting: $ref: '#/components/schemas/TagSetting' partnerWrappingData: $ref: '#/components/schemas/MeasurementPartnerWrappingData' conversionDomainOverride: $ref: '#/components/schemas/ConversionDomainOverride' kind: type: string description: Identifies what kind of resource this is. Value is always dfareporting#placement. readOnly: true default: dfareporting#placement example: example_value createInfo: $ref: '#/components/schemas/LastModifiedInfo' readOnly: true lastModifiedInfo: $ref: '#/components/schemas/LastModifiedInfo' readOnly: true idDimensionValue: $ref: '#/components/schemas/DimensionValue' readOnly: true advertiserIdDimensionValue: $ref: '#/components/schemas/DimensionValue' readOnly: true campaignIdDimensionValue: $ref: '#/components/schemas/DimensionValue' readOnly: true siteIdDimensionValue: $ref: '#/components/schemas/DimensionValue' readOnly: true directorySiteIdDimensionValue: $ref: '#/components/schemas/DimensionValue' readOnly: true placementGroupIdDimensionValue: $ref: '#/components/schemas/DimensionValue' readOnly: true PlacementsListResponse: type: object description: Placement list response. properties: placements: type: array items: $ref: '#/components/schemas/Placement' example: [] nextPageToken: type: string example: example_value kind: type: string readOnly: true default: dfareporting#placementsListResponse example: example_value PricingSchedulePricingPeriod: type: object description: A pricing period within a pricing schedule. properties: startDate: type: string format: date example: '2026-01-15' endDate: type: string format: date example: '2026-01-15' units: type: string description: Units of this pricing period. example: example_value rateOrCostNanos: type: string description: Rate or cost of this pricing period in nanos. example: example_value pricingComment: type: string description: Comments for this pricing period. example: example_value PricingSchedule: type: object description: Pricing schedule for a placement. properties: startDate: type: string format: date description: Placement start date. example: '2026-01-15' endDate: type: string format: date description: Placement end date. example: '2026-01-15' pricingType: type: string description: Placement pricing type. enum: - PRICING_TYPE_CPM - PRICING_TYPE_CPC - PRICING_TYPE_CPA - PRICING_TYPE_FLAT_RATE_IMPRESSIONS - PRICING_TYPE_FLAT_RATE_CLICKS example: PRICING_TYPE_CPM capCostType: type: string description: Placement cap cost type. enum: - PLANNING_PLACEMENT_CAP_COST_TYPE_NONE - PLANNING_PLACEMENT_CAP_COST_TYPE_MONTHLY - PLANNING_PLACEMENT_CAP_COST_TYPE_CUMULATIVE example: PLANNING_PLACEMENT_CAP_COST_TYPE_NONE pricingPeriods: type: array description: Pricing periods for this placement. items: $ref: '#/components/schemas/PricingSchedulePricingPeriod' example: [] testingStartDate: type: string format: date description: Testing start date of this placement. example: '2026-01-15' PlacementTag: type: object description: A generated placement tag. properties: placementId: type: string description: The placement ID this tag is generated for. example: '500123' tagDatas: type: array description: Tags generated for this placement. items: type: object properties: format: type: string description: Tag format type. impressionTag: type: string description: The tag string for impressions. clickTag: type: string description: The tag string for clicks. adId: type: string creativeId: type: string example: [] LastModifiedInfo: type: object description: Modification timestamp information. properties: time: type: string description: Timestamp of the last change in milliseconds since epoch. example: example_value DimensionValue: type: object description: A dimension value used for filtering and reporting. properties: dimensionName: type: string description: The name of the dimension. example: example_value value: type: string description: The value of the dimension. example: example_value id: type: string description: The ID associated with the value. example: abc123 matchType: type: string description: Match type for filtering. enum: - EXACT - BEGINS_WITH - CONTAINS - WILDCARD_EXPRESSION example: EXACT etag: type: string readOnly: true example: example_value kind: type: string readOnly: true default: dfareporting#dimensionValue example: example_value MeasurementPartnerWrappingData: type: object description: Measurement partner wrapping data for placements. properties: measurementPartner: type: string enum: - NONE - INTEGRAL_AD_SCIENCE - DOUBLE_VERIFY example: NONE tagWrappingMode: type: string enum: - NONE - BLOCKING - MONITORING - MONITORING_READ_ONLY - VIDEO_PIXEL_MONITORING - TRACKING - NON_VPAID_MONITORING - VPAID_MONITORING example: NONE wrappedTag: type: string description: The wrapped tag content. example: example_value linkStatus: type: string enum: - MEASUREMENT_PARTNER_LINK_STATUS_UNSPECIFIED - MEASUREMENT_PARTNER_LINK_ACTIVE - MEASUREMENT_PARTNER_LINK_INACTIVE example: MEASUREMENT_PARTNER_LINK_STATUS_UNSPECIFIED VideoSettings: type: object description: Video settings for in-stream video placements. properties: companionSettings: type: object description: Companion ad settings. properties: companionsDisabled: type: boolean enabledSizes: type: array items: $ref: '#/components/schemas/Size' imageOnly: type: boolean kind: type: string readOnly: true example: example_value transcodeSettings: type: object description: Transcode settings. properties: enabledVideoFormats: type: array items: type: integer kind: type: string readOnly: true example: example_value skippableSettings: type: object description: Skippability settings. properties: skippable: type: boolean skipOffset: type: object properties: offsetSeconds: type: integer offsetPercentage: type: integer progressOffset: type: object properties: offsetSeconds: type: integer offsetPercentage: type: integer kind: type: string readOnly: true example: example_value obaEnabled: type: boolean description: Whether OBA icons are enabled for this placement. example: true obaSettings: type: object properties: iconClickThroughUrl: type: string format: uri iconClickTrackingUrl: type: string format: uri iconViewTrackingUrl: type: string format: uri program: type: string resourceUrl: type: string format: uri size: $ref: '#/components/schemas/Size' xPosition: type: string yPosition: type: string example: example_value orientation: type: string description: Video orientation setting. enum: - ANY - LANDSCAPE - PORTRAIT example: ANY kind: type: string readOnly: true example: example_value TagSetting: type: object description: Tag settings for a placement. properties: additionalKeyValues: type: string description: Additional key-values to append to tags. example: example_value includeClickTracking: type: boolean description: Whether to include click-tracking string in tags. example: true includeClickThroughUrls: type: boolean description: Whether to include click-through URLs in tags. example: https://www.example.com keywordOption: type: string description: Option specifying how keywords are embedded in ad tags. enum: - PLACEHOLDER_WITH_LIST_OF_KEYWORDS - IGNORE - GENERATE_SEPARATE_TAG_FOR_EACH_KEYWORD example: PLACEHOLDER_WITH_LIST_OF_KEYWORDS Size: type: object description: Represents the dimensions of ads, placements, and creatives. properties: id: type: string description: ID of this size. example: abc123 width: type: integer description: Width of this size in pixels. example: 10 height: type: integer description: Height of this size in pixels. example: 10 iab: type: boolean description: Whether this size is an IAB standard size. example: true kind: type: string readOnly: true default: dfareporting#size example: example_value responses: Forbidden: description: Insufficient permissions for the requested operation. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Authentication required or invalid credentials. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Invalid request parameters or malformed request body. content: application/json: schema: $ref: '#/components/schemas/Error' parameters: PageToken: name: pageToken in: query required: false description: Value of the nextPageToken from the previous result page. schema: type: string PlacementId: name: placementId in: path required: true description: Placement ID. schema: type: string pattern: ^\d+$ example: '11223344' MaxResults: name: maxResults in: query required: false description: Maximum number of results to return. Default is 1000. schema: type: integer minimum: 0 maximum: 1000 default: 1000 ProfileId: name: profileId in: path required: true description: The Campaign Manager 360 user profile ID. Each user has a profile for each account they have access to. schema: type: string pattern: ^\d+$ example: '123456' securitySchemes: OAuth2: type: oauth2 description: OAuth 2.0 authentication for accessing Campaign Manager 360 resources. Requires appropriate scopes for trafficking or reporting operations. flows: authorizationCode: authorizationUrl: https://accounts.google.com/o/oauth2/v2/auth tokenUrl: https://oauth2.googleapis.com/token scopes: https://www.googleapis.com/auth/dfareporting: View and manage DoubleClick for Advertisers reports https://www.googleapis.com/auth/dfatrafficking: View and manage your DoubleClick Campaign Manager's (DCM) display ad campaigns externalDocs: description: Campaign Manager 360 API Documentation url: https://developers.google.com/doubleclick-advertisers/rest/v4