GET /v3/additionalfees/{ownerType}/{ownerId} → Campaign.passThroughFeeCards

Overview

Property Value
REST endpoint GET /v3/additionalfees/{ownerType}/{ownerId}
GraphQL query Campaign.passThroughFeeCards(where:)
Return type PassThroughFeeCard connection

Multi-step operations

ownerType (path) GraphQL entry point Notes
campaign campaign(id: ownerId) { passThroughFeeCards(...) } Query from the Campaign entity.
adgroup adGroup(id: ownerId) { campaign { passThroughFeeCards(...) } } Fee cards are exposed on Campaign; filter with targetType: AD_GROUP and ownerId matching the ad group.
advertiser N/A No direct Advertiser.passThroughFeeCards field; use POST /v3/additionalfees/changelog (Campaign.passThroughFeeCards with date filters) or target-specific campaign/ad group cards.

Current-card selection: REST returns a single nullable card. GraphQL returns a connection—select the node whose startDateUtc is active at the query time per applicable product rules.

Request and filter field mapping

REST field GraphQL argument GraphQL type Required Notes
ownerType (path) passThroughFeeCards(where.targetType) PassThroughFeeTargetType! Required campaign → CAMPAIGN, adgroup → AD_GROUP.
ownerId (path) passThroughFeeCards(where.ownerId) String Required Maps to the fee card owner identifier.

Response field mapping

REST response field GraphQL field GraphQL type Nullable Notes
(no REST ID) id Long! Not nullable GraphQL exposes the primary key; REST omits it.
OwnerId target (union member id) ID! Not nullable Owner ID is on the target union member (Campaign, AdGroup, Advertiser, or Partner). Select with inline fragments matching targetType.
OwnerType targetType PassThroughFeeTargetType! Not nullable REST campaign/adgroup → CAMPAIGN/AD_GROUP.
StartDateUtc startDateUtc DateTime! Not nullable N/A
Fees passThroughFees (connection) PassThroughFeesConnection Nullable Nested fees on the card.
Fees[].Description passThroughFees.nodes.description String! Not nullable N/A
Fees[].Amount passThroughFees.nodes.amount Decimal Nullable GraphQL amount (not ×100).
Fees[].FeeType passThroughFees.nodes.type PassThroughFeeType! Not nullable See the AdditionalFees domain page for enum mapping.

Code examples

The following are examples of reading the current fee card for a campaign and for an ad group.

Current campaign fee card (ownerType = campaign → Campaign.passThroughFeeCards(where:)):

REST example

GET /v3/additionalfees/campaign/{campaignId} HTTP/1.1
TTD-Auth: AUTH_TOKEN_PLACEHOLDER

GraphQL example

POST /graphql HTTP/1.1
Content-Type: application/json
TTD-Auth: AUTH_TOKEN_PLACEHOLDER
query CampaignCurrentFeeCard {
  campaign(id: "<campaignId>") {
    id
    passThroughFeeCards(
      first: 5
      where: {
        ownerId: { eq: "<campaignId>" }
        targetType: { eq: CAMPAIGN }
      }
      order: [{ startDateUtc: DESC }]
    ) {
      nodes {
        id
        targetType
        target {
          ... on Campaign {
            id
          }
        }
        startDateUtc
        passThroughFees(first: 20) {
          nodes {
            description
            amount
            type
          }
        }
      }
    }
  }
}

Current ad group fee card (ownerType = adgroup → Campaign.passThroughFeeCards(where:) via parent campaign):

REST example

GET /v3/additionalfees/adgroup/{adGroupId} HTTP/1.1
TTD-Auth: AUTH_TOKEN_PLACEHOLDER

GraphQL example

POST /graphql HTTP/1.1
Content-Type: application/json
TTD-Auth: AUTH_TOKEN_PLACEHOLDER
query AdGroupCurrentFeeCard {
  adGroup(id: "<adGroupId>") {
    id
    campaign {
      passThroughFeeCards(
        first: 5
        where: {
          ownerId: { eq: "<adGroupId>" }
          targetType: { eq: AD_GROUP }
        }
        order: [{ startDateUtc: DESC }]
      ) {
        nodes {
          id
          targetType
          target {
            ... on AdGroup {
              id
            }
          }
          startDateUtc
          passThroughFees(first: 20) {
            nodes {
              description
              amount
              type
            }
          }
        }
      }
    }
  }
}