Documentation
¶
Overview ¶
Package adcp provides helpers for building AdCP MCP servers in Go.
Index ¶
- Variables
- func ActivateSignalResponse(deployments []Deployment, sandbox bool) (*mcp.CallToolResult, any, error)
- func AddTool[In any](server *mcp.Server, name, description string, ...)
- func BuildCreativeResponse(manifest map[string]any, sandbox bool) (*mcp.CallToolResult, any, error)
- func CapabilitiesResponse(data *CapabilitiesData) (*mcp.CallToolResult, any, error)
- func CreateCollectionListResponse(list *CollectionList, authToken string) (*mcp.CallToolResult, any, error)
- func CreativeFormatsResponse(formats []CreativeFormat, sandbox bool) (*mcp.CallToolResult, any, error)
- func DeleteCollectionListResponse(listID string) (*mcp.CallToolResult, any, error)
- func DeliveryResponse(data *DeliveryData) (*mcp.CallToolResult, any, error)
- func Error[T any](code string, opts ErrorOptions) (*mcp.CallToolResult, T, error)
- func Errorf(code string, opts ErrorOptions) (*mcp.CallToolResult, any, error)
- func GetCollectionListResponse(list *CollectionList, collections []ResolvedCollection, ...) (*mcp.CallToolResult, any, error)
- func GovernanceResponse(accounts []GovernanceResult) (*mcp.CallToolResult, any, error)
- func ListCollectionListsResponse(lists []CollectionList, pagination *PaginationResponse) (*mcp.CallToolResult, any, error)
- func ListCreativesResponse(creatives []map[string]any) (*mcp.CallToolResult, any, error)
- func LogEventResponse(received, processed int, matchQuality float64, sandbox bool) (*mcp.CallToolResult, any, error)
- func MediaBuyResponse(data *MediaBuyData) (*mcp.CallToolResult, any, error)
- func MediaBuysResponse(mediaBuys []MediaBuyData, sandbox bool) (*mcp.CallToolResult, any, error)
- func NewError(code string, opts ErrorOptions) error
- func PerformanceFeedbackResponse(sandbox bool) (*mcp.CallToolResult, any, error)
- func PreviewCreativeResponse(creativeID, name, previewURL string, width, height int) (*mcp.CallToolResult, any, error)
- func ProductsResponse(data *ProductsData) (*mcp.CallToolResult, any, error)
- func Register(server *mcp.Server, cfg Config)
- func RegisterTestController(server *mcp.Server, store *TestControllerStore)
- func Result(data any, summary string) (*mcp.CallToolResult, any, error)
- func Serve(createAgent func() *mcp.Server, opts ...ServeOption) error
- func SignalsResponse(signals []Signal, sandbox bool) (*mcp.CallToolResult, any, error)
- func SyncAccountsResponse(accounts []AccountResult, sandbox bool) (*mcp.CallToolResult, any, error)
- func SyncCatalogsResponse(catalogs []CatalogResult, sandbox bool) (*mcp.CallToolResult, any, error)
- func SyncCreativesResponse(creatives []CreativeResult, sandbox bool) (*mcp.CallToolResult, any, error)
- func SyncEventSourcesResponse(sources []EventSourceResult, sandbox bool) (*mcp.CallToolResult, any, error)
- func UpdateCollectionListResponse(list *CollectionList) (*mcp.CallToolResult, any, error)
- type ADCPVersion
- type Account
- type AccountCapabilities
- type AccountInput
- type AccountReference
- type AccountResult
- type AccountSetup
- type AccountStatus
- type ActionSource
- type ActivateSignalRequest
- type ActivationKey
- type AdcpError
- type AdcpProtocol
- type AdjustmentKind
- type AdvertiserIndustry
- type AgeRestrictionCaps
- type AgeVerificationMethod
- type ArtifactWebhookPayload
- type AssessmentStatus
- type AssetContentType
- type AssetSlot
- type AttributionModel
- type AttributionWindow
- type AttributionWindowOption
- type AudienceConstraints
- type AudienceSource
- type AudienceStatus
- type AudienceTargetingCaps
- type AuthScheme
- type AvailableMetric
- type BaseCollectionSource
- type BillingMeasurement
- type BrandAgentType
- type BrandCapabilities
- type BrandReference
- type BuildCreativeRequest
- type BuildCreativeResult
- type CanceledBy
- type CancellationFee
- type CancellationPolicy
- type CapabilitiesData
- type Catalog
- type CatalogAction
- type CatalogInput
- type CatalogItemStatus
- type CatalogResult
- type CatalogType
- type Channels
- type CheckGovernanceRequest
- type CheckGovernanceResponse
- type CloudStorageProtocol
- type CoBrandingRequirement
- type CollectionCadence
- type CollectionList
- type CollectionListChangedWebhook
- type CollectionListFilters
- type CollectionListRef
- type CollectionPagination
- type CollectionRelationship
- type CollectionStatus
- type ComplianceTestingCapabilities
- type ComplyTestControllerRequest
- type ComplyTestControllerResponse
- type Config
- type ConsentBasis
- type ContentIDType
- type ContentRating
- type ContentRatingSystem
- type ContentStandardsCaps
- type ControllerError
- type ConversionTrackingCaps
- type CreateCollectionListRequest
- type CreateCollectionListResult
- type CreateMediaBuyError
- type CreateMediaBuyRequest
- type CreateMediaBuyResponse
- type CreateMediaBuySubmitted
- type CreateMediaBuySuccess
- type CreativeAction
- type CreativeAgentCapability
- type CreativeApprovalStatus
- type CreativeAsset
- type CreativeBrief
- type CreativeCapabilities
- type CreativeConsumption
- type CreativeFilters
- type CreativeFormat
- type CreativeIdentifierType
- type CreativeInput
- type CreativeListItem
- type CreativeManifest
- type CreativeQuality
- type CreativeResult
- type CreativeSortField
- type CreativeSpecsCaps
- type CreativeStatus
- type DaastTrackingEvent
- type DaastVersion
- type DataSubjectContestation
- type DayOfWeek
- type DelegationAuthority
- type DeleteCollectionListRequest
- type DeliveryData
- type DeliveryTotals
- type DeliveryType
- type DemographicSystem
- type Deployment
- type DerivativeType
- type DestinationInput
- type DevicePlatform
- type DeviceType
- type DigitalSourceType
- type DimensionUnit
- type DisclosurePersistence
- type DisclosurePosition
- type DistanceUnit
- type DistributionID
- type DistributionIdentifierType
- type Duration
- type EmptyInput
- type ErrorCode
- type ErrorOptions
- type EscalationSeverity
- type Event
- type EventSourceInput
- type EventSourceResult
- type EventSourceSetup
- type EventType
- type Exclusivity
- type FeatureRange
- type FeedFormat
- type FeedbackSource
- type ForecastMethod
- type ForecastRangeUnit
- type ForecastableMetric
- type FormatIDParameter
- type FormatRef
- type FrequencyCapScope
- type GenreTaxonomy
- type GeoLevel
- type GeoMetrosCaps
- type GeoPostalAreasCaps
- type GeoProximityCaps
- type GetAdcpCapabilitiesRequest
- type GetAdcpCapabilitiesResponse
- type GetCollectionListRequest
- type GetCollectionListResult
- type GetMediaBuyDeliveryRequest
- type GetMediaBuyDeliveryResponse
- type GetMediaBuysRequest
- type GetMediaBuysResponse
- type GetPlanAuditLogsRequest
- type GetPlanAuditLogsResponse
- type GetProductsRequest
- type GetProductsResponse
- type GetSignalsRequest
- type GetSignalsResponse
- type GovernanceAccount
- type GovernanceAccountInput
- type GovernanceAgent
- type GovernanceCapabilities
- type GovernanceDomain
- type GovernanceFeature
- type GovernanceMode
- type GovernancePhase
- type GovernanceResult
- type HTTPMethod
- type HistoryEntryType
- type HumanOverride
- type IdempotencyCaps
- type IdentifierTypes
- type IdentityCapabilities
- type IdentityCompromiseNotification
- type IdentityKeyOrigins
- type IndustryIdentifier
- type InstallmentStatus
- type JavascriptModuleType
- type KeywordMatchCaps
- type LandingPageRequirement
- type ListAccountsRequest
- type ListAccountsResponse
- type ListCollectionListsRequest
- type ListCollectionListsResult
- type ListCreativeFormatsRequest
- type ListCreativeFormatsResponse
- type ListCreativesRequest
- type ListScenariosSuccess
- type LogEventRequest
- type LogEventResult
- type MCPWebhookPayload
- type MakegoodPolicy
- type MakegoodRemedy
- type MarkdownFlavor
- type MatchIDType
- type MatchingLatencyRange
- type MeasurementTerms
- type MeasurementWindow
- type MediaBuyCapabilities
- type MediaBuyData
- type MediaBuyDelivery
- type MediaBuyExecution
- type MediaBuyListItem
- type MediaBuyStatus
- type MetricType
- type MetroSystem
- type NotificationType
- type OutcomeType
- type Pacing
- type Package
- type PackageDelivery
- type PackageInput
- type PaginationRequest
- type PaginationResponse
- type PerformanceFeedback
- type PerformanceStandard
- type PerformanceStandardMetric
- type Plan
- type PlanBudget
- type PlanBudgetAllocation
- type PlanChannelMixTarget
- type PlanChannels
- type PlanDelegation
- type PlanDelegationBudget
- type PlanFlight
- type PlanPortfolio
- type PlanPortfolioBudgetCap
- type PlanValidationError
- type PolicyCategory
- type PolicyCategoryDefinition
- type PolicyEnforcement
- type PolicyEntry
- type PortfolioCaps
- type PostalSystem
- type Preview
- type PreviewCreativeRequest
- type PreviewOutputFormat
- type PreviewRender
- type PreviewResult
- type PricingModel
- type PricingOption
- type Product
- type ProductionQuality
- type ProductsData
- type PropertyListChangedWebhook
- type PropertyType
- type ProposalStatus
- type ProvidePerformanceFeedbackError
- type ProvidePerformanceFeedbackRequest
- type ProvidePerformanceFeedbackResponse
- type ProvidePerformanceFeedbackSuccess
- type PublisherIdentifierTypes
- type PublisherPropertySelector
- type PurchaseType
- type ReachUnit
- type Render
- type ReportPlanOutcomeRequest
- type ReportPlanOutcomeResponse
- type ReportedSpend
- type ReportingFrequency
- type ReportingPeriod
- type RequestSigningCapabilities
- type ResolvedCollection
- type ResponseType
- type RestrictedAttribute
- type RevocationNotification
- type RightType
- type RightUse
- type SICapabilities
- type SIEndpoint
- type SITransport
- type ServeOption
- type SiSessionStatus
- type Signal
- type SignalCatalogType
- type SignalFilters
- type SignalID
- type SignalPricing
- type SignalSource
- type SignalValueType
- type SignalsCapabilities
- type SimulateBudgetParams
- type SimulateDeliveryParams
- type SimulationResult
- type SimulationSuccess
- type SortDirection
- type SortMetric
- type SpecialCategory
- type Specialism
- type StateTransition
- type StateTransitionSuccess
- type SyncAccountsRequest
- type SyncCatalogsRequest
- type SyncCreativesRequest
- type SyncEventSourcesRequest
- type SyncGovernanceError
- type SyncGovernanceRequest
- type SyncGovernanceResponse
- type SyncGovernanceSuccess
- type SyncPlansRequest
- type SyncPlansResponse
- type TalentRole
- type Targeting
- type TargetingCaps
- type TaskStatus
- type TaskType
- type TestControllerError
- type TestControllerStore
- type TransportMode
- type TrustedMatchCaps
- type UIDType
- type URLAssetType
- type UniversalMacro
- type UpdateCollectionListRequest
- type UpdateFrequency
- type ValidationMode
- type VastTrackingEvent
- type VastVersion
- type VendorPricingOption
- type ViewabilityStandard
- type WcagLevel
- type WebhookResponseType
- type WebhookSecurityMethod
- type WebhookSigningCapabilities
Constants ¶
This section is empty.
Variables ¶
var AnnexIIIPolicyIDs = []string{
"eu_ai_act_annex_iii",
}
AnnexIIIPolicyIDs are policy IDs whose presence on a plan requires plan.human_review_required = true (EU AI Act Annex III high-risk categories).
var RegulatedHumanReviewCategories = []string{
"fair_housing",
"fair_lending",
"fair_employment",
"pharmaceutical_advertising",
}
RegulatedHumanReviewCategories are policy categories whose presence on a plan requires plan.human_review_required = true under the schema's if/then invariant. These regimes are governed by GDPR Art 22 and EU AI Act Annex III, which prohibit solely automated decisions affecting data subjects.
Functions ¶
func ActivateSignalResponse ¶
func ActivateSignalResponse(deployments []Deployment, sandbox bool) (*mcp.CallToolResult, any, error)
ActivateSignalResponse builds an activate_signal response.
func AddTool ¶
func AddTool[In any](server *mcp.Server, name, description string, handler func(ctx context.Context, req *mcp.CallToolRequest, input In) (*mcp.CallToolResult, any, error))
AddTool registers an MCP tool with typed input and output, using a schema that allows additional properties. This is the recommended way to register AdCP tools — it gives you compile-time type safety on both input and output while accepting protocol-level fields (like adcp_major_version) that the storyboard runner sends.
Usage:
type GetProductsInput struct {
Brief string `json:"brief,omitempty"`
Account any `json:"account,omitempty"`
}
adcp.AddTool(server, "get_products", "Returns available products",
func(ctx context.Context, req *mcp.CallToolRequest, input GetProductsInput) (*mcp.CallToolResult, any, error) {
return adcp.ProductsResult(&adcp.ProductsData{Products: products, Sandbox: true})
})
func BuildCreativeResponse ¶
BuildCreativeResponse builds a build_creative response.
func CapabilitiesResponse ¶
func CapabilitiesResponse(data *CapabilitiesData) (*mcp.CallToolResult, any, error)
CapabilitiesResponse builds a get_adcp_capabilities response.
func CreateCollectionListResponse ¶
func CreateCollectionListResponse(list *CollectionList, authToken string) (*mcp.CallToolResult, any, error)
CreateCollectionListResponse builds a create_collection_list response.
func CreativeFormatsResponse ¶
func CreativeFormatsResponse(formats []CreativeFormat, sandbox bool) (*mcp.CallToolResult, any, error)
CreativeFormatsResponse builds a list_creative_formats response.
func DeleteCollectionListResponse ¶
func DeleteCollectionListResponse(listID string) (*mcp.CallToolResult, any, error)
DeleteCollectionListResponse builds a delete_collection_list response.
func DeliveryResponse ¶
func DeliveryResponse(data *DeliveryData) (*mcp.CallToolResult, any, error)
DeliveryResponse builds a get_media_buy_delivery response.
func Error ¶
func Error[T any](code string, opts ErrorOptions) (*mcp.CallToolResult, T, error)
Error builds an L3-compliant AdCP error response. Returns isError: true + structuredContent.adcp_error.
func Errorf ¶
func Errorf(code string, opts ErrorOptions) (*mcp.CallToolResult, any, error)
Errorf is a convenience wrapper for Error that returns (*mcp.CallToolResult, any, error), matching the adcp.AddTool handler signature without requiring a type parameter.
func GetCollectionListResponse ¶
func GetCollectionListResponse(list *CollectionList, collections []ResolvedCollection, pagination *PaginationResponse) (*mcp.CallToolResult, any, error)
GetCollectionListResponse builds a get_collection_list response.
func GovernanceResponse ¶
func GovernanceResponse(accounts []GovernanceResult) (*mcp.CallToolResult, any, error)
GovernanceResponse builds a sync_governance response.
func ListCollectionListsResponse ¶
func ListCollectionListsResponse(lists []CollectionList, pagination *PaginationResponse) (*mcp.CallToolResult, any, error)
ListCollectionListsResponse builds a list_collection_lists response.
func ListCreativesResponse ¶
ListCreativesResponse builds a list_creatives response with required query_summary and pagination fields.
func LogEventResponse ¶
func LogEventResponse(received, processed int, matchQuality float64, sandbox bool) (*mcp.CallToolResult, any, error)
LogEventResponse builds a log_event response. matchQuality is the attribution match quality score (0.0-1.0). Use 0 to omit.
func MediaBuyResponse ¶
func MediaBuyResponse(data *MediaBuyData) (*mcp.CallToolResult, any, error)
MediaBuyResponse builds a create_media_buy response.
func MediaBuysResponse ¶
func MediaBuysResponse(mediaBuys []MediaBuyData, sandbox bool) (*mcp.CallToolResult, any, error)
MediaBuysResponse builds a get_media_buys response.
func NewError ¶
func NewError(code string, opts ErrorOptions) error
NewError creates an error that Register handlers can return to produce a typed AdCP error response instead of a generic INTERNAL_ERROR.
Usage in a handler:
return nil, adcp.NewError("BUDGET_TOO_LOW", adcp.ErrorOptions{
Message: "Budget $500 is below the $1,000 minimum for video",
Field: "budget",
})
func PerformanceFeedbackResponse ¶
func PerformanceFeedbackResponse(sandbox bool) (*mcp.CallToolResult, any, error)
PerformanceFeedbackResponse builds a provide_performance_feedback response.
func PreviewCreativeResponse ¶
func PreviewCreativeResponse(creativeID, name, previewURL string, width, height int) (*mcp.CallToolResult, any, error)
PreviewCreativeResponse builds a preview_creative response for a single creative.
func ProductsResponse ¶
func ProductsResponse(data *ProductsData) (*mcp.CallToolResult, any, error)
ProductsResponse builds a get_products response.
func Register ¶
Register wires AdCP tool handlers onto an MCP server. Only tools with registered handlers are exposed. supported_protocols is auto-detected.
IdempotencyReplayTTL is required (see Config docs). Register panics at startup if it is unset or out of range — AdCP 3.0 requires sellers to declare adcp.idempotency.replay_ttl_seconds in capabilities.
Account resolution: if ResolveAccount is set, handlers that accept an AccountReference receive the resolved account. If the account is not found, the SDK returns ACCOUNT_NOT_FOUND automatically.
Error handling: handlers can return adcp.NewError("CODE", opts) for typed AdCP errors. Plain errors become INTERNAL_ERROR.
Usage:
adcp.Register(server, adcp.Config{
IdempotencyReplayTTL: 24 * time.Hour,
ResolveAccount: func(ctx context.Context, ref adcp.AccountReference) (any, error) {
return db.FindAccount(ref.Brand.Domain, ref.Operator)
},
GetProducts: func(ctx context.Context, acct any, req *adcp.GetProductsRequest) (*adcp.ProductsData, error) {
return &adcp.ProductsData{Products: catalog.Query(req.Brief)}, nil
},
CreateMediaBuy: func(ctx context.Context, acct any, req *adcp.CreateMediaBuyRequest) (*adcp.MediaBuyData, error) {
return oms.BookCampaign(req)
},
})
func RegisterTestController ¶
func RegisterTestController(server *mcp.Server, store *TestControllerStore)
RegisterTestController adds the comply_test_controller tool to an MCP server. This tool allows arbitrary state mutations for compliance testing and MUST NOT be registered in production. Gate registration on a sandbox flag in your agent.
func Result ¶
Result builds a generic tool response with StructuredContent. Returns 3 values for use with adcp.AddTool handlers.
func Serve ¶
func Serve(createAgent func() *mcp.Server, opts ...ServeOption) error
Serve starts an HTTP server that serves an AdCP MCP agent.
createAgent is called to get the MCP server instance. The handler uses StreamableHTTPHandler from the Go MCP SDK.
server := mcp.NewServer(...)
// add tools...
adcp.Serve(func() *mcp.Server { return server })
func SignalsResponse ¶
SignalsResponse builds a get_signals response.
func SyncAccountsResponse ¶
func SyncAccountsResponse(accounts []AccountResult, sandbox bool) (*mcp.CallToolResult, any, error)
SyncAccountsResponse builds a sync_accounts response.
func SyncCatalogsResponse ¶
func SyncCatalogsResponse(catalogs []CatalogResult, sandbox bool) (*mcp.CallToolResult, any, error)
SyncCatalogsResponse builds a sync_catalogs response.
func SyncCreativesResponse ¶
func SyncCreativesResponse(creatives []CreativeResult, sandbox bool) (*mcp.CallToolResult, any, error)
SyncCreativesResponse builds a sync_creatives response.
func SyncEventSourcesResponse ¶
func SyncEventSourcesResponse(sources []EventSourceResult, sandbox bool) (*mcp.CallToolResult, any, error)
SyncEventSourcesResponse builds a sync_event_sources response.
func UpdateCollectionListResponse ¶
func UpdateCollectionListResponse(list *CollectionList) (*mcp.CallToolResult, any, error)
UpdateCollectionListResponse builds an update_collection_list response.
Types ¶
type ADCPVersion ¶
type ADCPVersion struct {
MajorVersions []int `json:"major_versions"`
Idempotency IdempotencyCaps `json:"idempotency"`
}
type Account ¶
type Account struct {
AccountID string `json:"account_id"` // Unique identifier for this account
Name string `json:"name"` // Human-readable account name (e.g., 'Acme', 'Acme c/o Pinnacle')
Advertiser string `json:"advertiser,omitempty"` // The advertiser whose rates apply to this account
BillingProxy string `json:"billing_proxy,omitempty"` // Optional intermediary who receives invoices on behalf of the advertiser (e.g., a
Status string `json:"status"` // Account lifecycle status. See the Accounts Protocol overview for the operations
Brand *BrandReference `json:"brand,omitempty"` // Brand reference identifying the advertiser
Operator string `json:"operator,omitempty"` // Domain of the entity operating this account. When the brand operates directly, t
Billing string `json:"billing,omitempty"` // Who is invoiced on this account. operator: seller invoices the operator (agency
BillingEntity any `json:"billing_entity,omitempty"` // Business entity details for the party responsible for payment. Contains the lega
RateCard string `json:"rate_card,omitempty"` // Identifier for the rate card applied to this account
PaymentTerms string `json:"payment_terms,omitempty"` // Payment terms agreed for this account. Binding for all invoices when the account
CreditLimit any `json:"credit_limit,omitempty"` // Maximum outstanding balance allowed
Setup any `json:"setup,omitempty"` // Present when status is 'pending_approval'. Contains next steps for completing ac
AccountScope string `json:"account_scope,omitempty"` // How the seller scoped this account. operator: shared across all brands for this
GovernanceAgents []any `json:"governance_agents,omitempty"` // Governance agent endpoints registered on this account. Authentication credential
ReportingBucket any `json:"reporting_bucket,omitempty"` // Cloud storage bucket where the seller delivers offline reporting files for this
Sandbox *bool `json:"sandbox,omitempty"` // When true, this is a sandbox account — no real platform calls, no real spend. Fo
Ext any `json:"ext,omitempty"`
}
Account — A billing account representing the relationship between a buyer and seller. The account determines r
type AccountCapabilities ¶
type AccountCapabilities struct {
RequireOperatorAuth *bool `json:"require_operator_auth,omitempty"`
AuthorizationEndpoint string `json:"authorization_endpoint,omitempty"`
SupportedBilling []string `json:"supported_billing"`
RequiredForProducts *bool `json:"required_for_products,omitempty"`
AccountFinancials *bool `json:"account_financials,omitempty"`
Sandbox *bool `json:"sandbox,omitempty"`
}
AccountCapabilities describes how accounts are established and billed. supported_billing is required when present.
type AccountInput ¶
type AccountInput struct {
Brand *BrandReference `json:"brand,omitempty"`
Operator string `json:"operator,omitempty"`
Billing string `json:"billing,omitempty"`
PaymentTerms string `json:"payment_terms,omitempty"`
AccountID string `json:"account_id,omitempty"`
Sandbox bool `json:"sandbox,omitempty"`
}
AccountInput is a single account in a sync_accounts request.
type AccountReference ¶
type AccountReference struct {
AccountID string `json:"account_id,omitempty"`
Brand *BrandReference `json:"brand,omitempty"`
Operator string `json:"operator,omitempty"`
Sandbox bool `json:"sandbox,omitempty"`
}
type AccountResult ¶
type AccountResult struct {
AccountID string `json:"account_id"`
Brand *BrandReference `json:"brand,omitempty"`
Operator string `json:"operator,omitempty"`
Action string `json:"action"`
Status string `json:"status"`
AccountScope string `json:"account_scope,omitempty"`
Setup *AccountSetup `json:"setup,omitempty"`
PaymentTerms string `json:"payment_terms,omitempty"`
Billing string `json:"billing,omitempty"`
}
type AccountSetup ¶
type AccountStatus ¶
type AccountStatus = string
AccountStatus — Advertiser account status in the account lifecycle
const ( AccountStatusActive AccountStatus = "active" AccountStatusPendingApproval AccountStatus = "pending_approval" AccountStatusRejected AccountStatus = "rejected" AccountStatusPaymentRequired AccountStatus = "payment_required" AccountStatusSuspended AccountStatus = "suspended" AccountStatusClosed AccountStatus = "closed" )
type ActionSource ¶
type ActionSource = string
ActionSource — Where the conversion event originated
const ( ActionSourceWebsite ActionSource = "website" ActionSourceApp ActionSource = "app" ActionSourceOffline ActionSource = "offline" ActionSourcePhoneCall ActionSource = "phone_call" ActionSourceChat ActionSource = "chat" ActionSourceEmail ActionSource = "email" ActionSourceInStore ActionSource = "in_store" ActionSourceSystemGenerated ActionSource = "system_generated" ActionSourceOther ActionSource = "other" )
type ActivateSignalRequest ¶
type ActivateSignalRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
Action string `json:"action,omitempty"` // Whether to activate or deactivate the signal. Deactivating removes the segment f
SignalAgentSegmentID string `json:"signal_agent_segment_id"` // The universal identifier for the signal to activate
Destinations []DestinationInput `json:"destinations"` // Target destination(s) for activation. If the authenticated caller matches one of
PricingOptionID string `json:"pricing_option_id,omitempty"` // The pricing option selected from the signal's pricing_options in the get_signals
Account *AccountReference `json:"account,omitempty"` // Account for this activation. Associates with a commercial relationship establish
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for this request. Prevents duplicate activations on
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ActivateSignalRequest — Request parameters for activating or deactivating a signal on deployment targets
type ActivationKey ¶
type AdcpProtocol ¶
type AdcpProtocol = string
AdcpProtocol — AdCP protocols for task categorization — referenced by tasks-list-request, webho
const ( AdcpProtocolMediaBuy AdcpProtocol = "media-buy" AdcpProtocolSignals AdcpProtocol = "signals" AdcpProtocolGovernance AdcpProtocol = "governance" AdcpProtocolCreative AdcpProtocol = "creative" AdcpProtocolBrand AdcpProtocol = "brand" AdcpProtocolSponsoredIntelligence AdcpProtocol = "sponsored-intelligence" )
type AdjustmentKind ¶
type AdjustmentKind = string
AdjustmentKind — Categorizes how a price adjustment affects the transaction
const ( AdjustmentKindFee AdjustmentKind = "fee" AdjustmentKindDiscount AdjustmentKind = "discount" AdjustmentKindCommission AdjustmentKind = "commission" AdjustmentKindSettlement AdjustmentKind = "settlement" )
type AdvertiserIndustry ¶
type AdvertiserIndustry = string
AdvertiserIndustry — Standardized advertiser industry classification. Top-level categories classify t
const ( AdvertiserIndustryAutomotive AdvertiserIndustry = "automotive" AdvertiserIndustryAutomotiveElectricVehicles AdvertiserIndustry = "automotive.electric_vehicles" AdvertiserIndustryAutomotivePartsAccessories AdvertiserIndustry = "automotive.parts_accessories" AdvertiserIndustryAutomotiveLuxury AdvertiserIndustry = "automotive.luxury" AdvertiserIndustryBeautyCosmetics AdvertiserIndustry = "beauty_cosmetics" AdvertiserIndustryBeautyCosmeticsSkincare AdvertiserIndustry = "beauty_cosmetics.skincare" AdvertiserIndustryBeautyCosmeticsFragrance AdvertiserIndustry = "beauty_cosmetics.fragrance" AdvertiserIndustryBeautyCosmeticsHaircare AdvertiserIndustry = "beauty_cosmetics.haircare" AdvertiserIndustryCannabis AdvertiserIndustry = "cannabis" AdvertiserIndustryCpg AdvertiserIndustry = "cpg" AdvertiserIndustryCpgPersonalCare AdvertiserIndustry = "cpg.personal_care" AdvertiserIndustryCpgHousehold AdvertiserIndustry = "cpg.household" AdvertiserIndustryDating AdvertiserIndustry = "dating" AdvertiserIndustryEducation AdvertiserIndustry = "education" AdvertiserIndustryEducationHigherEducation AdvertiserIndustry = "education.higher_education" AdvertiserIndustryEducationOnlineLearning AdvertiserIndustry = "education.online_learning" AdvertiserIndustryEducationK12 AdvertiserIndustry = "education.k12" AdvertiserIndustryEnergyUtilities AdvertiserIndustry = "energy_utilities" AdvertiserIndustryEnergyUtilitiesRenewable AdvertiserIndustry = "energy_utilities.renewable" AdvertiserIndustryFashionApparel AdvertiserIndustry = "fashion_apparel" AdvertiserIndustryFashionApparelLuxury AdvertiserIndustry = "fashion_apparel.luxury" AdvertiserIndustryFashionApparelSportswear AdvertiserIndustry = "fashion_apparel.sportswear" AdvertiserIndustryFinance AdvertiserIndustry = "finance" AdvertiserIndustryFinanceBanking AdvertiserIndustry = "finance.banking" AdvertiserIndustryFinanceInsurance AdvertiserIndustry = "finance.insurance" AdvertiserIndustryFinanceInvestment AdvertiserIndustry = "finance.investment" AdvertiserIndustryFinanceCryptocurrency AdvertiserIndustry = "finance.cryptocurrency" AdvertiserIndustryFoodBeverage AdvertiserIndustry = "food_beverage" AdvertiserIndustryFoodBeverageAlcohol AdvertiserIndustry = "food_beverage.alcohol" AdvertiserIndustryFoodBeverageRestaurants AdvertiserIndustry = "food_beverage.restaurants" AdvertiserIndustryFoodBeveragePackagedGoods AdvertiserIndustry = "food_beverage.packaged_goods" AdvertiserIndustryGamblingBetting AdvertiserIndustry = "gambling_betting" AdvertiserIndustryGamblingBettingSportsBetting AdvertiserIndustry = "gambling_betting.sports_betting" AdvertiserIndustryGamblingBettingCasino AdvertiserIndustry = "gambling_betting.casino" AdvertiserIndustryGaming AdvertiserIndustry = "gaming" AdvertiserIndustryGamingMobile AdvertiserIndustry = "gaming.mobile" AdvertiserIndustryGamingConsolePc AdvertiserIndustry = "gaming.console_pc" AdvertiserIndustryGamingEsports AdvertiserIndustry = "gaming.esports" AdvertiserIndustryGovernmentNonprofit AdvertiserIndustry = "government_nonprofit" AdvertiserIndustryGovernmentNonprofitPolitical AdvertiserIndustry = "government_nonprofit.political" AdvertiserIndustryGovernmentNonprofitCharity AdvertiserIndustry = "government_nonprofit.charity" AdvertiserIndustryHealthcare AdvertiserIndustry = "healthcare" AdvertiserIndustryHealthcarePharmaceutical AdvertiserIndustry = "healthcare.pharmaceutical" AdvertiserIndustryHealthcareMedicalDevices AdvertiserIndustry = "healthcare.medical_devices" AdvertiserIndustryHealthcareWellness AdvertiserIndustry = "healthcare.wellness" AdvertiserIndustryHomeGarden AdvertiserIndustry = "home_garden" AdvertiserIndustryHomeGardenFurniture AdvertiserIndustry = "home_garden.furniture" AdvertiserIndustryHomeGardenHomeImprovement AdvertiserIndustry = "home_garden.home_improvement" AdvertiserIndustryMediaEntertainment AdvertiserIndustry = "media_entertainment" AdvertiserIndustryMediaEntertainmentPodcasts AdvertiserIndustry = "media_entertainment.podcasts" AdvertiserIndustryMediaEntertainmentMusic AdvertiserIndustry = "media_entertainment.music" AdvertiserIndustryMediaEntertainmentFilmTv AdvertiserIndustry = "media_entertainment.film_tv" AdvertiserIndustryMediaEntertainmentPublishing AdvertiserIndustry = "media_entertainment.publishing" AdvertiserIndustryMediaEntertainmentLiveEvents AdvertiserIndustry = "media_entertainment.live_events" AdvertiserIndustryPets AdvertiserIndustry = "pets" AdvertiserIndustryProfessionalServices AdvertiserIndustry = "professional_services" AdvertiserIndustryProfessionalServicesLegal AdvertiserIndustry = "professional_services.legal" AdvertiserIndustryProfessionalServicesConsulting AdvertiserIndustry = "professional_services.consulting" AdvertiserIndustryRealEstate AdvertiserIndustry = "real_estate" AdvertiserIndustryRealEstateResidential AdvertiserIndustry = "real_estate.residential" AdvertiserIndustryRealEstateCommercial AdvertiserIndustry = "real_estate.commercial" AdvertiserIndustryRecruitmentHr AdvertiserIndustry = "recruitment_hr" AdvertiserIndustryRetail AdvertiserIndustry = "retail" AdvertiserIndustryRetailEcommerce AdvertiserIndustry = "retail.ecommerce" AdvertiserIndustryRetailDepartmentStores AdvertiserIndustry = "retail.department_stores" AdvertiserIndustrySportsFitness AdvertiserIndustry = "sports_fitness" AdvertiserIndustrySportsFitnessEquipment AdvertiserIndustry = "sports_fitness.equipment" AdvertiserIndustrySportsFitnessTeamsLeagues AdvertiserIndustry = "sports_fitness.teams_leagues" AdvertiserIndustryTechnology AdvertiserIndustry = "technology" AdvertiserIndustryTechnologySoftware AdvertiserIndustry = "technology.software" AdvertiserIndustryTechnologyHardware AdvertiserIndustry = "technology.hardware" AdvertiserIndustryTechnologyAiMl AdvertiserIndustry = "technology.ai_ml" AdvertiserIndustryTelecom AdvertiserIndustry = "telecom" AdvertiserIndustryTelecomMobileCarriers AdvertiserIndustry = "telecom.mobile_carriers" AdvertiserIndustryTelecomInternetProviders AdvertiserIndustry = "telecom.internet_providers" AdvertiserIndustryTransportationLogistics AdvertiserIndustry = "transportation_logistics" AdvertiserIndustryTravelHospitality AdvertiserIndustry = "travel_hospitality" AdvertiserIndustryTravelHospitalityAirlines AdvertiserIndustry = "travel_hospitality.airlines" AdvertiserIndustryTravelHospitalityHotels AdvertiserIndustry = "travel_hospitality.hotels" AdvertiserIndustryTravelHospitalityCruise AdvertiserIndustry = "travel_hospitality.cruise" AdvertiserIndustryTravelHospitalityTourism AdvertiserIndustry = "travel_hospitality.tourism" )
type AgeRestrictionCaps ¶
type AgeVerificationMethod ¶
type AgeVerificationMethod = string
AgeVerificationMethod — Methods for verifying user age for compliance. Does not include 'inferred' as it
const ( AgeVerificationMethodFacialAgeEstimation AgeVerificationMethod = "facial_age_estimation" AgeVerificationMethodIDDocument AgeVerificationMethod = "id_document" AgeVerificationMethodDigitalID AgeVerificationMethod = "digital_id" AgeVerificationMethodCreditCard AgeVerificationMethod = "credit_card" AgeVerificationMethodWorldID AgeVerificationMethod = "world_id" )
type ArtifactWebhookPayload ¶
type ArtifactWebhookPayload struct {
IdempotencyKey string `json:"idempotency_key"` // Sender-generated key stable across retries of the same webhook event. Sales agen
MediaBuyID string `json:"media_buy_id"` // Media buy identifier these artifacts belong to
BatchID string `json:"batch_id"` // Unique identifier for this batch of artifacts. Use for deduplication and acknowl
Timestamp string `json:"timestamp"` // When this batch was generated (ISO 8601)
Artifacts []any `json:"artifacts"` // Content artifacts from delivered impressions
Pagination any `json:"pagination,omitempty"` // Pagination info when batching large artifact sets
Ext any `json:"ext,omitempty"`
}
ArtifactWebhookPayload — Payload sent by sales agents to orchestrators when pushing content artifacts for governance validati
func (*ArtifactWebhookPayload) IdempotencyKeyPtr ¶
func (p *ArtifactWebhookPayload) IdempotencyKeyPtr() *string
type AssessmentStatus ¶
type AssessmentStatus = string
AssessmentStatus — Standardized quality level for health and readiness assessments. Comparable acro
const ( AssessmentStatusInsufficient AssessmentStatus = "insufficient" AssessmentStatusMinimum AssessmentStatus = "minimum" AssessmentStatusGood AssessmentStatus = "good" AssessmentStatusExcellent AssessmentStatus = "excellent" )
type AssetContentType ¶
type AssetContentType = string
AssetContentType — Types of content that can be used as creative assets. Describes what KIND of con
const ( AssetContentTypeImage AssetContentType = "image" AssetContentTypeVideo AssetContentType = "video" AssetContentTypeAudio AssetContentType = "audio" AssetContentTypeText AssetContentType = "text" AssetContentTypeMarkdown AssetContentType = "markdown" AssetContentTypeHTML AssetContentType = "html" AssetContentTypeCSS AssetContentType = "css" AssetContentTypeJavascript AssetContentType = "javascript" AssetContentTypeVast AssetContentType = "vast" AssetContentTypeDaast AssetContentType = "daast" AssetContentTypeURL AssetContentType = "url" AssetContentTypeWebhook AssetContentType = "webhook" AssetContentTypeBrief AssetContentType = "brief" AssetContentTypeCatalog AssetContentType = "catalog" )
type AttributionModel ¶
type AttributionModel = string
AttributionModel — Attribution model used for conversion measurement
const ( AttributionModelLastTouch AttributionModel = "last_touch" AttributionModelFirstTouch AttributionModel = "first_touch" AttributionModelLinear AttributionModel = "linear" AttributionModelTimeDecay AttributionModel = "time_decay" AttributionModelDataDriven AttributionModel = "data_driven" )
type AttributionWindow ¶
type AttributionWindow struct {
PostClick *Duration `json:"post_click,omitempty"`
PostView *Duration `json:"post_view,omitempty"`
Model string `json:"model"`
}
AttributionWindow is the singular attribution config applied to a specific optimization goal or delivery response. Mirrors core/attribution-window.json and is distinct from AttributionWindowOption (plural capability options).
type AttributionWindowOption ¶
type AttributionWindowOption struct {
EventType string `json:"event_type,omitempty"`
PostClick []Duration `json:"post_click"`
PostView []Duration `json:"post_view,omitempty"`
}
AttributionWindowOption describes one attribution-window configuration a buyer can pick. post_click is required when present.
type AudienceConstraints ¶
type AudienceConstraints struct {
Include []any `json:"include,omitempty"` // Desired audience criteria. The seller's targeting should align with these. Each
Exclude []any `json:"exclude,omitempty"` // Excluded audience criteria. The seller's targeting must not overlap with these.
}
AudienceConstraints — Buyer-defined audience targeting constraints for a campaign plan. Specifies who the campaign should
type AudienceSource ¶
type AudienceSource = string
AudienceSource — Origin of an audience segment in delivery reporting breakdowns. Only 'synced' au
const ( AudienceSourceSynced AudienceSource = "synced" AudienceSourcePlatform AudienceSource = "platform" AudienceSourceThirdParty AudienceSource = "third_party" AudienceSourceLookalike AudienceSource = "lookalike" AudienceSourceRetargeting AudienceSource = "retargeting" AudienceSourceUnknown AudienceSource = "unknown" )
type AudienceStatus ¶
type AudienceStatus = string
AudienceStatus — Matching status of a synced audience on a seller platform. Present when the sync
const ( AudienceStatusProcessing AudienceStatus = "processing" AudienceStatusReady AudienceStatus = "ready" AudienceStatusTooSmall AudienceStatus = "too_small" )
type AudienceTargetingCaps ¶
type AudienceTargetingCaps struct {
SupportedIdentifierTypes []string `json:"supported_identifier_types"`
SupportsPlatformCustomerID *bool `json:"supports_platform_customer_id,omitempty"`
SupportedUIDTypes []string `json:"supported_uid_types,omitempty"`
MinimumAudienceSize int `json:"minimum_audience_size"`
MatchingLatencyHours *MatchingLatencyRange `json:"matching_latency_hours,omitempty"`
}
AudienceTargetingCaps describes audience matching capabilities. supported_identifier_types and minimum_audience_size are required when present.
type AuthScheme ¶
type AuthScheme = string
AuthScheme — Authentication schemes for push notification endpoints
const ( AuthSchemeBearer AuthScheme = "Bearer" AuthSchemeHMACSHA256 AuthScheme = "HMAC-SHA256" )
type AvailableMetric ¶
type AvailableMetric = string
AvailableMetric — Standard delivery and performance metrics available for reporting
const ( AvailableMetricImpressions AvailableMetric = "impressions" AvailableMetricSpend AvailableMetric = "spend" AvailableMetricClicks AvailableMetric = "clicks" AvailableMetricCtr AvailableMetric = "ctr" AvailableMetricVideoCompletions AvailableMetric = "video_completions" AvailableMetricCompletionRate AvailableMetric = "completion_rate" AvailableMetricConversions AvailableMetric = "conversions" AvailableMetricConversionValue AvailableMetric = "conversion_value" AvailableMetricRoas AvailableMetric = "roas" AvailableMetricCostPerAcquisition AvailableMetric = "cost_per_acquisition" AvailableMetricNewToBrandRate AvailableMetric = "new_to_brand_rate" AvailableMetricViewability AvailableMetric = "viewability" AvailableMetricEngagementRate AvailableMetric = "engagement_rate" AvailableMetricViews AvailableMetric = "views" AvailableMetricCompletedViews AvailableMetric = "completed_views" AvailableMetricLeads AvailableMetric = "leads" AvailableMetricReach AvailableMetric = "reach" AvailableMetricFrequency AvailableMetric = "frequency" AvailableMetricGrps AvailableMetric = "grps" AvailableMetricQuartileData AvailableMetric = "quartile_data" AvailableMetricDoohMetrics AvailableMetric = "dooh_metrics" AvailableMetricCostPerClick AvailableMetric = "cost_per_click" )
type BaseCollectionSource ¶
type BaseCollectionSource struct {
SelectionType string `json:"selection_type"`
Identifiers []DistributionID `json:"identifiers,omitempty"`
PublisherDomain string `json:"publisher_domain,omitempty"`
CollectionIDs []string `json:"collection_ids,omitempty"`
Genres []string `json:"genres,omitempty"`
GenreTaxonomy string `json:"genre_taxonomy,omitempty"`
}
BaseCollectionSource selects collections for a collection list. Use one of the constructor functions: ByDistributionIDs, ByPublisherCollections, ByPublisherGenres.
func ByDistributionIDs ¶
func ByDistributionIDs(ids []DistributionID) BaseCollectionSource
ByDistributionIDs creates a source that selects collections by platform-independent identifiers.
func ByPublisherCollections ¶
func ByPublisherCollections(domain string, collectionIDs []string) BaseCollectionSource
ByPublisherCollections creates a source that selects specific collections within a publisher.
func ByPublisherGenres ¶
func ByPublisherGenres(domain string, genres []string, taxonomy string) BaseCollectionSource
ByPublisherGenres creates a source that selects collections from a publisher by genre.
type BillingMeasurement ¶
type BillingMeasurement struct {
Vendor *BrandReference `json:"vendor"`
MaxVariancePercent float64 `json:"max_variance_percent,omitempty"`
MeasurementWindow string `json:"measurement_window,omitempty"`
}
BillingMeasurement identifies the vendor whose measurement is authoritative for invoicing.
type BrandAgentType ¶
type BrandAgentType = string
BrandAgentType — Functional roles for agents declared in brand.json. Each type represents a disti
const ( BrandAgentTypeBrand BrandAgentType = "brand" BrandAgentTypeRights BrandAgentType = "rights" BrandAgentTypeMeasurement BrandAgentType = "measurement" BrandAgentTypeGovernance BrandAgentType = "governance" BrandAgentTypeCreative BrandAgentType = "creative" BrandAgentTypeSales BrandAgentType = "sales" BrandAgentTypeBuying BrandAgentType = "buying" BrandAgentTypeSignals BrandAgentType = "signals" )
type BrandCapabilities ¶
type BrandCapabilities struct {
Rights *bool `json:"rights,omitempty"`
RightTypes []string `json:"right_types,omitempty"`
AvailableUses []string `json:"available_uses,omitempty"`
GenerationProviders []string `json:"generation_providers,omitempty"`
Description string `json:"description,omitempty"`
}
BrandCapabilities is the brand protocol capability block.
type BrandReference ¶
type BrandReference struct {
Domain string `json:"domain"`
BrandID string `json:"brand_id,omitempty"`
Industries []string `json:"industries,omitempty"`
DataSubjectContestation *DataSubjectContestation `json:"data_subject_contestation,omitempty"`
}
BrandReference identifies a brand by domain, optionally scoped to a specific brand within a house portfolio. Industries and DataSubjectContestation are inline overrides for callers that cannot modify the brand's canonical brand.json — used by governance to resolve Annex III vertical detection and GDPR Art 22(3) contestation contacts when brand.json is out of reach.
type BuildCreativeRequest ¶
type BuildCreativeRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
Message string `json:"message,omitempty"` // Natural language instructions for the transformation or generation. For pure gen
CreativeManifest *CreativeManifest `json:"creative_manifest,omitempty"` // Creative manifest to transform or generate from. For pure generation, this shoul
CreativeID string `json:"creative_id,omitempty"` // Reference to a creative in the agent's library. The creative agent resolves this
ConceptID string `json:"concept_id,omitempty"` // Creative concept containing the creative. Creative agents SHOULD assign globally
MediaBuyID string `json:"media_buy_id,omitempty"` // Media buy identifier for tag generation context. When the creative agent is also
PackageID string `json:"package_id,omitempty"` // Package identifier within the media buy. Used with media_buy_id when the creativ
TargetFormatID *FormatRef `json:"target_format_id,omitempty"` // Single format ID to generate. Mutually exclusive with target_format_ids. The for
TargetFormatIDs []FormatRef `json:"target_format_ids,omitempty"` // Array of format IDs to generate in a single call. Mutually exclusive with target
Account *AccountReference `json:"account,omitempty"` // Account reference for pricing and billing. When present, the creative agent appl
Brand *BrandReference `json:"brand,omitempty"` // Brand reference for creative generation. Resolved to full brand identity (colors
Quality string `json:"quality,omitempty"` // Quality tier for generation. 'draft' produces fast, lower-fidelity output for it
ItemLimit int `json:"item_limit,omitempty"` // Maximum number of catalog items to use when generating. When a catalog asset con
IncludePreview *bool `json:"include_preview,omitempty"` // When true, requests the creative agent to include preview renders in the respons
PreviewInputs []any `json:"preview_inputs,omitempty"` // Input sets for preview generation when include_preview is true. Each input set d
PreviewQuality string `json:"preview_quality,omitempty"` // Render quality for inline preview when include_preview is true. 'draft' produces
PreviewOutputFormat string `json:"preview_output_format,omitempty"` // Output format for preview renders when include_preview is true. 'url' returns pr
MacroValues map[string]string `json:"macro_values,omitempty"` // Macro values to pre-substitute into the output manifest's assets. Keys are unive
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for this request. Prevents duplicate creative genera
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
BuildCreativeRequest — Request to transform, generate, or retrieve a creative manifest. Supports three modes: (1) generatio
type BuildCreativeResult ¶
type CanceledBy ¶
type CanceledBy = string
CanceledBy — Identifies which party initiated a cancellation.
const ( CanceledByBuyer CanceledBy = "buyer" CanceledBySeller CanceledBy = "seller" )
type CancellationFee ¶
type CancellationFee struct {
Type string `json:"type"` // "percent_remaining", "full_commitment", "fixed_fee", "none"
Rate float64 `json:"rate,omitempty"`
Amount float64 `json:"amount,omitempty"`
}
CancellationFee describes the fee charged for insufficient cancellation notice.
type CancellationPolicy ¶
type CancellationPolicy struct {
NoticePeriod Duration `json:"notice_period"`
CancellationFee CancellationFee `json:"cancellation_fee"`
}
CancellationPolicy declares cancellation terms for a product.
type CapabilitiesData ¶
type CapabilitiesData struct {
ADCP *ADCPVersion `json:"adcp"`
SupportedProtocols []string `json:"supported_protocols"`
Account *AccountCapabilities `json:"account,omitempty"`
MediaBuy *MediaBuyCapabilities `json:"media_buy,omitempty"`
Signals *SignalsCapabilities `json:"signals,omitempty"`
Governance *GovernanceCapabilities `json:"governance,omitempty"`
SponsoredIntelligence *SICapabilities `json:"sponsored_intelligence,omitempty"`
Brand *BrandCapabilities `json:"brand,omitempty"`
Creative *CreativeCapabilities `json:"creative,omitempty"`
RequestSigning *RequestSigningCapabilities `json:"request_signing,omitempty"`
WebhookSigning *WebhookSigningCapabilities `json:"webhook_signing,omitempty"`
Identity *IdentityCapabilities `json:"identity,omitempty"`
ComplianceTesting *ComplianceTestingCapabilities `json:"compliance_testing,omitempty"`
Specialisms []string `json:"specialisms,omitempty"`
ExtensionsSupported []string `json:"extensions_supported,omitempty"`
LastUpdated string `json:"last_updated,omitempty"`
Errors []AdcpError `json:"errors,omitempty"`
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
CapabilitiesData is the typed get_adcp_capabilities response. Per the 3.0 schema, adcp (with idempotency) and supported_protocols are required; all other blocks are optional and set only when the relevant protocol is supported.
type Catalog ¶
type Catalog struct {
CatalogID string `json:"catalog_id,omitempty"` // Buyer's identifier for this catalog. Required when syncing via sync_catalogs. Wh
Name string `json:"name,omitempty"` // Human-readable name for this catalog (e.g., 'Summer Products 2025', 'Amsterdam S
Type string `json:"type"` // Catalog type. Structural types: 'offering' (AdCP Offering objects), 'product' (e
URL string `json:"url,omitempty"` // URL to an external catalog feed. The platform fetches and resolves items from th
FeedFormat string `json:"feed_format,omitempty"` // Format of the external feed at url. Required when url points to a non-AdCP feed
UpdateFrequency string `json:"update_frequency,omitempty"` // How often the platform should re-fetch the feed from url. Only applicable when u
Items []map[string]any `json:"items,omitempty"` // Inline catalog data. The item schema depends on the catalog type: Offering objec
IDs []string `json:"ids,omitempty"` // Filter catalog to specific item IDs. For offering-type catalogs, these are offer
Gtins []string `json:"gtins,omitempty"` // Filter product-type catalogs by GTIN identifiers for cross-retailer catalog matc
Tags []string `json:"tags,omitempty"` // Filter catalog to items with these tags. Tags are matched using OR logic — items
Category string `json:"category,omitempty"` // Filter catalog to items in this category (e.g., 'beverages/soft-drinks', 'chef-p
Query string `json:"query,omitempty"` // Natural language filter for catalog items (e.g., 'all pasta sauces under $5', 'a
ConversionEvents []string `json:"conversion_events,omitempty"` // Event types that represent conversions for items in this catalog. Declares what
ContentIDType string `json:"content_id_type,omitempty"` // Identifier type that the event's content_ids field should be matched against for
FeedFieldMappings []any `json:"feed_field_mappings,omitempty"` // Declarative normalization rules for external feeds. Maps non-standard feed field
}
Catalog — A typed data feed. Catalogs carry the items, locations, stock levels, or pricing that publishers use
type CatalogAction ¶
type CatalogAction = string
CatalogAction — Action taken on a catalog during sync operation
const ( CatalogActionCreated CatalogAction = "created" CatalogActionUpdated CatalogAction = "updated" CatalogActionUnchanged CatalogAction = "unchanged" CatalogActionFailed CatalogAction = "failed" CatalogActionDeleted CatalogAction = "deleted" )
type CatalogInput ¶
type CatalogInput struct {
CatalogID string `json:"catalog_id"`
Items []map[string]any `json:"items,omitempty"`
}
CatalogInput is a single catalog in a sync_catalogs request.
type CatalogItemStatus ¶
type CatalogItemStatus = string
CatalogItemStatus — Approval status of an individual item within a synced catalog. Platforms review
const ( CatalogItemStatusApproved CatalogItemStatus = "approved" CatalogItemStatusPending CatalogItemStatus = "pending" CatalogItemStatusRejected CatalogItemStatus = "rejected" CatalogItemStatusWarning CatalogItemStatus = "warning" )
type CatalogResult ¶
type CatalogType ¶
type CatalogType = string
CatalogType — The type of catalog feed. Determines the item schema and how the platform resolv
const ( CatalogTypeOffering CatalogType = "offering" CatalogTypeProduct CatalogType = "product" CatalogTypeInventory CatalogType = "inventory" CatalogTypeStore CatalogType = "store" CatalogTypePromotion CatalogType = "promotion" CatalogTypeHotel CatalogType = "hotel" CatalogTypeFlight CatalogType = "flight" CatalogTypeJob CatalogType = "job" CatalogTypeVehicle CatalogType = "vehicle" CatalogTypeRealEstate CatalogType = "real_estate" CatalogTypeEducation CatalogType = "education" CatalogTypeDestination CatalogType = "destination" CatalogTypeApp CatalogType = "app" )
type Channels ¶
type Channels = string
Channels — Standardized advertising media channels describing how buyers allocate budget. C
const ( ChannelsDisplay Channels = "display" ChannelsOlv Channels = "olv" ChannelsSocial Channels = "social" ChannelsSearch Channels = "search" ChannelsCtv Channels = "ctv" ChannelsLinearTv Channels = "linear_tv" ChannelsRadio Channels = "radio" ChannelsStreamingAudio Channels = "streaming_audio" ChannelsPodcast Channels = "podcast" ChannelsDooh Channels = "dooh" ChannelsOoh Channels = "ooh" ChannelsPrint Channels = "print" ChannelsCinema Channels = "cinema" ChannelsEmail Channels = "email" ChannelsGaming Channels = "gaming" ChannelsRetailMedia Channels = "retail_media" ChannelsInfluencer Channels = "influencer" ChannelsAffiliate Channels = "affiliate" ChannelsProductPlacement Channels = "product_placement" ChannelsSponsoredIntelligence Channels = "sponsored_intelligence" )
type CheckGovernanceRequest ¶
type CheckGovernanceRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
PlanID string `json:"plan_id"` // Campaign governance plan identifier. The plan uniquely scopes the account and op
Caller string `json:"caller"` // URL of the agent making the request.
PurchaseType string `json:"purchase_type,omitempty"` // The type of financial commitment being checked. Determines which budget allocati
Tool string `json:"tool,omitempty"` // The AdCP tool being checked (e.g., 'create_media_buy', 'acquire_rights', 'activa
Payload map[string]any `json:"payload,omitempty"` // The full tool arguments as they would be sent to the seller. Present on intent c
GovernanceContext string `json:"governance_context,omitempty"` // Governance context token from a prior check_governance response. Pass this on su
Phase string `json:"phase,omitempty"` // The phase of the governed action's lifecycle. 'purchase': initial commitment (cr
PlannedDelivery any `json:"planned_delivery,omitempty"` // What the seller will actually deliver. Present on execution checks.
DeliveryMetrics any `json:"delivery_metrics,omitempty"` // Actual delivery performance data. MUST be present for 'delivery' phase. The gove
ModificationSummary string `json:"modification_summary,omitempty"` // Human-readable summary of what changed. SHOULD be present for 'modification' pha
InvoiceRecipient any `json:"invoice_recipient,omitempty"` // Invoice recipient from the purchase request. MUST be present when the tool paylo
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
CheckGovernanceRequest — Universal governance check for campaign actions. The governance agent infers the check type from the
type CheckGovernanceResponse ¶
type CheckGovernanceResponse struct {
CheckID string `json:"check_id"` // Unique identifier for this governance check record. Use in report_plan_outcome t
Status string `json:"status"` // Governance decision. 'approved': proceed as planned. 'denied': do not proceed. '
PlanID string `json:"plan_id"` // Echoed from request.
Explanation string `json:"explanation"` // Human-readable explanation of the governance decision.
Findings []any `json:"findings,omitempty"` // Specific issues found during the governance check. Present when status is 'denie
Conditions []any `json:"conditions,omitempty"` // Present when status is 'conditions'. Specific adjustments the caller must make.
ExpiresAt string `json:"expires_at,omitempty"` // When this approval expires. Present when status is 'approved' or 'conditions'. T
NextCheck string `json:"next_check,omitempty"` // When the seller should next call check_governance with delivery metrics. Present
CategoriesEvaluated []string `json:"categories_evaluated,omitempty"` // Governance categories evaluated during this check.
PoliciesEvaluated []string `json:"policies_evaluated,omitempty"` // Registry policy IDs evaluated during this check.
GovernanceContext string `json:"governance_context,omitempty"` // Governance context token for this governed action. The buyer MUST attach this to
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
CheckGovernanceResponse — Governance agent's response to a check request. Returns whether the action is approved under the gov
type CloudStorageProtocol ¶
type CloudStorageProtocol = string
CloudStorageProtocol — Cloud storage protocols supported for offline file delivery
const ( CloudStorageProtocolS3 CloudStorageProtocol = "s3" CloudStorageProtocolGcs CloudStorageProtocol = "gcs" CloudStorageProtocolAzureBlob CloudStorageProtocol = "azure_blob" )
type CoBrandingRequirement ¶
type CoBrandingRequirement = string
CoBrandingRequirement — Co-branding policy for creatives (retailer/publisher brand inclusion)
const ( CoBrandingRequirementRequired CoBrandingRequirement = "required" CoBrandingRequirementOptional CoBrandingRequirement = "optional" CoBrandingRequirementNone CoBrandingRequirement = "none" )
type CollectionCadence ¶
type CollectionCadence = string
CollectionCadence — How frequently a collection releases new installments
const ( CollectionCadenceDaily CollectionCadence = "daily" CollectionCadenceWeekly CollectionCadence = "weekly" CollectionCadenceMonthly CollectionCadence = "monthly" CollectionCadenceSeasonal CollectionCadence = "seasonal" CollectionCadenceEvent CollectionCadence = "event" CollectionCadenceIrregular CollectionCadence = "irregular" )
type CollectionList ¶
type CollectionList struct {
ListID string `json:"list_id"`
Name string `json:"name"`
Description string `json:"description,omitempty"`
Principal string `json:"principal,omitempty"`
BaseCollections []BaseCollectionSource `json:"base_collections,omitempty"`
Filters *CollectionListFilters `json:"filters,omitempty"`
Brand *BrandReference `json:"brand,omitempty"`
WebhookURL string `json:"webhook_url,omitempty"`
CacheDurationHours int `json:"cache_duration_hours,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
UpdatedAt string `json:"updated_at,omitempty"`
CollectionCount int `json:"collection_count,omitempty"`
}
CollectionList is a managed collection list with optional dynamic filters.
type CollectionListChangedWebhook ¶
type CollectionListChangedWebhook struct {
IdempotencyKey string `json:"idempotency_key"` // Sender-generated key stable across retries of the same webhook event. Governance
Event string `json:"event"` // The event type
ListID string `json:"list_id"` // ID of the collection list that changed
ListName string `json:"list_name,omitempty"` // Name of the collection list
ChangeSummary any `json:"change_summary,omitempty"` // Summary of changes to the resolved list
ResolvedAt string `json:"resolved_at"` // When the list was re-resolved
CacheValidUntil string `json:"cache_valid_until,omitempty"` // When the consumer should refresh from the governance agent
Signature string `json:"signature"` // HMAC-SHA256 webhook signature over {unix_timestamp}.{raw_http_body_bytes} using
Ext any `json:"ext,omitempty"`
}
CollectionListChangedWebhook — Webhook notification sent when a collection list's resolved collections change. Contains a summary o
func (*CollectionListChangedWebhook) IdempotencyKeyPtr ¶
func (p *CollectionListChangedWebhook) IdempotencyKeyPtr() *string
type CollectionListFilters ¶
type CollectionListFilters struct {
ContentRatingsExclude []ContentRating `json:"content_ratings_exclude,omitempty"`
ContentRatingsInclude []ContentRating `json:"content_ratings_include,omitempty"`
GenresExclude []string `json:"genres_exclude,omitempty"`
GenresInclude []string `json:"genres_include,omitempty"`
GenreTaxonomy string `json:"genre_taxonomy,omitempty"`
Kinds []string `json:"kinds,omitempty"`
ExcludeDistributionIDs []DistributionID `json:"exclude_distribution_ids,omitempty"`
ProductionQuality []string `json:"production_quality,omitempty"`
}
CollectionListFilters dynamically modify a collection list when resolved. Include filters are allowlists; exclude filters are blocklists. When both are present, include is applied first, then exclude narrows further.
type CollectionListRef ¶
type CollectionListRef struct {
AgentURL string `json:"agent_url"`
ListID string `json:"list_id"`
AuthToken string `json:"auth_token,omitempty"`
}
CollectionListRef references an externally managed collection list.
type CollectionPagination ¶
type CollectionPagination struct {
MaxResults int `json:"max_results,omitempty"` // 1-10000, default 1000
Cursor string `json:"cursor,omitempty"`
}
CollectionPagination has higher limits than standard pagination because collection lists can contain thousands of entries.
type CollectionRelationship ¶
type CollectionRelationship = string
CollectionRelationship — How two collections are related. References are scoped to the same get_products
const ( CollectionRelationshipSpinoff CollectionRelationship = "spinoff" CollectionRelationshipCompanion CollectionRelationship = "companion" CollectionRelationshipSequel CollectionRelationship = "sequel" CollectionRelationshipPrequel CollectionRelationship = "prequel" CollectionRelationshipCrossover CollectionRelationship = "crossover" )
type CollectionStatus ¶
type CollectionStatus = string
CollectionStatus — Lifecycle status of a collection
const ( CollectionStatusActive CollectionStatus = "active" CollectionStatusHiatus CollectionStatus = "hiatus" CollectionStatusEnded CollectionStatus = "ended" CollectionStatusUpcoming CollectionStatus = "upcoming" )
type ComplianceTestingCapabilities ¶
type ComplianceTestingCapabilities struct {
Scenarios []string `json:"scenarios"`
}
ComplianceTestingCapabilities declares supported comply_test_controller scenarios. scenarios is required when the block is present.
type ComplyTestControllerRequest ¶
type ComplyTestControllerRequest struct {
Scenario string `json:"scenario"` // Test scenario to execute. 'list_scenarios' discovers supported scenarios. 'force
Params any `json:"params,omitempty"` // Scenario-specific parameters. Required for all scenarios except list_scenarios.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ComplyTestControllerRequest — Request payload for the comply_test_controller tool. Triggers seller-side state transitions for comp
type ComplyTestControllerResponse ¶
type ComplyTestControllerResponse = any
ComplyTestControllerResponse is a discriminated union — use the appropriate variant type.
type Config ¶
type Config struct {
// Sandbox marks all responses as sandbox/test data.
Sandbox bool
// IdempotencyReplayTTL is how long this agent retains a canonical response
// for an idempotency_key. Required by AdCP 3.0 — sellers MUST declare their
// replay window. Must be in [1h, 7d]; 24h is recommended. Register panics
// if this is zero or outside the valid range.
IdempotencyReplayTTL time.Duration
// Capabilities, if set, declares the full typed capabilities response.
// supported_protocols and adcp.idempotency are filled in automatically if
// left empty. Use this to declare account / media_buy / signals / etc.
// blocks. If nil, a minimal response with just adcp + supported_protocols
// is built from the registered handlers.
Capabilities *CapabilitiesData
// ResolveAccount converts an AccountReference (brand + operator) to your
// internal account object. Called automatically before handlers that receive
// an account field. Return nil for unknown accounts (SDK sends ACCOUNT_NOT_FOUND).
ResolveAccount func(ctx context.Context, ref AccountReference) (any, error)
// --- Media buy ---
SyncAccounts func(ctx context.Context, req *SyncAccountsRequest) ([]AccountResult, error)
SyncGovernance func(ctx context.Context, req *SyncGovernanceRequest) ([]GovernanceResult, error)
GetProducts func(ctx context.Context, acct any, req *GetProductsRequest) (*ProductsData, error)
CreateMediaBuy func(ctx context.Context, acct any, req *CreateMediaBuyRequest) (*MediaBuyData, error)
GetMediaBuys func(ctx context.Context, acct any, req *GetMediaBuysRequest) ([]MediaBuyData, error)
GetDelivery func(ctx context.Context, acct any, req *GetMediaBuyDeliveryRequest) (*DeliveryData, error)
// --- Creative ---
ListCreativeFormats func(ctx context.Context, req *ListCreativeFormatsRequest) ([]CreativeFormat, error)
SyncCreatives func(ctx context.Context, req *SyncCreativesRequest) ([]CreativeResult, error)
// --- Signals ---
GetSignals func(ctx context.Context, req *GetSignalsRequest) ([]Signal, error)
ActivateSignal func(ctx context.Context, req *ActivateSignalRequest) ([]Deployment, error)
// --- Collection ---
CreateCollectionList func(ctx context.Context, req *CreateCollectionListRequest) (*CreateCollectionListResult, error)
GetCollectionList func(ctx context.Context, req *GetCollectionListRequest) (*GetCollectionListResult, error)
UpdateCollectionList func(ctx context.Context, req *UpdateCollectionListRequest) (*CollectionList, error)
DeleteCollectionList func(ctx context.Context, req *DeleteCollectionListRequest) error
ListCollectionLists func(ctx context.Context, req *ListCollectionListsRequest) (*ListCollectionListsResult, error)
}
Config declares which AdCP tools your agent supports. Set only the handlers you implement — unset handlers mean the tool isn't registered.
Handlers can return adcp.NewError for typed AdCP errors, or plain errors (which become INTERNAL_ERROR).
type ConsentBasis ¶
type ConsentBasis = string
ConsentBasis — Common GDPR lawful bases relevant to advertising. Covers the Article 6(1) bases
const ( ConsentBasisConsent ConsentBasis = "consent" ConsentBasisLegitimateInterest ConsentBasis = "legitimate_interest" ConsentBasisContract ConsentBasis = "contract" ConsentBasisLegalObligation ConsentBasis = "legal_obligation" )
type ContentIDType ¶
type ContentIDType = string
ContentIDType — Identifier type used in content_ids on conversion events to match back to catalo
const ( ContentIDTypeSku ContentIDType = "sku" ContentIDTypeGtin ContentIDType = "gtin" ContentIDTypeOfferingID ContentIDType = "offering_id" ContentIDTypeJobID ContentIDType = "job_id" ContentIDTypeHotelID ContentIDType = "hotel_id" ContentIDTypeFlightID ContentIDType = "flight_id" ContentIDTypeVehicleID ContentIDType = "vehicle_id" ContentIDTypeListingID ContentIDType = "listing_id" ContentIDTypeStoreID ContentIDType = "store_id" ContentIDTypeProgramID ContentIDType = "program_id" ContentIDTypeDestinationID ContentIDType = "destination_id" ContentIDTypeAppID ContentIDType = "app_id" )
type ContentRating ¶
ContentRating is a content advisory rating using a specified rating system.
type ContentRatingSystem ¶
type ContentRatingSystem = string
ContentRatingSystem — Rating systems for content advisory classifications
const ( ContentRatingSystemTvParental ContentRatingSystem = "tv_parental" ContentRatingSystemMpaa ContentRatingSystem = "mpaa" ContentRatingSystemPodcast ContentRatingSystem = "podcast" ContentRatingSystemEsrb ContentRatingSystem = "esrb" ContentRatingSystemBbfc ContentRatingSystem = "bbfc" ContentRatingSystemFsk ContentRatingSystem = "fsk" ContentRatingSystemAcb ContentRatingSystem = "acb" ContentRatingSystemChvrs ContentRatingSystem = "chvrs" ContentRatingSystemCsa ContentRatingSystem = "csa" ContentRatingSystemPegi ContentRatingSystem = "pegi" ContentRatingSystemCustom ContentRatingSystem = "custom" )
type ContentStandardsCaps ¶
type ContentStandardsCaps struct {
SupportsLocalEvaluation *bool `json:"supports_local_evaluation,omitempty"`
SupportedChannels []string `json:"supported_channels,omitempty"`
SupportsWebhookDelivery *bool `json:"supports_webhook_delivery,omitempty"`
}
ContentStandardsCaps describes content-standards evaluation and delivery.
type ControllerError ¶
type ControllerError struct {
Success bool `json:"success"`
Error string `json:"error"` // Structured error code
ErrorDetail string `json:"error_detail,omitempty"` // Human-readable explanation of the failure
CurrentState any `json:"current_state,omitempty"` // Current state of the entity, or null if not found
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ControllerError — The scenario failed — invalid transition, unknown entity, unsupported scenario, or invalid params
type ConversionTrackingCaps ¶
type ConversionTrackingCaps struct {
MultiSourceEventDedup *bool `json:"multi_source_event_dedup,omitempty"`
SupportedEventTypes []string `json:"supported_event_types,omitempty"`
SupportedUIDTypes []string `json:"supported_uid_types,omitempty"`
SupportedHashedIdentifiers []string `json:"supported_hashed_identifiers,omitempty"`
SupportedActionSources []string `json:"supported_action_sources,omitempty"`
AttributionWindows []AttributionWindowOption `json:"attribution_windows,omitempty"`
}
ConversionTrackingCaps describes seller-level conversion event capabilities. AttributionWindows (plural) lists window options a buyer can choose from — distinct from the singular AttributionWindow in core/attribution-window.json used on an optimization goal.
type CreateCollectionListRequest ¶
type CreateCollectionListRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
Account *AccountReference `json:"account,omitempty"` // Account that will own the list. Pass a natural key (brand, operator, optional sa
Name string `json:"name"` // Human-readable name for the list
Description string `json:"description,omitempty"` // Description of the list's purpose
BaseCollections []BaseCollectionSource `json:"base_collections,omitempty"` // Array of collection sources to evaluate. Each entry is a discriminated union: di
Filters *CollectionListFilters `json:"filters,omitempty"` // Dynamic filters to apply when resolving the list
Brand *BrandReference `json:"brand,omitempty"` // Brand reference. When provided, the agent automatically applies appropriate rule
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for this request. Prevents duplicate collection list
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
CreateCollectionListRequest — Request parameters for creating a new collection list
type CreateCollectionListResult ¶
type CreateCollectionListResult struct {
List *CollectionList
AuthToken string
}
CreateCollectionListResult is the return type for Config.CreateCollectionList.
type CreateMediaBuyError ¶
type CreateMediaBuyError struct {
Errors []AdcpError `json:"errors"` // Array of errors explaining why the operation failed
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
CreateMediaBuyError — Error response - operation failed, no media buy created
type CreateMediaBuyRequest ¶
type CreateMediaBuyRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for this request. If a request with the same idempot
PlanID string `json:"plan_id,omitempty"` // Campaign governance plan identifier. Required when the account has governance_ag
Account AccountReference `json:"account"` // Account to bill for this media buy. Pass a natural key (brand, operator, optiona
ProposalID string `json:"proposal_id,omitempty"` // ID of a proposal from get_products to execute. When provided with total_budget,
TotalBudget any `json:"total_budget,omitempty"` // Total budget for the media buy when executing a proposal. The publisher applies
Packages []PackageInput `json:"packages,omitempty"` // Array of package configurations. Required when not using proposal_id. When execu
Brand BrandReference `json:"brand"` // Brand reference for this media buy. Resolved to full brand identity at execution
AdvertiserIndustry string `json:"advertiser_industry,omitempty"` // Industry classification for this specific campaign. A brand may operate across m
InvoiceRecipient any `json:"invoice_recipient,omitempty"` // Override the account's default billing entity for this specific buy. When provid
IoAcceptance any `json:"io_acceptance,omitempty"` // Acceptance of an insertion order from a committed proposal. Required when the pr
PoNumber string `json:"po_number,omitempty"` // Purchase order number for tracking
AgencyEstimateNumber string `json:"agency_estimate_number,omitempty"` // Agency estimate or authorization number. Primary financial reference for broadca
StartTime any `json:"start_time"`
EndTime string `json:"end_time"` // Campaign end date/time in ISO 8601 format
PushNotificationConfig any `json:"push_notification_config,omitempty"` // Optional webhook configuration for async task status notifications. Publisher wi
ReportingWebhook any `json:"reporting_webhook,omitempty"` // Optional webhook configuration for automated reporting delivery
ArtifactWebhook any `json:"artifact_webhook,omitempty"` // Optional webhook configuration for content artifact delivery. Used by governance
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
CreateMediaBuyRequest — Request parameters for creating a media buy. Supports two modes: (1) Manual mode - provide packages
type CreateMediaBuyResponse ¶
type CreateMediaBuyResponse = any
CreateMediaBuyResponse is a discriminated union — use the appropriate variant type.
type CreateMediaBuySubmitted ¶
type CreateMediaBuySubmitted struct {
Status string `json:"status"` // Task-level status literal. Discriminates this async envelope from the synchronou
TaskID string `json:"task_id"` // Task handle the buyer uses with tasks/get, and that the seller references on pus
Message string `json:"message,omitempty"` // Optional human-readable explanation of why the task is submitted — e.g., 'Awaiti
Errors []AdcpError `json:"errors,omitempty"` // Optional advisory errors accompanying the submitted envelope. Use only for non-b
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
CreateMediaBuySubmitted — Async task envelope returned when the media buy cannot be confirmed before the response is emitted —
type CreateMediaBuySuccess ¶
type CreateMediaBuySuccess struct {
MediaBuyID string `json:"media_buy_id"` // Seller's unique identifier for the created media buy
Account *Account `json:"account,omitempty"` // Account billed for this media buy. Includes advertiser, billing proxy (if any),
InvoiceRecipient any `json:"invoice_recipient,omitempty"` // Per-buy invoice recipient, echoed from the request when provided. Confirms the s
Status string `json:"status,omitempty"` // Initial media buy status. Either 'pending_creatives' (awaiting creative assets),
ConfirmedAt string `json:"confirmed_at,omitempty"` // ISO 8601 timestamp when this media buy was confirmed by the seller. A successful
CreativeDeadline string `json:"creative_deadline,omitempty"` // ISO 8601 timestamp for creative upload deadline
Revision int `json:"revision,omitempty"` // Initial revision number for this media buy. Use in subsequent update_media_buy r
ValidActions []string `json:"valid_actions,omitempty"` // Actions the buyer can perform on this media buy after creation. Saves a round-tr
Packages []Package `json:"packages"` // Array of created packages with complete state information
PlannedDelivery any `json:"planned_delivery,omitempty"` // The seller's interpreted delivery parameters. Describes what the seller will act
Sandbox *bool `json:"sandbox,omitempty"` // When true, this response contains simulated data from sandbox mode.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
CreateMediaBuySuccess — Success response - media buy created successfully
type CreativeAction ¶
type CreativeAction = string
CreativeAction — Action taken on a creative during sync operation
const ( CreativeActionCreated CreativeAction = "created" CreativeActionUpdated CreativeAction = "updated" CreativeActionUnchanged CreativeAction = "unchanged" CreativeActionFailed CreativeAction = "failed" CreativeActionDeleted CreativeAction = "deleted" )
type CreativeAgentCapability ¶
type CreativeAgentCapability = string
CreativeAgentCapability — Capabilities supported by creative agents for format handling
const ( CreativeAgentCapabilityValidation CreativeAgentCapability = "validation" CreativeAgentCapabilityAssembly CreativeAgentCapability = "assembly" CreativeAgentCapabilityGeneration CreativeAgentCapability = "generation" CreativeAgentCapabilityPreview CreativeAgentCapability = "preview" CreativeAgentCapabilityDelivery CreativeAgentCapability = "delivery" )
type CreativeApprovalStatus ¶
type CreativeApprovalStatus = string
CreativeApprovalStatus — Approval state of a creative on a specific package
const ( CreativeApprovalStatusPendingReview CreativeApprovalStatus = "pending_review" CreativeApprovalStatusApproved CreativeApprovalStatus = "approved" CreativeApprovalStatusRejected CreativeApprovalStatus = "rejected" )
type CreativeAsset ¶
type CreativeAsset struct {
CreativeID string `json:"creative_id"` // Unique identifier for the creative
Name string `json:"name"` // Human-readable creative name
FormatID FormatRef `json:"format_id"` // Format identifier specifying which format this creative conforms to. Can be: (1)
Assets map[string]any `json:"assets"` // Assets required by the format, keyed by asset_id. Each asset value carries an `a
Inputs []any `json:"inputs,omitempty"` // Preview contexts for generative formats - defines what scenarios to generate pre
Tags []string `json:"tags,omitempty"` // User-defined tags for organization and searchability
Status string `json:"status,omitempty"` // For generative creatives: set to 'approved' to finalize, 'rejected' to request r
Weight float64 `json:"weight,omitempty"` // Optional delivery weight for creative rotation when uploading via create_media_b
PlacementIDs []string `json:"placement_ids,omitempty"` // Optional array of placement IDs where this creative should run when uploading vi
IndustryIdentifiers []IndustryIdentifier `json:"industry_identifiers,omitempty"` // Industry-standard identifiers for this creative (e.g., Ad-ID, ISCI, Clearcast cl
Provenance any `json:"provenance,omitempty"` // Provenance metadata for this creative. Serves as the default provenance for all
}
CreativeAsset — Creative asset for upload to library - supports static assets, generative formats, and third-party s
type CreativeBrief ¶
type CreativeBrief struct {
Name string `json:"name"` // Campaign or flight name for identification
Objective string `json:"objective,omitempty"` // Campaign objective that guides creative tone and call-to-action strategy
Tone string `json:"tone,omitempty"` // Desired tone for this campaign, modulating the brand's base tone (e.g., 'playful
Audience string `json:"audience,omitempty"` // Target audience description for this campaign
Territory string `json:"territory,omitempty"` // Creative territory or positioning the campaign should occupy
Messaging any `json:"messaging,omitempty"` // Messaging framework for the campaign
ReferenceAssets []any `json:"reference_assets,omitempty"` // Visual and strategic reference materials such as mood boards, product shots, exa
Compliance any `json:"compliance,omitempty"` // Regulatory and legal compliance requirements for this campaign. Campaign-specifi
}
CreativeBrief — Campaign-level creative context for AI-powered creative generation. Provides the layer between brand
type CreativeCapabilities ¶
type CreativeCapabilities struct {
SupportsCompliance *bool `json:"supports_compliance,omitempty"`
HasCreativeLibrary *bool `json:"has_creative_library,omitempty"`
SupportsGeneration *bool `json:"supports_generation,omitempty"`
SupportsTransformation *bool `json:"supports_transformation,omitempty"`
}
CreativeCapabilities is the creative protocol capability block.
type CreativeConsumption ¶
type CreativeConsumption struct {
Tokens int `json:"tokens,omitempty"`
ImagesGenerated int `json:"images_generated,omitempty"`
Renders int `json:"renders,omitempty"`
DurationSeconds float64 `json:"duration_seconds,omitempty"`
}
CreativeConsumption reports consumption metrics from paid creative generation.
type CreativeFilters ¶
type CreativeFilters struct {
FormatIDs []FormatRef `json:"format_ids,omitempty"`
}
CreativeFilters contains filters for list_creatives.
type CreativeFormat ¶
type CreativeFormat struct {
FormatID FormatRef `json:"format_id"` // Structured format identifier with agent URL and format name
Name string `json:"name"` // Human-readable format name
Description string `json:"description,omitempty"` // Plain text explanation of what this format does and what assets it requires
ExampleURL string `json:"example_url,omitempty"` // Optional URL to showcase page with examples and interactive demos of this format
AcceptsParameters []string `json:"accepts_parameters,omitempty"` // List of parameters this format accepts in format_id. Template formats define whi
Renders []Render `json:"renders,omitempty"` // Specification of rendered pieces for this format. Most formats produce a single
Assets []AssetSlot `json:"assets,omitempty"` // Array of all assets supported for this format. Each asset is identified by its a
Delivery map[string]any `json:"delivery,omitempty"` // Delivery method specifications (e.g., hosted, VAST, third-party tags)
SupportedMacros []any `json:"supported_macros,omitempty"` // List of universal macros supported by this format (e.g., MEDIA_BUY_ID, CACHEBUST
InputFormatIDs []FormatRef `json:"input_format_ids,omitempty"` // Array of format IDs this format accepts as input creative manifests. When presen
OutputFormatIDs []FormatRef `json:"output_format_ids,omitempty"` // Array of format IDs that this format can produce as output. When present, indica
FormatCard any `json:"format_card,omitempty"` // Optional standard visual card (300x400px) for displaying this format in user int
Accessibility any `json:"accessibility,omitempty"` // Accessibility posture of this format. Declares the WCAG conformance level that c
SupportedDisclosurePositions []string `json:"supported_disclosure_positions,omitempty"` // Disclosure positions this format can render. Buyers use this to determine whethe
DisclosureCapabilities []any `json:"disclosure_capabilities,omitempty"` // Structured disclosure capabilities per position with persistence modes. Declares
FormatCardDetailed any `json:"format_card_detailed,omitempty"` // Optional detailed card with carousel and full specifications. Provides rich form
ReportedMetrics []string `json:"reported_metrics,omitempty"` // Metrics this format can produce in delivery reporting. Buyers receive the inters
PricingOptions []VendorPricingOption `json:"pricing_options,omitempty"` // Pricing options for this format. Used by transformation and generation agents th
}
CreativeFormat — Represents a creative format with its requirements
type CreativeIdentifierType ¶
type CreativeIdentifierType = string
CreativeIdentifierType — Industry-standard identifier types for advertising creatives. These identifiers
const ( CreativeIdentifierTypeAdID CreativeIdentifierType = "ad_id" CreativeIdentifierTypeIsci CreativeIdentifierType = "isci" CreativeIdentifierTypeClearcastClock CreativeIdentifierType = "clearcast_clock" )
type CreativeInput ¶
type CreativeInput struct {
CreativeID string `json:"creative_id"`
FormatID *FormatRef `json:"format_id,omitempty"`
Name string `json:"name,omitempty"`
Assets map[string]any `json:"assets,omitempty"`
}
CreativeInput is a single creative in a sync_creatives request.
type CreativeListItem ¶
type CreativeManifest ¶
type CreativeManifest struct {
FormatID FormatRef `json:"format_id"` // Format identifier this manifest is for. Can be a template format (id only) or a
Assets map[string]any `json:"assets"` // Map of asset IDs to actual asset content. Each key MUST match an asset_id from t
Rights []any `json:"rights,omitempty"` // Rights constraints attached to this creative. Each entry represents constraints
IndustryIdentifiers []IndustryIdentifier `json:"industry_identifiers,omitempty"` // Industry-standard identifiers for this specific manifest (e.g., Ad-ID, ISCI, Cle
Provenance any `json:"provenance,omitempty"` // Provenance metadata for this creative manifest. Serves as the default provenance
Ext any `json:"ext,omitempty"`
}
CreativeManifest — Complete specification of a creative: format_id + assets. Everything the creative needs — images, te
type CreativeQuality ¶
type CreativeQuality = string
CreativeQuality — Quality tier for creative generation, controlling the fidelity and cost tradeoff
const ( CreativeQualityDraft CreativeQuality = "draft" CreativeQualityProduction CreativeQuality = "production" )
type CreativeResult ¶
type CreativeSortField ¶
type CreativeSortField = string
CreativeSortField — Fields available for sorting creative library listings
const ( CreativeSortFieldCreatedDate CreativeSortField = "created_date" CreativeSortFieldUpdatedDate CreativeSortField = "updated_date" CreativeSortFieldName CreativeSortField = "name" CreativeSortFieldStatus CreativeSortField = "status" CreativeSortFieldAssignmentCount CreativeSortField = "assignment_count" )
type CreativeSpecsCaps ¶
type CreativeStatus ¶
type CreativeStatus = string
CreativeStatus — Lifecycle status of a creative asset in a creative library. See the Creative Pro
const ( CreativeStatusProcessing CreativeStatus = "processing" CreativeStatusPendingReview CreativeStatus = "pending_review" CreativeStatusApproved CreativeStatus = "approved" CreativeStatusRejected CreativeStatus = "rejected" CreativeStatusArchived CreativeStatus = "archived" )
type DaastTrackingEvent ¶
type DaastTrackingEvent = string
DaastTrackingEvent — Tracking events for audio ads. Includes DAAST-applicable events from IAB VAST/DA
const ( DaastTrackingEventImpression DaastTrackingEvent = "impression" DaastTrackingEventCreativeView DaastTrackingEvent = "creativeView" DaastTrackingEventLoaded DaastTrackingEvent = "loaded" DaastTrackingEventStart DaastTrackingEvent = "start" DaastTrackingEventFirstQuartile DaastTrackingEvent = "firstQuartile" DaastTrackingEventMidpoint DaastTrackingEvent = "midpoint" DaastTrackingEventThirdQuartile DaastTrackingEvent = "thirdQuartile" DaastTrackingEventComplete DaastTrackingEvent = "complete" DaastTrackingEventMute DaastTrackingEvent = "mute" DaastTrackingEventUnmute DaastTrackingEvent = "unmute" DaastTrackingEventPause DaastTrackingEvent = "pause" DaastTrackingEventResume DaastTrackingEvent = "resume" DaastTrackingEventSkip DaastTrackingEvent = "skip" DaastTrackingEventProgress DaastTrackingEvent = "progress" DaastTrackingEventClickTracking DaastTrackingEvent = "clickTracking" DaastTrackingEventCustomClick DaastTrackingEvent = "customClick" DaastTrackingEventClose DaastTrackingEvent = "close" DaastTrackingEventError DaastTrackingEvent = "error" DaastTrackingEventViewable DaastTrackingEvent = "viewable" DaastTrackingEventNotViewable DaastTrackingEvent = "notViewable" DaastTrackingEventViewUndetermined DaastTrackingEvent = "viewUndetermined" DaastTrackingEventMeasurableImpression DaastTrackingEvent = "measurableImpression" DaastTrackingEventViewableImpression DaastTrackingEvent = "viewableImpression" )
type DaastVersion ¶
type DaastVersion = string
DaastVersion — Supported DAAST (Digital Audio Ad Serving Template) specification versions
const ( DaastVersion10 DaastVersion = "1.0" DaastVersion11 DaastVersion = "1.1" )
type DataSubjectContestation ¶
type DataSubjectContestation struct {
URL string `json:"url,omitempty"`
Email string `json:"email,omitempty"`
Languages []string `json:"languages,omitempty"`
}
DataSubjectContestation is a contestation contact point for data subjects (GDPR Art 22(3)). Either URL or Email is required.
type DelegationAuthority ¶
type DelegationAuthority = string
DelegationAuthority — Authority level granted to a delegated agent operating against a campaign plan.
const ( DelegationAuthorityFull DelegationAuthority = "full" DelegationAuthorityExecuteOnly DelegationAuthority = "execute_only" DelegationAuthorityProposeOnly DelegationAuthority = "propose_only" )
type DeleteCollectionListRequest ¶
type DeleteCollectionListRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
ListID string `json:"list_id"` // ID of the collection list to delete
Account *AccountReference `json:"account,omitempty"` // Account that owns the list. Required when the authenticated agent has access to
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for at-most-once execution. If a request with the sa
}
DeleteCollectionListRequest — Request parameters for deleting a collection list
type DeliveryData ¶
type DeliveryData struct {
ReportingPeriod ReportingPeriod `json:"reporting_period"`
MediaBuyDeliveries []MediaBuyDelivery `json:"media_buy_deliveries"`
}
type DeliveryTotals ¶
type DeliveryTotals struct {
Impressions float64 `json:"impressions,omitempty"` // Impressions delivered
Spend float64 `json:"spend,omitempty"` // Amount spent
Clicks float64 `json:"clicks,omitempty"` // Total clicks
Ctr float64 `json:"ctr,omitempty"` // Click-through rate (clicks/impressions)
Views float64 `json:"views,omitempty"` // Content engagements counted toward the billable view threshold. For video this i
CompletedViews float64 `json:"completed_views,omitempty"` // Video/audio completions. When the package has a completed_views optimization goa
CompletionRate float64 `json:"completion_rate,omitempty"` // Completion rate (completed_views/impressions)
Conversions float64 `json:"conversions,omitempty"` // Total conversions attributed to this delivery. When by_event_type is present, th
ConversionValue float64 `json:"conversion_value,omitempty"` // Total monetary value of attributed conversions (in the reporting currency)
Roas float64 `json:"roas,omitempty"` // Return on ad spend (conversion_value / spend)
CostPerAcquisition float64 `json:"cost_per_acquisition,omitempty"` // Cost per conversion (spend / conversions)
NewToBrandRate float64 `json:"new_to_brand_rate,omitempty"` // Fraction of conversions from first-time brand buyers (0 = none, 1 = all)
Leads float64 `json:"leads,omitempty"` // Leads generated (convenience alias for by_event_type where event_type='lead')
ByEventType []any `json:"by_event_type,omitempty"` // Conversion metrics broken down by event type. Spend-derived metrics (ROAS, CPA)
Grps float64 `json:"grps,omitempty"` // Gross Rating Points delivered (for CPP)
Reach float64 `json:"reach,omitempty"` // Unique reach in the units specified by reach_unit. When reach_unit is omitted, u
ReachUnit any `json:"reach_unit,omitempty"` // Unit of measurement for the reach field. Aligns with the reach_unit declared on
Frequency float64 `json:"frequency,omitempty"` // Average frequency per reach unit (typically measured over campaign duration, but
QuartileData any `json:"quartile_data,omitempty"` // Audio/video quartile completion data
DoohMetrics any `json:"dooh_metrics,omitempty"` // DOOH-specific metrics (only included for DOOH campaigns)
Viewability any `json:"viewability,omitempty"` // Viewability metrics. Viewable rate should be calculated as viewable_impressions
Engagements float64 `json:"engagements,omitempty"` // Total engagements — direct interactions with the ad beyond viewing. Includes soc
Follows float64 `json:"follows,omitempty"` // New followers, page likes, artist/podcast/channel subscribes attributed to this
Saves float64 `json:"saves,omitempty"` // Saves, bookmarks, playlist adds, pins attributed to this delivery.
ProfileVisits float64 `json:"profile_visits,omitempty"` // Visits to the brand's in-platform page (profile, artist page, channel, or storef
EngagementRate float64 `json:"engagement_rate,omitempty"` // Platform-specific engagement rate (0.0 to 1.0). Typically engagements/impression
CostPerClick float64 `json:"cost_per_click,omitempty"` // Cost per click (spend / clicks)
ByActionSource []any `json:"by_action_source,omitempty"` // Conversion metrics broken down by action source (website, app, in_store, etc.).
}
DeliveryTotals — Standard delivery metrics that can be reported at media buy, package, or creative level
type DeliveryType ¶
type DeliveryType = string
DeliveryType — Type of inventory delivery
const ( DeliveryTypeGuaranteed DeliveryType = "guaranteed" DeliveryTypeNonGuaranteed DeliveryType = "non_guaranteed" )
type DemographicSystem ¶
type DemographicSystem = string
DemographicSystem — Audience measurement systems for demographic notation in GRP forecasts and prici
const ( DemographicSystemNielsen DemographicSystem = "nielsen" DemographicSystemBarb DemographicSystem = "barb" DemographicSystemAgf DemographicSystem = "agf" DemographicSystemOztam DemographicSystem = "oztam" DemographicSystemMediametrie DemographicSystem = "mediametrie" DemographicSystemCustom DemographicSystem = "custom" )
type Deployment ¶
type Deployment struct {
Type string `json:"type"`
Platform string `json:"platform,omitempty"`
AgentURL string `json:"agent_url,omitempty"`
Account string `json:"account,omitempty"`
IsLive bool `json:"is_live"`
ActivationKey *ActivationKey `json:"activation_key,omitempty"`
DeployedAt string `json:"deployed_at,omitempty"`
EstimatedActivationDurationMinutes int `json:"estimated_activation_duration_minutes,omitempty"`
}
Deployment is the flattened union of deployment.json's oneOf variants. Type is the discriminator:
"platform": set Platform (required), AgentURL, Account, ActivationKey. "agent": set AgentURL (required), ActivationKey.
All variants: IsLive, DeployedAt, EstimatedActivationDurationMinutes. Do not mix variant-specific fields — schema validators accept it because additionalProperties=true, but the result is semantically wrong.
type DerivativeType ¶
type DerivativeType = string
DerivativeType — What kind of derivative content an installment represents relative to its source
const ( DerivativeTypeClip DerivativeType = "clip" DerivativeTypeHighlight DerivativeType = "highlight" DerivativeTypeRecap DerivativeType = "recap" DerivativeTypeTrailer DerivativeType = "trailer" DerivativeTypeBonus DerivativeType = "bonus" )
type DestinationInput ¶
type DestinationInput struct {
Type string `json:"type"`
Platform string `json:"platform,omitempty"`
AgentURL string `json:"agent_url,omitempty"`
Account string `json:"account,omitempty"`
}
DestinationInput is a single destination in an activate_signal request.
type DevicePlatform ¶
type DevicePlatform = string
DevicePlatform — Operating system platforms for device targeting. Browser values from Sec-CH-UA-P
const ( DevicePlatformIos DevicePlatform = "ios" DevicePlatformAndroid DevicePlatform = "android" DevicePlatformWindows DevicePlatform = "windows" DevicePlatformMacos DevicePlatform = "macos" DevicePlatformLinux DevicePlatform = "linux" DevicePlatformChromeos DevicePlatform = "chromeos" DevicePlatformTvos DevicePlatform = "tvos" DevicePlatformTizen DevicePlatform = "tizen" DevicePlatformWebos DevicePlatform = "webos" DevicePlatformFireOs DevicePlatform = "fire_os" DevicePlatformRokuOs DevicePlatform = "roku_os" DevicePlatformUnknown DevicePlatform = "unknown" )
type DeviceType ¶
type DeviceType = string
DeviceType — Device form factor categories for targeting and reporting. Complements device-pl
const ( DeviceTypeDesktop DeviceType = "desktop" DeviceTypeMobile DeviceType = "mobile" DeviceTypeTablet DeviceType = "tablet" DeviceTypeCtv DeviceType = "ctv" DeviceTypeDooh DeviceType = "dooh" DeviceTypeUnknown DeviceType = "unknown" )
type DigitalSourceType ¶
type DigitalSourceType = string
DigitalSourceType — Classification of AI involvement in content creation, aligned with IPTC digitals
const ( DigitalSourceTypeDigitalCapture DigitalSourceType = "digital_capture" DigitalSourceTypeDigitalCreation DigitalSourceType = "digital_creation" DigitalSourceTypeTrainedAlgorithmicMedia DigitalSourceType = "trained_algorithmic_media" DigitalSourceTypeCompositeWithTrainedAlgorithmicMedia DigitalSourceType = "composite_with_trained_algorithmic_media" DigitalSourceTypeAlgorithmicMedia DigitalSourceType = "algorithmic_media" DigitalSourceTypeCompositeCapture DigitalSourceType = "composite_capture" DigitalSourceTypeCompositeSynthetic DigitalSourceType = "composite_synthetic" DigitalSourceTypeHumanEdits DigitalSourceType = "human_edits" DigitalSourceTypeDataDrivenMedia DigitalSourceType = "data_driven_media" )
type DimensionUnit ¶
type DimensionUnit = string
DimensionUnit — Units of measurement for creative format dimensions
const ( DimensionUnitPx DimensionUnit = "px" DimensionUnitDp DimensionUnit = "dp" DimensionUnitInches DimensionUnit = "inches" DimensionUnitCm DimensionUnit = "cm" DimensionUnitMm DimensionUnit = "mm" DimensionUnitPt DimensionUnit = "pt" )
type DisclosurePersistence ¶
type DisclosurePersistence = string
DisclosurePersistence — How long a disclosure must persist during content playback or display. Different
const ( DisclosurePersistenceContinuous DisclosurePersistence = "continuous" DisclosurePersistenceInitial DisclosurePersistence = "initial" DisclosurePersistenceFlexible DisclosurePersistence = "flexible" )
type DisclosurePosition ¶
type DisclosurePosition = string
DisclosurePosition — Where a required disclosure should appear within a creative. Used by creative br
const ( DisclosurePositionProminent DisclosurePosition = "prominent" DisclosurePositionAudio DisclosurePosition = "audio" DisclosurePositionSubtitle DisclosurePosition = "subtitle" DisclosurePositionOverlay DisclosurePosition = "overlay" DisclosurePositionEndCard DisclosurePosition = "end_card" DisclosurePositionPreRoll DisclosurePosition = "pre_roll" DisclosurePositionCompanion DisclosurePosition = "companion" )
type DistanceUnit ¶
type DistanceUnit = string
DistanceUnit — Units of distance measurement for radius-based catchment areas.
const ( DistanceUnitKm DistanceUnit = "km" DistanceUnitMi DistanceUnit = "mi" DistanceUnitM DistanceUnit = "m" )
type DistributionID ¶
DistributionID is a platform-independent identifier for cross-publisher matching.
type DistributionIdentifierType ¶
type DistributionIdentifierType = string
DistributionIdentifierType — Platform-specific identifier types for collection distribution. Maps a collectio
const ( DistributionIdentifierTypeApplePodcastID DistributionIdentifierType = "apple_podcast_id" DistributionIdentifierTypeSpotifyCollectionID DistributionIdentifierType = "spotify_collection_id" DistributionIdentifierTypeRssURL DistributionIdentifierType = "rss_url" DistributionIdentifierTypePodcastGuid DistributionIdentifierType = "podcast_guid" DistributionIdentifierTypeAmazonMusicID DistributionIdentifierType = "amazon_music_id" DistributionIdentifierTypeIheartID DistributionIdentifierType = "iheart_id" DistributionIdentifierTypePodcastIndexID DistributionIdentifierType = "podcast_index_id" DistributionIdentifierTypeYoutubeChannelID DistributionIdentifierType = "youtube_channel_id" DistributionIdentifierTypeYoutubePlaylistID DistributionIdentifierType = "youtube_playlist_id" DistributionIdentifierTypeAmazonTitleID DistributionIdentifierType = "amazon_title_id" DistributionIdentifierTypeRokuChannelID DistributionIdentifierType = "roku_channel_id" DistributionIdentifierTypePlutoChannelID DistributionIdentifierType = "pluto_channel_id" DistributionIdentifierTypeTubiID DistributionIdentifierType = "tubi_id" DistributionIdentifierTypePeacockID DistributionIdentifierType = "peacock_id" DistributionIdentifierTypeTiktokID DistributionIdentifierType = "tiktok_id" DistributionIdentifierTypeTwitchChannel DistributionIdentifierType = "twitch_channel" DistributionIdentifierTypeImdbID DistributionIdentifierType = "imdb_id" DistributionIdentifierTypeGracenoteID DistributionIdentifierType = "gracenote_id" DistributionIdentifierTypeEidrID DistributionIdentifierType = "eidr_id" DistributionIdentifierTypeDomain DistributionIdentifierType = "domain" DistributionIdentifierTypeSubstackID DistributionIdentifierType = "substack_id" )
type Duration ¶
type Duration struct {
Interval int `json:"interval"`
Unit string `json:"unit"` // "seconds", "minutes", "hours", "days", "campaign"
}
Duration is a time duration expressed as an interval and unit.
type EmptyInput ¶
type EmptyInput struct{}
EmptyInput is the input type for tools that accept no parameters (e.g. get_adcp_capabilities).
type ErrorCode ¶
type ErrorCode = string
ErrorCode — Standard error code vocabulary for AdCP. Codes are machine-readable so agents ca
const ( ErrorCodeINVALIDREQUEST ErrorCode = "INVALID_REQUEST" ErrorCodeAUTHREQUIRED ErrorCode = "AUTH_REQUIRED" ErrorCodeRATELIMITED ErrorCode = "RATE_LIMITED" ErrorCodeSERVICEUNAVAILABLE ErrorCode = "SERVICE_UNAVAILABLE" ErrorCodePOLICYVIOLATION ErrorCode = "POLICY_VIOLATION" ErrorCodePRODUCTNOTFOUND ErrorCode = "PRODUCT_NOT_FOUND" ErrorCodePRODUCTUNAVAILABLE ErrorCode = "PRODUCT_UNAVAILABLE" ErrorCodePROPOSALEXPIRED ErrorCode = "PROPOSAL_EXPIRED" ErrorCodeBUDGETTOOLOW ErrorCode = "BUDGET_TOO_LOW" ErrorCodeCREATIVEREJECTED ErrorCode = "CREATIVE_REJECTED" ErrorCodeUNSUPPORTEDFEATURE ErrorCode = "UNSUPPORTED_FEATURE" ErrorCodeAUDIENCETOOSMALL ErrorCode = "AUDIENCE_TOO_SMALL" ErrorCodeACCOUNTNOTFOUND ErrorCode = "ACCOUNT_NOT_FOUND" ErrorCodeACCOUNTSETUPREQUIRED ErrorCode = "ACCOUNT_SETUP_REQUIRED" ErrorCodeACCOUNTAMBIGUOUS ErrorCode = "ACCOUNT_AMBIGUOUS" ErrorCodeACCOUNTPAYMENTREQUIRED ErrorCode = "ACCOUNT_PAYMENT_REQUIRED" ErrorCodeACCOUNTSUSPENDED ErrorCode = "ACCOUNT_SUSPENDED" ErrorCodeCOMPLIANCEUNSATISFIED ErrorCode = "COMPLIANCE_UNSATISFIED" ErrorCodeGOVERNANCEDENIED ErrorCode = "GOVERNANCE_DENIED" ErrorCodeBUDGETEXHAUSTED ErrorCode = "BUDGET_EXHAUSTED" ErrorCodeBUDGETEXCEEDED ErrorCode = "BUDGET_EXCEEDED" ErrorCodeCONFLICT ErrorCode = "CONFLICT" ErrorCodeIDEMPOTENCYCONFLICT ErrorCode = "IDEMPOTENCY_CONFLICT" ErrorCodeIDEMPOTENCYEXPIRED ErrorCode = "IDEMPOTENCY_EXPIRED" ErrorCodeCREATIVEDEADLINEEXCEEDED ErrorCode = "CREATIVE_DEADLINE_EXCEEDED" ErrorCodeINVALIDSTATE ErrorCode = "INVALID_STATE" ErrorCodeMEDIABUYNOTFOUND ErrorCode = "MEDIA_BUY_NOT_FOUND" ErrorCodeNOTCANCELLABLE ErrorCode = "NOT_CANCELLABLE" ErrorCodePACKAGENOTFOUND ErrorCode = "PACKAGE_NOT_FOUND" ErrorCodeCREATIVENOTFOUND ErrorCode = "CREATIVE_NOT_FOUND" ErrorCodeSIGNALNOTFOUND ErrorCode = "SIGNAL_NOT_FOUND" ErrorCodeSESSIONNOTFOUND ErrorCode = "SESSION_NOT_FOUND" ErrorCodePLANNOTFOUND ErrorCode = "PLAN_NOT_FOUND" ErrorCodeREFERENCENOTFOUND ErrorCode = "REFERENCE_NOT_FOUND" ErrorCodeSESSIONTERMINATED ErrorCode = "SESSION_TERMINATED" ErrorCodeVALIDATIONERROR ErrorCode = "VALIDATION_ERROR" ErrorCodePRODUCTEXPIRED ErrorCode = "PRODUCT_EXPIRED" ErrorCodePROPOSALNOTCOMMITTED ErrorCode = "PROPOSAL_NOT_COMMITTED" ErrorCodeIOREQUIRED ErrorCode = "IO_REQUIRED" ErrorCodeTERMSREJECTED ErrorCode = "TERMS_REJECTED" ErrorCodeREQUOTEREQUIRED ErrorCode = "REQUOTE_REQUIRED" ErrorCodeVERSIONUNSUPPORTED ErrorCode = "VERSION_UNSUPPORTED" ErrorCodeCAMPAIGNSUSPENDED ErrorCode = "CAMPAIGN_SUSPENDED" ErrorCodeGOVERNANCEUNAVAILABLE ErrorCode = "GOVERNANCE_UNAVAILABLE" ErrorCodePERMISSIONDENIED ErrorCode = "PERMISSION_DENIED" )
type ErrorOptions ¶
type ErrorOptions struct {
Message string
Recovery string // "retry", "revise", "contact_support", "terminal"
Field string
Suggestion string
RetryAfter int
Details map[string]any
}
ErrorOptions configures an AdCP error response.
type EscalationSeverity ¶
type EscalationSeverity = string
EscalationSeverity — The severity level of a governance escalation.
const ( EscalationSeverityInfo EscalationSeverity = "info" EscalationSeverityWarning EscalationSeverity = "warning" EscalationSeverityCritical EscalationSeverity = "critical" )
type Event ¶
type Event struct {
EventID string `json:"event_id"` // Unique identifier for deduplication (scoped to event_type + event_source_id)
EventType string `json:"event_type"` // Standard event type
EventTime string `json:"event_time"` // ISO 8601 timestamp when the event occurred
UserMatch any `json:"user_match,omitempty"` // User identifiers for attribution matching
CustomData any `json:"custom_data,omitempty"` // Event-specific data (value, currency, items, etc.)
ActionSource string `json:"action_source,omitempty"` // Where the event originated
EventSourceURL string `json:"event_source_url,omitempty"` // URL where the event occurred (required when action_source is 'website')
CustomEventName string `json:"custom_event_name,omitempty"` // Name for custom events (used when event_type is 'custom')
Ext any `json:"ext,omitempty"`
}
Event — A marketing event (conversion, engagement, or custom) for attribution and optimization
type EventSourceInput ¶
type EventSourceInput struct {
EventSourceID string `json:"event_source_id"`
}
EventSourceInput is a single event source.
type EventSourceResult ¶
type EventSourceResult struct {
EventSourceID string `json:"event_source_id"`
Action string `json:"action"`
Setup *EventSourceSetup `json:"setup,omitempty"`
}
type EventSourceSetup ¶
type EventSourceSetup struct {
Snippet string `json:"snippet,omitempty"`
Description string `json:"description,omitempty"`
}
EventSourceSetup provides integration instructions for an event source.
type EventType ¶
type EventType = string
EventType — Standard marketing event types for event logging, aligned with IAB ECAPI
const ( EventTypePageView EventType = "page_view" EventTypeViewContent EventType = "view_content" EventTypeSelectContent EventType = "select_content" EventTypeSelectItem EventType = "select_item" EventTypeSearch EventType = "search" EventTypeAddToCart EventType = "add_to_cart" EventTypeRemoveFromCart EventType = "remove_from_cart" EventTypeViewedCart EventType = "viewed_cart" EventTypeAddToWishlist EventType = "add_to_wishlist" EventTypeInitiateCheckout EventType = "initiate_checkout" EventTypeAddPaymentInfo EventType = "add_payment_info" EventTypePurchase EventType = "purchase" EventTypeRefund EventType = "refund" EventTypeLead EventType = "lead" EventTypeQualifyLead EventType = "qualify_lead" EventTypeCloseConvertLead EventType = "close_convert_lead" EventTypeDisqualifyLead EventType = "disqualify_lead" EventTypeCompleteRegistration EventType = "complete_registration" EventTypeSubscribe EventType = "subscribe" EventTypeStartTrial EventType = "start_trial" EventTypeAppInstall EventType = "app_install" EventTypeAppLaunch EventType = "app_launch" EventTypeContact EventType = "contact" EventTypeSchedule EventType = "schedule" EventTypeDonate EventType = "donate" EventTypeSubmitApplication EventType = "submit_application" EventTypeCustom EventType = "custom" )
type Exclusivity ¶
type Exclusivity = string
Exclusivity — Whether a product offers exclusive access to its inventory
const ( ExclusivityNone Exclusivity = "none" ExclusivityCategory Exclusivity = "category" ExclusivityExclusive Exclusivity = "exclusive" )
type FeatureRange ¶
type FeedFormat ¶
type FeedFormat = string
FeedFormat — Catalog feed formats. Determines how the platform parses items from an external
const ( FeedFormatGoogleMerchantCenter FeedFormat = "google_merchant_center" FeedFormatFacebookCatalog FeedFormat = "facebook_catalog" FeedFormatShopify FeedFormat = "shopify" FeedFormatLinkedinJobs FeedFormat = "linkedin_jobs" FeedFormatCustom FeedFormat = "custom" )
type FeedbackSource ¶
type FeedbackSource = string
FeedbackSource — Source of performance feedback data
const ( FeedbackSourceBuyerAttribution FeedbackSource = "buyer_attribution" FeedbackSourceThirdPartyMeasurement FeedbackSource = "third_party_measurement" FeedbackSourcePlatformAnalytics FeedbackSource = "platform_analytics" FeedbackSourceVerificationPartner FeedbackSource = "verification_partner" )
type ForecastMethod ¶
type ForecastMethod = string
ForecastMethod — Method used to produce a delivery forecast
const ( ForecastMethodEstimate ForecastMethod = "estimate" ForecastMethodModeled ForecastMethod = "modeled" ForecastMethodGuaranteed ForecastMethod = "guaranteed" )
type ForecastRangeUnit ¶
type ForecastRangeUnit = string
ForecastRangeUnit — Describes how to interpret the points array in a DeliveryForecast — what axis th
const ( ForecastRangeUnitSpend ForecastRangeUnit = "spend" ForecastRangeUnitAvailability ForecastRangeUnit = "availability" ForecastRangeUnitReachFreq ForecastRangeUnit = "reach_freq" ForecastRangeUnitWeekly ForecastRangeUnit = "weekly" ForecastRangeUnitDaily ForecastRangeUnit = "daily" ForecastRangeUnitClicks ForecastRangeUnit = "clicks" ForecastRangeUnitConversions ForecastRangeUnit = "conversions" ForecastRangeUnitPackage ForecastRangeUnit = "package" )
type ForecastableMetric ¶
type ForecastableMetric = string
ForecastableMetric — Standard delivery and engagement metric names for forecasts. For outcome/convers
const ( ForecastableMetricAudienceSize ForecastableMetric = "audience_size" ForecastableMetricReach ForecastableMetric = "reach" ForecastableMetricFrequency ForecastableMetric = "frequency" ForecastableMetricImpressions ForecastableMetric = "impressions" ForecastableMetricClicks ForecastableMetric = "clicks" ForecastableMetricSpend ForecastableMetric = "spend" ForecastableMetricViews ForecastableMetric = "views" ForecastableMetricCompletedViews ForecastableMetric = "completed_views" ForecastableMetricGrps ForecastableMetric = "grps" ForecastableMetricEngagements ForecastableMetric = "engagements" ForecastableMetricFollows ForecastableMetric = "follows" ForecastableMetricSaves ForecastableMetric = "saves" ForecastableMetricProfileVisits ForecastableMetric = "profile_visits" ForecastableMetricMeasuredImpressions ForecastableMetric = "measured_impressions" ForecastableMetricDownloads ForecastableMetric = "downloads" ForecastableMetricPlays ForecastableMetric = "plays" )
type FormatIDParameter ¶
type FormatIDParameter = string
FormatIDParameter — Types of parameters that template formats accept in format_id objects to create
const ( FormatIDParameterDimensions FormatIDParameter = "dimensions" FormatIDParameterDuration FormatIDParameter = "duration" )
type FormatRef ¶
type FormatRef struct {
AgentURL string `json:"agent_url"` // URL of the agent that defines this format (e.g., 'https://creatives.adcontextpro
ID string `json:"id"` // Format identifier within the agent's namespace (e.g., 'display_static', 'video_h
Width int `json:"width,omitempty"` // Width in pixels for visual formats. When specified, height must also be specifie
Height int `json:"height,omitempty"` // Height in pixels for visual formats. When specified, width must also be specifie
DurationMs float64 `json:"duration_ms,omitempty"` // Duration in milliseconds for time-based formats (video, audio). When specified,
}
FormatRef — Structured format identifier with agent URL and format name. Can reference: (1) a concrete format wi
type FrequencyCapScope ¶
type FrequencyCapScope = string
FrequencyCapScope — Scope for frequency cap application
const (
FrequencyCapScopePackage FrequencyCapScope = "package"
)
type GenreTaxonomy ¶
type GenreTaxonomy = string
GenreTaxonomy — Taxonomy systems for genre classification. When declared, genre values should be
const ( GenreTaxonomyIabContent30 GenreTaxonomy = "iab_content_3.0" GenreTaxonomyIabContent22 GenreTaxonomy = "iab_content_2.2" GenreTaxonomyGracenote GenreTaxonomy = "gracenote" GenreTaxonomyEidr GenreTaxonomy = "eidr" GenreTaxonomyAppleGenres GenreTaxonomy = "apple_genres" GenreTaxonomyGoogleGenres GenreTaxonomy = "google_genres" GenreTaxonomyRoku GenreTaxonomy = "roku" GenreTaxonomyAmazonGenres GenreTaxonomy = "amazon_genres" GenreTaxonomyCustom GenreTaxonomy = "custom" )
type GeoLevel ¶
type GeoLevel = string
GeoLevel — Geographic targeting granularity levels. Some levels (metro, postal_area) requir
type GeoMetrosCaps ¶
type GeoPostalAreasCaps ¶
type GeoPostalAreasCaps struct {
USZip *bool `json:"us_zip,omitempty"`
USZipPlusFour *bool `json:"us_zip_plus_four,omitempty"`
GBOutward *bool `json:"gb_outward,omitempty"`
GBFull *bool `json:"gb_full,omitempty"`
CAFSA *bool `json:"ca_fsa,omitempty"`
CAFull *bool `json:"ca_full,omitempty"`
DEPLZ *bool `json:"de_plz,omitempty"`
FRCodePostal *bool `json:"fr_code_postal,omitempty"`
AUPostcode *bool `json:"au_postcode,omitempty"`
CHPLZ *bool `json:"ch_plz,omitempty"`
ATPLZ *bool `json:"at_plz,omitempty"`
}
type GeoProximityCaps ¶
type GetAdcpCapabilitiesRequest ¶
type GetAdcpCapabilitiesRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. When provided, the selle
Protocols []string `json:"protocols,omitempty"` // Specific protocols to query capabilities for. If omitted, returns capabilities f
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetAdcpCapabilitiesRequest — Request payload for get_adcp_capabilities task. Protocol-level capability discovery that works acros
type GetAdcpCapabilitiesResponse ¶
type GetAdcpCapabilitiesResponse struct {
Adcp any `json:"adcp"` // Core AdCP protocol information
SupportedProtocols []string `json:"supported_protocols"` // AdCP protocols this agent supports. Each value both (a) declares which tools the
Account any `json:"account,omitempty"` // Account management capabilities. Describes how accounts are established, what bi
MediaBuy any `json:"media_buy,omitempty"` // Media-buy protocol capabilities. Expected when media_buy is in supported_protoco
Signals any `json:"signals,omitempty"` // Signals protocol capabilities. Only present if signals is in supported_protocols
Governance any `json:"governance,omitempty"` // Governance protocol capabilities. Only present if governance is in supported_pro
SponsoredIntelligence any `json:"sponsored_intelligence,omitempty"` // Sponsored Intelligence protocol capabilities. Only present if sponsored_intellig
Brand any `json:"brand,omitempty"` // Brand protocol capabilities. Only present if brand is in supported_protocols. Br
Creative any `json:"creative,omitempty"` // Creative protocol capabilities. Only present if creative is in supported_protoco
RequestSigning any `json:"request_signing,omitempty"` // RFC 9421 HTTP Signatures support for incoming requests. Optional in 3.0 — capabi
WebhookSigning any `json:"webhook_signing,omitempty"` // RFC 9421 webhook-signature support for outbound webhook callbacks (top-level pee
Identity any `json:"identity,omitempty"` // Operator identity posture — key-scoping and compromise-response controls the age
ComplianceTesting any `json:"compliance_testing,omitempty"` // Compliance testing capabilities. The presence of this block declares that the ag
Specialisms []string `json:"specialisms,omitempty"` // Optional — specialized compliance claims this agent supports. Omitting the field
ExtensionsSupported []string `json:"extensions_supported,omitempty"` // Extension namespaces this agent supports. Buyers can expect meaningful data in e
ExperimentalFeatures []string `json:"experimental_features,omitempty"` // Experimental AdCP surfaces this agent implements. A surface is experimental when
LastUpdated string `json:"last_updated,omitempty"` // ISO 8601 timestamp of when capabilities were last updated. Buyers can use this f
Errors []AdcpError `json:"errors,omitempty"` // Task-specific errors and warnings
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetAdcpCapabilitiesResponse — Response payload for get_adcp_capabilities task. Protocol-level capability discovery across all AdCP
type GetCollectionListRequest ¶
type GetCollectionListRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
ListID string `json:"list_id"` // ID of the collection list to retrieve
Account *AccountReference `json:"account,omitempty"` // Account that owns the list. Required when the authenticated agent has access to
Resolve *bool `json:"resolve,omitempty"` // Whether to apply filters and return resolved collections (default: true)
Pagination any `json:"pagination,omitempty"` // Pagination parameters. Uses higher limits than standard pagination because colle
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetCollectionListRequest — Request parameters for retrieving a collection list with resolved collections
type GetCollectionListResult ¶
type GetCollectionListResult struct {
List *CollectionList
Collections []ResolvedCollection
Pagination *PaginationResponse
}
GetCollectionListResult is the return type for Config.GetCollectionList.
type GetMediaBuyDeliveryRequest ¶
type GetMediaBuyDeliveryRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
Account *AccountReference `json:"account,omitempty"` // Filter delivery data to a specific account. When omitted, returns data across al
MediaBuyIDs []string `json:"media_buy_ids,omitempty"` // Array of media buy IDs to get delivery data for
StatusFilter any `json:"status_filter,omitempty"` // Filter by status. Can be a single status or array of statuses
StartDate string `json:"start_date,omitempty"` // Start date for reporting period (YYYY-MM-DD). When omitted along with end_date,
EndDate string `json:"end_date,omitempty"` // End date for reporting period (YYYY-MM-DD). When omitted along with start_date,
IncludePackageDailyBreakdown *bool `json:"include_package_daily_breakdown,omitempty"` // When true, include daily_breakdown arrays within each package in by_package. Use
AttributionWindow any `json:"attribution_window,omitempty"` // Attribution window to apply for conversion metrics. When provided, the seller re
ReportingDimensions any `json:"reporting_dimensions,omitempty"` // Request dimensional breakdowns in delivery reporting. Each key enables a specifi
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetMediaBuyDeliveryRequest — Request parameters for retrieving comprehensive delivery metrics
type GetMediaBuyDeliveryResponse ¶
type GetMediaBuyDeliveryResponse struct {
NotificationType string `json:"notification_type,omitempty"` // Type of webhook notification (only present in webhook deliveries): scheduled = r
PartialData *bool `json:"partial_data,omitempty"` // Indicates if any media buys in this webhook have missing/delayed data (only pres
SequenceNumber int `json:"sequence_number,omitempty"` // Sequential notification number (only present in webhook deliveries, starts at 1)
NextExpectedAt string `json:"next_expected_at,omitempty"` // ISO 8601 timestamp for next expected notification (only present in webhook deliv
ReportingPeriod any `json:"reporting_period"` // Date range for the report. All periods use UTC timezone.
Currency string `json:"currency"` // ISO 4217 currency code
AttributionWindow *AttributionWindow `json:"attribution_window,omitempty"` // Attribution methodology and lookback windows used for conversion metrics in this
AggregatedTotals any `json:"aggregated_totals,omitempty"` // Combined metrics across all returned media buys. Only included in API responses
MediaBuyDeliveries []any `json:"media_buy_deliveries"` // Array of delivery data for media buys. When used in webhook notifications, may c
Errors []AdcpError `json:"errors,omitempty"` // Task-specific errors and warnings (e.g., missing delivery data, reporting platfo
Sandbox *bool `json:"sandbox,omitempty"` // When true, this response contains simulated data from sandbox mode.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetMediaBuyDeliveryResponse — Response payload for get_media_buy_delivery task
type GetMediaBuysRequest ¶
type GetMediaBuysRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
Account *AccountReference `json:"account,omitempty"` // Account to retrieve media buys for. When omitted, returns data across all access
MediaBuyIDs []string `json:"media_buy_ids,omitempty"` // Array of media buy IDs to retrieve. When omitted, returns a paginated set of acc
StatusFilter any `json:"status_filter,omitempty"` // Filter by status. Can be a single status or array of statuses. Defaults to ["act
IncludeSnapshot *bool `json:"include_snapshot,omitempty"` // When true, include a near-real-time delivery snapshot for each package. Snapshot
IncludeHistory int `json:"include_history,omitempty"` // When present, include the last N revision history entries for each media buy (re
Pagination *PaginationRequest `json:"pagination,omitempty"` // Cursor-based pagination controls. Strongly recommended when querying broad scope
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetMediaBuysRequest — Request parameters for retrieving media buy status, creative approval state, and optional delivery s
type GetMediaBuysResponse ¶
type GetMediaBuysResponse struct {
MediaBuys []any `json:"media_buys"` // Array of media buys with status, creative approval state, and optional delivery
Errors []AdcpError `json:"errors,omitempty"` // Task-specific errors (e.g., media buy not found)
Pagination *PaginationResponse `json:"pagination,omitempty"` // Pagination metadata for the media_buys array.
Sandbox *bool `json:"sandbox,omitempty"` // When true, this response contains simulated data from sandbox mode.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetMediaBuysResponse — Response payload for get_media_buys task. Returns media buy configuration, creative approval state,
type GetPlanAuditLogsRequest ¶
type GetPlanAuditLogsRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
PlanIDs []string `json:"plan_ids,omitempty"` // Plan IDs to retrieve. For a single plan, pass a one-element array. Plans uniquel
PortfolioPlanIDs []string `json:"portfolio_plan_ids,omitempty"` // Portfolio plan IDs. The governance agent expands each to its member_plan_ids and
GovernanceContexts []string `json:"governance_contexts,omitempty"` // Filter audit entries by governance context. Returns only checks and outcomes tha
PurchaseTypes []string `json:"purchase_types,omitempty"` // Filter audit entries by purchase type. Returns only checks and outcomes matching
IncludeEntries *bool `json:"include_entries,omitempty"` // Include the full audit trail. Default: false.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetPlanAuditLogsRequest — Retrieve governance state and audit trail for one or more plans.
type GetPlanAuditLogsResponse ¶
type GetPlanAuditLogsResponse struct {
Plans []any `json:"plans"` // Audit data for each requested plan.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetPlanAuditLogsResponse — Governance state and audit trail for one or more plans.
type GetProductsRequest ¶
type GetProductsRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
BuyingMode string `json:"buying_mode"` // Declares buyer intent for this request. 'brief': publisher curates product recom
Brief string `json:"brief,omitempty"` // Natural language description of campaign requirements. Required when buying_mode
Refine []map[string]any `json:"refine,omitempty"` // Array of change requests for iterating on products and proposals from a previous
Brand *BrandReference `json:"brand,omitempty"` // Brand reference for product discovery context. Resolved to full brand identity a
Catalog *Catalog `json:"catalog,omitempty"` // Catalog of items the buyer wants to promote. The seller matches catalog items ag
Account *AccountReference `json:"account,omitempty"` // Account for product lookup. Returns products with pricing specific to this accou
PreferredDeliveryTypes []string `json:"preferred_delivery_types,omitempty"` // Delivery types the buyer prefers, in priority order. Unlike filters.delivery_typ
Filters any `json:"filters,omitempty"`
PropertyList any `json:"property_list,omitempty"` // [AdCP 3.0] Reference to an externally managed property list. When provided, the
Fields []string `json:"fields,omitempty"` // Specific product fields to include in the response. When omitted, all fields are
TimeBudget any `json:"time_budget,omitempty"` // Maximum time the buyer will commit to this request. The seller returns the best
Pagination *PaginationRequest `json:"pagination,omitempty"`
Context any `json:"context,omitempty"`
RequiredPolicies []string `json:"required_policies,omitempty"` // Registry policy IDs that the buyer requires to be enforced for products in this
Ext any `json:"ext,omitempty"`
}
GetProductsRequest — Request parameters for discovering or refining advertising products. buying_mode declares the buyer'
type GetProductsResponse ¶
type GetProductsResponse struct {
Products []Product `json:"products"` // Array of matching products
Proposals []any `json:"proposals,omitempty"` // Optional array of proposed media plans with budget allocations across products.
Errors []AdcpError `json:"errors,omitempty"` // Task-specific errors and warnings (e.g., product filtering issues)
PropertyListApplied *bool `json:"property_list_applied,omitempty"` // [AdCP 3.0] Indicates whether property_list filtering was applied. True if the ag
CatalogApplied *bool `json:"catalog_applied,omitempty"` // Whether the seller filtered results based on the provided catalog. True if the s
RefinementApplied []map[string]any `json:"refinement_applied,omitempty"` // Seller's response to each change request in the refine array, matched by positio
Incomplete []any `json:"incomplete,omitempty"` // Declares what the seller could not finish within the buyer's time_budget or due
Pagination *PaginationResponse `json:"pagination,omitempty"`
Sandbox *bool `json:"sandbox,omitempty"` // When true, this response contains simulated data from sandbox mode.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetProductsResponse — Response payload for get_products task
type GetSignalsRequest ¶
type GetSignalsRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
Account *AccountReference `json:"account,omitempty"` // Account for this request. When provided, the signals agent returns per-account p
SignalSpec string `json:"signal_spec,omitempty"` // Natural language description of the desired signals. When used alone, enables se
SignalIDs []SignalID `json:"signal_ids,omitempty"` // Specific signals to look up by data provider and ID. Returns exact matches from
Destinations []any `json:"destinations,omitempty"` // Filter signals to those activatable on specific agents/platforms. When omitted,
Countries []string `json:"countries,omitempty"` // Countries where signals will be used (ISO 3166-1 alpha-2 codes). When omitted, n
Filters *SignalFilters `json:"filters,omitempty"`
MaxResults int `json:"max_results,omitempty"` // Maximum number of results to return
Pagination *PaginationRequest `json:"pagination,omitempty"`
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetSignalsRequest — Request parameters for discovering and refining signals. Use signal_spec for natural language discov
type GetSignalsResponse ¶
type GetSignalsResponse struct {
Signals []any `json:"signals"` // Array of matching signals
Errors []AdcpError `json:"errors,omitempty"` // Task-specific errors and warnings (e.g., signal discovery or pricing issues)
Pagination *PaginationResponse `json:"pagination,omitempty"`
Sandbox *bool `json:"sandbox,omitempty"` // When true, this response contains simulated data from sandbox mode.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
GetSignalsResponse — Response payload for get_signals task
type GovernanceAccount ¶
type GovernanceAccount struct {
Brand *BrandReference `json:"brand,omitempty"`
Operator string `json:"operator,omitempty"`
}
type GovernanceAccountInput ¶
type GovernanceAccountInput struct {
Account *GovernanceAccount `json:"account,omitempty"`
Brand *BrandReference `json:"brand,omitempty"`
Operator string `json:"operator,omitempty"`
GovernanceAgents []GovernanceAgent `json:"governance_agents,omitempty"`
}
GovernanceAccountInput is a single account in a sync_governance request.
type GovernanceAgent ¶
type GovernanceCapabilities ¶
type GovernanceCapabilities struct {
PropertyFeatures []GovernanceFeature `json:"property_features,omitempty"`
CreativeFeatures []GovernanceFeature `json:"creative_features,omitempty"`
}
GovernanceCapabilities is the governance protocol capability block.
type GovernanceDomain ¶
type GovernanceDomain = string
GovernanceDomain — Governance sub-domains that a registry policy applies to. Used to indicate which
const ( GovernanceDomainCampaign GovernanceDomain = "campaign" GovernanceDomainProperty GovernanceDomain = "property" GovernanceDomainCreative GovernanceDomain = "creative" GovernanceDomainContentStandards GovernanceDomain = "content_standards" )
type GovernanceFeature ¶
type GovernanceFeature struct {
FeatureID string `json:"feature_id"`
Type string `json:"type"`
Range *FeatureRange `json:"range,omitempty"`
Categories []string `json:"categories,omitempty"`
Description string `json:"description,omitempty"`
MethodologyURL string `json:"methodology_url,omitempty"`
}
GovernanceFeature describes a score/rating/certification the agent provides.
type GovernanceMode ¶
type GovernanceMode = string
GovernanceMode — Operating mode for a governance agent. Controls whether findings block execution
const ( GovernanceModeAudit GovernanceMode = "audit" GovernanceModeAdvisory GovernanceMode = "advisory" GovernanceModeEnforce GovernanceMode = "enforce" )
type GovernancePhase ¶
type GovernancePhase = string
GovernancePhase — The phase of the governed action's lifecycle that triggered the governance check
const ( GovernancePhasePurchase GovernancePhase = "purchase" GovernancePhaseModification GovernancePhase = "modification" GovernancePhaseDelivery GovernancePhase = "delivery" )
type GovernanceResult ¶
type GovernanceResult struct {
Account *GovernanceAccount `json:"account"`
Status string `json:"status"`
GovernanceAgents []GovernanceAgent `json:"governance_agents"`
}
type HTTPMethod ¶
type HTTPMethod = string
HTTPMethod — HTTP methods supported for webhook requests
const ( HTTPMethodGET HTTPMethod = "GET" HTTPMethodPOST HTTPMethod = "POST" )
type HistoryEntryType ¶
type HistoryEntryType = string
HistoryEntryType — Type of entry in task execution history
const ( HistoryEntryTypeRequest HistoryEntryType = "request" HistoryEntryTypeResponse HistoryEntryType = "response" )
type HumanOverride ¶
type HumanOverride struct {
Reason string `json:"reason"`
Approver string `json:"approver"`
ApprovedAt string `json:"approved_at,omitempty"`
}
HumanOverride records the human approval that downgrades a plan's human_review_required from true to false on re-sync. Required as an artifact under GDPR Art 22 / EU AI Act Annex III when an override is applied.
type IdempotencyCaps ¶
type IdempotencyCaps struct {
ReplayTTLSeconds int `json:"replay_ttl_seconds"`
}
IdempotencyCaps declares the seller's replay window for idempotency_key. Minimum 3600 (1h); recommended 86400 (24h); maximum 604800 (7d).
type IdentifierTypes ¶
type IdentifierTypes = string
IdentifierTypes — Valid identifier types for property identification across different media types
const ( IdentifierTypesDomain IdentifierTypes = "domain" IdentifierTypesSubdomain IdentifierTypes = "subdomain" IdentifierTypesNetworkID IdentifierTypes = "network_id" IdentifierTypesIosBundle IdentifierTypes = "ios_bundle" IdentifierTypesAndroidPackage IdentifierTypes = "android_package" IdentifierTypesAppleAppStoreID IdentifierTypes = "apple_app_store_id" IdentifierTypesGooglePlayID IdentifierTypes = "google_play_id" IdentifierTypesRokuStoreID IdentifierTypes = "roku_store_id" IdentifierTypesFireTvAsin IdentifierTypes = "fire_tv_asin" IdentifierTypesSamsungAppID IdentifierTypes = "samsung_app_id" IdentifierTypesAppleTvBundle IdentifierTypes = "apple_tv_bundle" IdentifierTypesBundleID IdentifierTypes = "bundle_id" IdentifierTypesVenueID IdentifierTypes = "venue_id" IdentifierTypesScreenID IdentifierTypes = "screen_id" IdentifierTypesOpenoohVenueType IdentifierTypes = "openooh_venue_type" IdentifierTypesRssURL IdentifierTypes = "rss_url" IdentifierTypesApplePodcastID IdentifierTypes = "apple_podcast_id" IdentifierTypesSpotifyCollectionID IdentifierTypes = "spotify_collection_id" IdentifierTypesPodcastGuid IdentifierTypes = "podcast_guid" IdentifierTypesStationID IdentifierTypes = "station_id" IdentifierTypesFacilityID IdentifierTypes = "facility_id" )
type IdentityCapabilities ¶
type IdentityCapabilities struct {
PerPrincipalKeyIsolation bool `json:"per_principal_key_isolation,omitempty"`
KeyOrigins *IdentityKeyOrigins `json:"key_origins,omitempty"`
CompromiseNotification *IdentityCompromiseNotification `json:"compromise_notification,omitempty"`
}
IdentityCapabilities declares operator identity posture — key-scoping and compromise-response controls. All fields advisory in 3.x; receivers use them to reason about blast radius and revocation latency at onboarding.
type IdentityCompromiseNotification ¶
type IdentityCompromiseNotification struct {
Emits bool `json:"emits,omitempty"`
Accepts bool `json:"accepts,omitempty"`
}
IdentityCompromiseNotification declares whether this agent emits and/or subscribes to the identity.compromise_notification webhook event on key revocation due to known or suspected compromise.
type IdentityKeyOrigins ¶
type IdentityKeyOrigins struct {
GovernanceSigning string `json:"governance_signing,omitempty"`
RequestSigning string `json:"request_signing,omitempty"`
WebhookSigning string `json:"webhook_signing,omitempty"`
TMPSigning string `json:"tmp_signing,omitempty"`
}
IdentityKeyOrigins maps signing-key purpose → publishing origin so counterparties can verify origin separation at onboarding.
type IndustryIdentifier ¶
IndustryIdentifier is an industry-standard creative identifier (Ad-ID, ISCI, etc.).
type InstallmentStatus ¶
type InstallmentStatus = string
InstallmentStatus — Lifecycle status of an installment
const ( InstallmentStatusScheduled InstallmentStatus = "scheduled" InstallmentStatusTentative InstallmentStatus = "tentative" InstallmentStatusLive InstallmentStatus = "live" InstallmentStatusPostponed InstallmentStatus = "postponed" InstallmentStatusCancelled InstallmentStatus = "cancelled" InstallmentStatusAired InstallmentStatus = "aired" InstallmentStatusPublished InstallmentStatus = "published" )
type JavascriptModuleType ¶
type JavascriptModuleType = string
JavascriptModuleType — JavaScript module format types for creative assets
const ( JavascriptModuleTypeEsm JavascriptModuleType = "esm" JavascriptModuleTypeCommonjs JavascriptModuleType = "commonjs" JavascriptModuleTypeScript JavascriptModuleType = "script" )
type KeywordMatchCaps ¶
type KeywordMatchCaps struct {
SupportedMatchTypes []string `json:"supported_match_types"`
}
KeywordMatchCaps declares which match types a seller honors for keyword or negative-keyword targeting. supported_match_types is required when present.
type LandingPageRequirement ¶
type LandingPageRequirement = string
LandingPageRequirement — Landing page policy for creative click-through destinations
const ( LandingPageRequirementAny LandingPageRequirement = "any" LandingPageRequirementRetailerSiteOnly LandingPageRequirement = "retailer_site_only" LandingPageRequirementMustIncludeRetailer LandingPageRequirement = "must_include_retailer" )
type ListAccountsRequest ¶
type ListAccountsRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
Status string `json:"status,omitempty"` // Filter accounts by status. Omit to return accounts in all statuses.
Pagination *PaginationRequest `json:"pagination,omitempty"`
Sandbox *bool `json:"sandbox,omitempty"` // Filter by sandbox status. true returns only sandbox accounts, false returns only
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ListAccountsRequest — Request parameters for listing accounts accessible to the authenticated agent
type ListAccountsResponse ¶
type ListAccountsResponse struct {
Accounts []Account `json:"accounts"` // Array of accounts accessible to the authenticated agent
Errors []AdcpError `json:"errors,omitempty"` // Task-specific errors and warnings
Pagination *PaginationResponse `json:"pagination,omitempty"`
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ListAccountsResponse — Response payload for list_accounts task
type ListCollectionListsRequest ¶
type ListCollectionListsRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
Account *AccountReference `json:"account,omitempty"` // Filter to lists owned by this account. When omitted, returns lists across all ac
NameContains string `json:"name_contains,omitempty"` // Filter to lists whose name contains this string
Pagination *PaginationRequest `json:"pagination,omitempty"`
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ListCollectionListsRequest — Request parameters for listing collection lists
type ListCollectionListsResult ¶
type ListCollectionListsResult struct {
Lists []CollectionList
Pagination *PaginationResponse
}
ListCollectionListsResult is the return type for Config.ListCollectionLists.
type ListCreativeFormatsRequest ¶
type ListCreativeFormatsRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
FormatIDs []FormatRef `json:"format_ids,omitempty"` // Return only these specific format IDs (e.g., from get_products response)
AssetTypes []string `json:"asset_types,omitempty"` // Filter to formats that include these asset types. For third-party tags, search f
MaxWidth int `json:"max_width,omitempty"` // Maximum width in pixels (inclusive). Returns formats where ANY render has width
MaxHeight int `json:"max_height,omitempty"` // Maximum height in pixels (inclusive). Returns formats where ANY render has heigh
MinWidth int `json:"min_width,omitempty"` // Minimum width in pixels (inclusive). Returns formats where ANY render has width
MinHeight int `json:"min_height,omitempty"` // Minimum height in pixels (inclusive). Returns formats where ANY render has heigh
IsResponsive *bool `json:"is_responsive,omitempty"` // Filter for responsive formats that adapt to container size. When true, returns f
NameSearch string `json:"name_search,omitempty"` // Search for formats by name (case-insensitive partial match)
WcagLevel string `json:"wcag_level,omitempty"` // Filter to formats that meet at least this WCAG conformance level (A < AA < AAA)
DisclosurePositions []string `json:"disclosure_positions,omitempty"` // Filter to formats that support all of these disclosure positions. When a format
DisclosurePersistence []string `json:"disclosure_persistence,omitempty"` // Filter to formats where each requested persistence mode is supported by at least
OutputFormatIDs []FormatRef `json:"output_format_ids,omitempty"` // Filter to formats whose output_format_ids includes any of these format IDs. Retu
InputFormatIDs []FormatRef `json:"input_format_ids,omitempty"` // Filter to formats whose input_format_ids includes any of these format IDs. Retur
Pagination *PaginationRequest `json:"pagination,omitempty"`
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ListCreativeFormatsRequest — Request parameters for discovering supported creative formats
type ListCreativeFormatsResponse ¶
type ListCreativeFormatsResponse struct {
Formats []CreativeFormat `json:"formats"` // Full format definitions for all formats this agent supports. Each format's autho
CreativeAgents []any `json:"creative_agents,omitempty"` // Optional: Creative agents that provide additional formats. Buyers can recursivel
Errors []AdcpError `json:"errors,omitempty"` // Task-specific errors and warnings (e.g., format availability issues)
Pagination *PaginationResponse `json:"pagination,omitempty"`
Sandbox *bool `json:"sandbox,omitempty"` // When true, this response contains simulated data from sandbox mode.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ListCreativeFormatsResponse — Response payload for list_creative_formats task
type ListCreativesRequest ¶
type ListCreativesRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
Filters *CreativeFilters `json:"filters,omitempty"`
Sort any `json:"sort,omitempty"` // Sorting parameters
Pagination *PaginationRequest `json:"pagination,omitempty"`
IncludeAssignments *bool `json:"include_assignments,omitempty"` // Include package assignment information in response
IncludeSnapshot *bool `json:"include_snapshot,omitempty"` // Include a lightweight delivery snapshot per creative (lifetime impressions and l
IncludeItems *bool `json:"include_items,omitempty"` // Include items for multi-asset formats like carousels and native ads
IncludeVariables *bool `json:"include_variables,omitempty"` // Include dynamic content variable definitions (DCO slots) for each creative
IncludePricing *bool `json:"include_pricing,omitempty"` // Include pricing_options on each creative. Requires account to be provided. When
Account *AccountReference `json:"account,omitempty"` // Account reference for pricing and access. When provided with include_pricing, th
Fields []string `json:"fields,omitempty"` // Specific fields to include in response (omit for all fields). The 'concept' valu
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ListCreativesRequest — Request parameters for querying creative assets from a creative library with filtering, sorting, and
type ListScenariosSuccess ¶
type ListScenariosSuccess struct {
Success bool `json:"success"`
Scenarios []string `json:"scenarios"` // Scenarios this seller has implemented. Runners and sellers MUST accept unknown s
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ListScenariosSuccess — Lists which scenarios this seller's test controller supports
type LogEventRequest ¶
type LogEventRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
EventSourceID string `json:"event_source_id"` // Event source configured on the account via sync_event_sources
TestEventCode string `json:"test_event_code,omitempty"` // Test event code for validation without affecting production data. Events with th
Events []map[string]any `json:"events"` // Events to log
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for this request. Prevents duplicate event logging o
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
LogEventRequest — Request parameters for logging marketing events
type LogEventResult ¶
type MCPWebhookPayload ¶
type MCPWebhookPayload struct {
IdempotencyKey string `json:"idempotency_key"` // Sender-generated key stable across retries of the same webhook event. Publishers
OperationID string `json:"operation_id,omitempty"` // Client-generated identifier that was embedded in the webhook URL by the buyer. P
TaskID string `json:"task_id"` // Unique identifier for this task. Use this to correlate webhook notifications wit
TaskType string `json:"task_type"` // Type of AdCP operation that triggered this webhook. Enables webhook handlers to
Protocol string `json:"protocol,omitempty"` // AdCP protocol this task belongs to. Helps classify the operation type at a high
Status string `json:"status"` // Current task status. Webhooks are triggered for status changes after initial sub
Timestamp string `json:"timestamp"` // ISO 8601 timestamp when this webhook was generated.
Message string `json:"message,omitempty"` // Human-readable summary of the current task state. Provides context about what ha
ContextID string `json:"context_id,omitempty"` // Session/conversation identifier. Use this to continue the conversation if input-
Result any `json:"result,omitempty"` // Task-specific payload matching the status. For completed/failed, contains the fu
}
MCPWebhookPayload — Standard envelope for HTTP-based push notifications (MCP). This defines the wire format sent to the
func (*MCPWebhookPayload) IdempotencyKeyPtr ¶
func (p *MCPWebhookPayload) IdempotencyKeyPtr() *string
--- Webhook Payload interface satisfaction --- IdempotencyKeyPtr returns a writable pointer to the payload's idempotency_key field so webhook.Marshal can fill a UUIDv4 key when the caller leaves it empty. Spec: adcontextprotocol/adcp#2417.
type MakegoodPolicy ¶
type MakegoodPolicy struct {
AvailableRemedies []string `json:"available_remedies"`
}
MakegoodPolicy declares available remedies when a threshold is breached.
type MakegoodRemedy ¶
type MakegoodRemedy = string
MakegoodRemedy — Remedy types available when a performance standard or billing measurement thresh
const ( MakegoodRemedyAdditionalDelivery MakegoodRemedy = "additional_delivery" MakegoodRemedyCredit MakegoodRemedy = "credit" MakegoodRemedyInvoiceAdjustment MakegoodRemedy = "invoice_adjustment" )
type MarkdownFlavor ¶
type MarkdownFlavor = string
MarkdownFlavor — Markdown specification flavors supported for text assets
const ( MarkdownFlavorCommonmark MarkdownFlavor = "commonmark" MarkdownFlavorGfm MarkdownFlavor = "gfm" )
type MatchIDType ¶
type MatchIDType = string
MatchIDType — Identifier types for audience match reporting. Combines hashed PII types (from a
const ( MatchIDTypeHashedEmail MatchIDType = "hashed_email" MatchIDTypeHashedPhone MatchIDType = "hashed_phone" MatchIDTypeRampid MatchIDType = "rampid" MatchIDTypeId5 MatchIDType = "id5" MatchIDTypeUid2 MatchIDType = "uid2" MatchIDTypeEuid MatchIDType = "euid" MatchIDTypePairid MatchIDType = "pairid" MatchIDTypeMaid MatchIDType = "maid" MatchIDTypeOther MatchIDType = "other" )
type MatchingLatencyRange ¶
type MeasurementTerms ¶
type MeasurementTerms struct {
BillingMeasurement *BillingMeasurement `json:"billing_measurement,omitempty"`
MakegoodPolicy *MakegoodPolicy `json:"makegood_policy,omitempty"`
}
MeasurementTerms declares billing measurement and makegood terms.
type MeasurementWindow ¶
type MeasurementWindow struct {
WindowID string `json:"window_id"`
Description string `json:"description,omitempty"`
DurationDays int `json:"duration_days"`
ExpectedAvailabilityDays int `json:"expected_availability_days,omitempty"`
IsGuaranteeBasis bool `json:"is_guarantee_basis,omitempty"`
}
MeasurementWindow defines a measurement maturation window for broadcast TV.
type MediaBuyCapabilities ¶
type MediaBuyCapabilities struct {
SupportedPricingModels []string `json:"supported_pricing_models,omitempty"`
ReportingDeliveryMethods []string `json:"reporting_delivery_methods,omitempty"`
OfflineDeliveryProtocols []string `json:"offline_delivery_protocols,omitempty"`
Features map[string]any `json:"features,omitempty"`
Execution *MediaBuyExecution `json:"execution,omitempty"`
AudienceTargeting *AudienceTargetingCaps `json:"audience_targeting,omitempty"`
ConversionTracking *ConversionTrackingCaps `json:"conversion_tracking,omitempty"`
ContentStandards *ContentStandardsCaps `json:"content_standards,omitempty"`
Portfolio *PortfolioCaps `json:"portfolio,omitempty"`
}
MediaBuyCapabilities is the media_buy protocol capability block.
type MediaBuyData ¶
type MediaBuyData struct {
MediaBuyID string `json:"media_buy_id"` // Seller's unique identifier for the media buy
Account *Account `json:"account,omitempty"` // Account billed for this media buy
Status string `json:"status"`
RejectionReason string `json:"rejection_reason,omitempty"` // Reason provided by the seller when status is 'rejected'. Present only when statu
ConfirmedAt string `json:"confirmed_at,omitempty"` // ISO 8601 timestamp when the seller confirmed this media buy. A successful create
Cancellation any `json:"cancellation,omitempty"` // Cancellation metadata. Present only when status is 'canceled'.
TotalBudget float64 `json:"total_budget"` // Total budget amount
Packages []Package `json:"packages"` // Array of packages within this media buy
InvoiceRecipient any `json:"invoice_recipient,omitempty"` // Per-buy override for who receives the invoice. When provided, the seller invoice
CreativeDeadline string `json:"creative_deadline,omitempty"` // ISO 8601 timestamp for creative upload deadline
Revision int `json:"revision,omitempty"` // Monotonically increasing revision number. Incremented on every state change or u
CreatedAt string `json:"created_at,omitempty"` // Creation timestamp
UpdatedAt string `json:"updated_at,omitempty"` // Last update timestamp
Ext any `json:"ext,omitempty"`
}
MediaBuyData — Represents a purchased advertising campaign
type MediaBuyDelivery ¶
type MediaBuyDelivery struct {
MediaBuyID string `json:"media_buy_id"`
Status string `json:"status"`
Totals DeliveryTotals `json:"totals"`
ByPackage []PackageDelivery `json:"by_package"`
}
type MediaBuyExecution ¶
type MediaBuyExecution struct {
TrustedMatch *TrustedMatchCaps `json:"trusted_match,omitempty"`
CreativeSpecs *CreativeSpecsCaps `json:"creative_specs,omitempty"`
Targeting *TargetingCaps `json:"targeting,omitempty"`
}
MediaBuyExecution describes technical execution capabilities for media buying.
type MediaBuyListItem ¶
type MediaBuyStatus ¶
type MediaBuyStatus = string
MediaBuyStatus — Status of a media buy.
const ( MediaBuyStatusPendingCreatives MediaBuyStatus = "pending_creatives" MediaBuyStatusPendingStart MediaBuyStatus = "pending_start" MediaBuyStatusActive MediaBuyStatus = "active" MediaBuyStatusPaused MediaBuyStatus = "paused" MediaBuyStatusCompleted MediaBuyStatus = "completed" MediaBuyStatusRejected MediaBuyStatus = "rejected" MediaBuyStatusCanceled MediaBuyStatus = "canceled" )
type MetricType ¶
type MetricType = string
MetricType — Performance metric types for feedback and optimization
const ( MetricTypeOverallPerformance MetricType = "overall_performance" MetricTypeConversionRate MetricType = "conversion_rate" MetricTypeBrandLift MetricType = "brand_lift" MetricTypeClickThroughRate MetricType = "click_through_rate" MetricTypeCompletionRate MetricType = "completion_rate" MetricTypeViewability MetricType = "viewability" MetricTypeBrandSafety MetricType = "brand_safety" MetricTypeCostEfficiency MetricType = "cost_efficiency" )
type MetroSystem ¶
type MetroSystem = string
MetroSystem — Metro area classification systems for geographic targeting
const ( MetroSystemNielsenDma MetroSystem = "nielsen_dma" MetroSystemUkItl1 MetroSystem = "uk_itl1" MetroSystemUkItl2 MetroSystem = "uk_itl2" MetroSystemEurostatNuts2 MetroSystem = "eurostat_nuts2" MetroSystemCustom MetroSystem = "custom" )
type NotificationType ¶
type NotificationType = string
NotificationType — Type of delivery notification for media buy reporting
const ( NotificationTypeScheduled NotificationType = "scheduled" NotificationTypeFinal NotificationType = "final" NotificationTypeDelayed NotificationType = "delayed" NotificationTypeAdjusted NotificationType = "adjusted" )
type OutcomeType ¶
type OutcomeType = string
OutcomeType — The type of outcome reported to a campaign governance agent after a seller inter
const ( OutcomeTypeCompleted OutcomeType = "completed" OutcomeTypeFailed OutcomeType = "failed" OutcomeTypeDelivery OutcomeType = "delivery" )
type Package ¶
type Package struct {
PackageID string `json:"package_id"` // Seller's unique identifier for the package
ProductID string `json:"product_id,omitempty"` // ID of the product this package is based on
Budget float64 `json:"budget,omitempty"` // Budget allocation for this package in the currency specified by the pricing opti
Pacing string `json:"pacing,omitempty"`
PricingOptionID string `json:"pricing_option_id,omitempty"` // ID of the selected pricing option from the product's pricing_options array
BidPrice float64 `json:"bid_price,omitempty"` // Bid price for auction-based pricing. This is the exact bid/price to honor unless
PriceBreakdown any `json:"price_breakdown,omitempty"` // Breakdown of the effective price for this package. On fixed-price packages, echo
Impressions float64 `json:"impressions,omitempty"` // Impression goal for this package
Catalogs []Catalog `json:"catalogs,omitempty"` // Catalogs this package promotes. Each catalog MUST have a distinct type (e.g., on
FormatIDs []FormatRef `json:"format_ids,omitempty"` // Format IDs active for this package. Echoed from the create_media_buy request; om
TargetingOverlay *Targeting `json:"targeting_overlay,omitempty"`
MeasurementTerms *MeasurementTerms `json:"measurement_terms,omitempty"` // Agreed billing measurement and makegood terms for this package. Reflects what wa
PerformanceStandards []PerformanceStandard `json:"performance_standards,omitempty"` // Agreed performance standards for this package. When any entry specifies a vendor
CreativeAssignments []any `json:"creative_assignments,omitempty"` // Creative assets assigned to this package
FormatIDsToProvide []FormatRef `json:"format_ids_to_provide,omitempty"` // Format IDs that creative assets will be provided for this package
OptimizationGoals []any `json:"optimization_goals,omitempty"` // Optimization targets for this package. The seller optimizes delivery toward thes
StartTime string `json:"start_time,omitempty"` // Flight start date/time for this package in ISO 8601 format. When omitted, the pa
EndTime string `json:"end_time,omitempty"` // Flight end date/time for this package in ISO 8601 format. When omitted, the pack
Paused *bool `json:"paused,omitempty"` // Whether this package is paused by the buyer. Paused packages do not deliver impr
Canceled *bool `json:"canceled,omitempty"` // Whether this package has been canceled. Canceled packages stop delivery and cann
Cancellation any `json:"cancellation,omitempty"` // Cancellation metadata. Present only when canceled is true.
AgencyEstimateNumber string `json:"agency_estimate_number,omitempty"` // Agency estimate or authorization number for this package. Echoed from the buyer'
CreativeDeadline string `json:"creative_deadline,omitempty"` // ISO 8601 timestamp for creative upload or change deadline for this package. Afte
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
Package — A specific product within a media buy (line item)
type PackageDelivery ¶
type PackageDelivery struct {
PackageID string `json:"package_id"`
Totals DeliveryTotals `json:"totals"`
}
type PackageInput ¶
type PackageInput struct {
ProductID string `json:"product_id"`
PricingOptionID string `json:"pricing_option_id,omitempty"`
Budget float64 `json:"budget"`
BidPrice float64 `json:"bid_price,omitempty"`
// Business terms (buyer proposals, override product defaults)
MeasurementTerms *MeasurementTerms `json:"measurement_terms,omitempty"`
PerformanceStandards []PerformanceStandard `json:"performance_standards,omitempty"`
// Broadcast / scheduling
AgencyEstimateNumber string `json:"agency_estimate_number,omitempty"`
StartTime string `json:"start_time,omitempty"`
EndTime string `json:"end_time,omitempty"`
}
PackageInput is a single package in a create_media_buy request.
type PaginationRequest ¶
type PaginationRequest struct {
MaxResults int `json:"max_results,omitempty"` // Maximum number of items to return per page
Cursor string `json:"cursor,omitempty"` // Opaque cursor from a previous response to fetch the next page
}
PaginationRequest — Standard cursor-based pagination parameters for list operations
type PaginationResponse ¶
type PaginationResponse struct {
HasMore bool `json:"has_more"` // Whether more results are available beyond this page
Cursor string `json:"cursor,omitempty"` // Opaque cursor to pass in the next request to fetch the next page. Only present w
TotalCount int `json:"total_count,omitempty"` // Total number of items matching the query across all pages. Optional because not
}
PaginationResponse — Standard cursor-based pagination metadata for list responses
type PerformanceFeedback ¶
type PerformanceFeedback struct {
FeedbackID string `json:"feedback_id"` // Unique identifier for this performance feedback submission
MediaBuyID string `json:"media_buy_id"` // Publisher's media buy identifier
PackageID string `json:"package_id,omitempty"` // Specific package within the media buy (if feedback is package-specific)
CreativeID string `json:"creative_id,omitempty"` // Specific creative asset (if feedback is creative-specific)
MeasurementPeriod any `json:"measurement_period"` // Time period for performance measurement
PerformanceIndex float64 `json:"performance_index"` // Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expec
MetricType string `json:"metric_type"` // The business metric being measured
FeedbackSource string `json:"feedback_source"` // Source of the performance data
Status string `json:"status"` // Processing status of the performance feedback
SubmittedAt string `json:"submitted_at"` // ISO 8601 timestamp when feedback was submitted
AppliedAt string `json:"applied_at,omitempty"` // ISO 8601 timestamp when feedback was applied to optimization algorithms
}
PerformanceFeedback — Represents performance feedback data for a media buy or package
type PerformanceStandard ¶
type PerformanceStandard struct {
Metric string `json:"metric"`
Threshold float64 `json:"threshold"`
Standard string `json:"standard,omitempty"`
Vendor *BrandReference `json:"vendor"`
}
PerformanceStandard defines a rate threshold for a performance metric.
type PerformanceStandardMetric ¶
type PerformanceStandardMetric = string
PerformanceStandardMetric — Performance metrics that support rate thresholds on media buys. Each metric spec
const ( PerformanceStandardMetricViewability PerformanceStandardMetric = "viewability" PerformanceStandardMetricIvt PerformanceStandardMetric = "ivt" PerformanceStandardMetricCompletionRate PerformanceStandardMetric = "completion_rate" PerformanceStandardMetricBrandSafety PerformanceStandardMetric = "brand_safety" PerformanceStandardMetricAttentionScore PerformanceStandardMetric = "attention_score" )
type Plan ¶
type Plan struct {
PlanID string `json:"plan_id"`
Brand *BrandReference `json:"brand"`
Objectives string `json:"objectives"`
Budget PlanBudget `json:"budget"`
Channels *PlanChannels `json:"channels,omitempty"`
Flight PlanFlight `json:"flight"`
Countries []string `json:"countries,omitempty"`
Regions []string `json:"regions,omitempty"`
PolicyIDs []string `json:"policy_ids,omitempty"`
PolicyCategories []string `json:"policy_categories,omitempty"`
Audience *AudienceConstraints `json:"audience,omitempty"`
RestrictedAttributes []RestrictedAttribute `json:"restricted_attributes,omitempty"`
RestrictedAttributesCustom []string `json:"restricted_attributes_custom,omitempty"`
MinAudienceSize int `json:"min_audience_size,omitempty"`
HumanReviewRequired bool `json:"human_review_required,omitempty"`
HumanOverride *HumanOverride `json:"human_override,omitempty"`
CustomPolicies []PolicyEntry `json:"custom_policies,omitempty"`
ApprovedSellers []string `json:"approved_sellers,omitempty"`
Delegations []PlanDelegation `json:"delegations,omitempty"`
Portfolio *PlanPortfolio `json:"portfolio,omitempty"`
Ext map[string]any `json:"ext,omitempty"`
}
Plan is a campaign governance plan — the authorized parameters for a campaign. Inline nested object in sync_plans_request.plans; must be hand-written because the generator does not descend into inline arrays.
func (*Plan) Validate ¶
func (p *Plan) Validate() []PlanValidationError
Validate enforces the cross-field invariants that the AdCP governance schema encodes as oneOf and if/then rules plus defense-in-depth size caps. Callers should run Validate before submitting a plan to a governance agent; governance-agent implementors MUST run it on receipt — Validate is advisory, not enforcing, and an agent that skips it accepts plans that violate the schema's load-bearing human-oversight invariants.
Enforced invariants:
- budget.reallocation_threshold XOR budget.reallocation_unlimited must be set
- policy_categories ∋ regulated vertical ⇒ human_review_required = true (case- and whitespace-insensitive to catch common obfuscations)
- policy_ids ∋ eu_ai_act_annex_iii ⇒ human_review_required = true (ditto)
- objectives ≤ 2000 chars (schema maxLength)
- custom_policies[].policy ≤ 5000 chars; .description ≤ 500 chars
- human_override.reason ≥ 20 chars; .approver parses as an email address; .approved_at parses as RFC 3339 when non-empty
- portfolio.member_plan_ids required when portfolio is set
- delegations[].agent_url and .authority required
- brand.data_subject_contestation URL must be https; email must parse
Not enforced (governance-agent responsibility): semantic industry matching, prompt-injection content filtering beyond size, registry vs inline policy segmentation in LLM prompts.
Returns nil when the plan has no violations. Errors use stable codes — callers embedding Validate in a server should return the code, not the raw message, to avoid leaking the untrusted input values back to the caller.
type PlanBudget ¶
type PlanBudget struct {
Total float64 `json:"total"`
Currency string `json:"currency"`
PerSellerMaxPct float64 `json:"per_seller_max_pct,omitempty"`
ReallocationThreshold *float64 `json:"reallocation_threshold,omitempty"`
ReallocationUnlimited bool `json:"reallocation_unlimited,omitempty"`
Allocations map[string]PlanBudgetAllocation `json:"allocations,omitempty"`
}
PlanBudget authorizes spend for a plan. Exactly one of ReallocationThreshold or ReallocationUnlimited must be set (the schema's oneOf constraint). Use Validate to enforce this invariant at runtime; struct types alone cannot.
type PlanBudgetAllocation ¶
type PlanBudgetAllocation struct {
Amount float64 `json:"amount,omitempty"`
MaxPct float64 `json:"max_pct,omitempty"`
}
PlanBudgetAllocation caps spend for a single purchase type within a plan.
type PlanChannelMixTarget ¶
type PlanChannelMixTarget struct {
MinPct float64 `json:"min_pct,omitempty"`
MaxPct float64 `json:"max_pct,omitempty"`
}
PlanChannelMixTarget is a per-channel target allocation range.
type PlanChannels ¶
type PlanChannels struct {
Required []string `json:"required,omitempty"`
Allowed []string `json:"allowed,omitempty"`
MixTargets map[string]PlanChannelMixTarget `json:"mix_targets,omitempty"`
}
PlanChannels constrains channel selection for a plan.
type PlanDelegation ¶
type PlanDelegation struct {
AgentURL string `json:"agent_url"`
Authority string `json:"authority"`
BudgetLimit *PlanDelegationBudget `json:"budget_limit,omitempty"`
Markets []string `json:"markets,omitempty"`
ExpiresAt string `json:"expires_at,omitempty"`
}
PlanDelegation grants an agent authority to execute against a plan.
type PlanDelegationBudget ¶
type PlanDelegationBudget struct {
Amount float64 `json:"amount"`
Currency string `json:"currency"`
}
PlanDelegationBudget caps the budget a delegated agent can commit.
type PlanFlight ¶
PlanFlight defines the authorized flight window (ISO 8601 timestamps).
type PlanPortfolio ¶
type PlanPortfolio struct {
MemberPlanIDs []string `json:"member_plan_ids"`
TotalBudgetCap *PlanPortfolioBudgetCap `json:"total_budget_cap,omitempty"`
}
PlanPortfolio marks a plan as a portfolio plan governing member plans.
type PlanPortfolioBudgetCap ¶
type PlanPortfolioBudgetCap struct {
Amount float64 `json:"amount"`
Currency string `json:"currency"`
}
PlanPortfolioBudgetCap caps aggregate spend across member plans.
type PlanValidationError ¶
PlanValidationError describes a single invariant violation on a Plan. Field is a JSON pointer-style path; Code is a stable machine-readable token suitable for direct mapping to AdCP INVALID_FIELD error responses.
func (PlanValidationError) Error ¶
func (e PlanValidationError) Error() string
type PolicyCategory ¶
type PolicyCategory = string
PolicyCategory — The nature of the obligation a policy represents.
const ( PolicyCategoryRegulation PolicyCategory = "regulation" PolicyCategoryStandard PolicyCategory = "standard" )
type PolicyCategoryDefinition ¶
type PolicyCategoryDefinition struct {
CategoryID string `json:"category_id"` // Unique identifier for this category. Used in plan.policy_categories, signal-defi
Name string `json:"name"` // Human-readable name (e.g., 'Children-Directed Content').
Description string `json:"description"` // What this category covers. Defines the boundary — what campaigns or data fall un
RegulatoryFrameworks []any `json:"regulatory_frameworks,omitempty"` // Key regulations and standards grouped under this category. Governance agents use
RestrictedAttributes []string `json:"restricted_attributes,omitempty"` // Restricted attribute categories that regulations in this category prohibit for t
RequiresHumanReview *bool `json:"requires_human_review,omitempty"` // When true, any plan declaring this category MUST set plan.human_review_required
Industries []string `json:"industries,omitempty"` // Industries where this category commonly applies (e.g., 'pharmaceutical' for age_
Guidance string `json:"guidance,omitempty"` // Implementation notes for governance agents. Edge cases, disambiguation, and comm
RelatedCategories []string `json:"related_categories,omitempty"` // Categories that frequently co-occur (e.g., 'children_directed' often appears wit
}
PolicyCategoryDefinition — Definition of a policy category in the registry. Policy categories group related regulatory regimes
type PolicyEnforcement ¶
type PolicyEnforcement = string
PolicyEnforcement — How governance agents treat violations of a policy. Uses RFC 2119 keywords.
const ( PolicyEnforcementMust PolicyEnforcement = "must" PolicyEnforcementShould PolicyEnforcement = "should" PolicyEnforcementMay PolicyEnforcement = "may" )
type PolicyEntry ¶
type PolicyEntry struct {
PolicyID string `json:"policy_id"` // Unique identifier for this policy. Registry-published ids are canonical (e.g., "
Source string `json:"source,omitempty"` // Origin of this policy. 'registry' = published to the shared AdCP policy registry
Version string `json:"version,omitempty"` // Semver version string (e.g., "1.0.0"). Incremented when policy content changes.
Name string `json:"name,omitempty"` // Human-readable name (e.g., "UK HFSS Restrictions"). Optional for inline bespoke
Description string `json:"description,omitempty"` // Brief summary of what this policy covers.
Category string `json:"category,omitempty"` // The nature of the obligation: regulation (legal requirement) or standard (best p
Enforcement string `json:"enforcement"` // How governance agents treat violations. Regulations are typically "must"; standa
RequiresHumanReview *bool `json:"requires_human_review,omitempty"` // When true, plans subject to this policy MUST set plan.human_review_required = tr
Jurisdictions []string `json:"jurisdictions,omitempty"` // ISO 3166-1 alpha-2 country codes where this policy applies. Empty array means th
RegionAliases map[string][]string `json:"region_aliases,omitempty"` // Named groups of jurisdictions for convenience (e.g., {"EU": ["AT","BE","BG",...]
PolicyCategories []string `json:"policy_categories,omitempty"` // Regulatory categories this policy belongs to (e.g., ["children_directed", "age_r
Channels []string `json:"channels,omitempty"` // Advertising channels this policy applies to. If omitted or null, the policy appl
GovernanceDomains []string `json:"governance_domains,omitempty"` // Governance sub-domains this policy applies to. Determines which types of governa
EffectiveDate string `json:"effective_date,omitempty"` // ISO 8601 date when the regulation or standard takes effect. Before this date, go
SunsetDate string `json:"sunset_date,omitempty"` // ISO 8601 date when the regulation or standard is no longer enforced. After this
SourceURL string `json:"source_url,omitempty"` // Link to the source regulation, standard, or legislation.
SourceName string `json:"source_name,omitempty"` // Name of the issuing body (e.g., "UK Food Standards Agency", "US Federal Trade Co
Policy string `json:"policy"` // Natural language policy text describing what is required, prohibited, or recomme
Guidance string `json:"guidance,omitempty"` // Implementation notes for governance agent developers. Not used in evaluation pro
Exemplars any `json:"exemplars,omitempty"` // Calibration examples for governance agents, following the Content Standards patt
Ext any `json:"ext,omitempty"`
}
PolicyEntry — A policy — either published to the shared registry (with full regulatory metadata) or authored inlin
type PortfolioCaps ¶
type PortfolioCaps struct {
PublisherDomains []string `json:"publisher_domains"`
PrimaryChannels []string `json:"primary_channels,omitempty"`
PrimaryCountries []string `json:"primary_countries,omitempty"`
Description string `json:"description,omitempty"`
AdvertisingPolicies string `json:"advertising_policies,omitempty"`
}
PortfolioCaps describes the seller's inventory portfolio. publisher_domains is required when present.
type PostalSystem ¶
type PostalSystem = string
PostalSystem — Postal code systems for geographic targeting. System names encode country and pr
const ( PostalSystemUsZip PostalSystem = "us_zip" PostalSystemUsZipPlusFour PostalSystem = "us_zip_plus_four" PostalSystemGbOutward PostalSystem = "gb_outward" PostalSystemGbFull PostalSystem = "gb_full" PostalSystemCaFsa PostalSystem = "ca_fsa" PostalSystemCaFull PostalSystem = "ca_full" PostalSystemDePlz PostalSystem = "de_plz" PostalSystemFrCodePostal PostalSystem = "fr_code_postal" PostalSystemAuPostcode PostalSystem = "au_postcode" PostalSystemChPlz PostalSystem = "ch_plz" PostalSystemAtPlz PostalSystem = "at_plz" )
type Preview ¶
type Preview struct {
PreviewID string `json:"preview_id"`
Input map[string]any `json:"input"`
Renders []PreviewRender `json:"renders"`
}
type PreviewCreativeRequest ¶
type PreviewCreativeRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
RequestType string `json:"request_type"` // Preview mode. 'single' previews one creative manifest. 'batch' previews multiple
CreativeManifest *CreativeManifest `json:"creative_manifest,omitempty"` // Complete creative manifest with all required assets for the format. Required whe
FormatID *FormatRef `json:"format_id,omitempty"` // Format identifier for rendering the preview. Defaults to creative_manifest.forma
Inputs []any `json:"inputs,omitempty"` // Array of input sets for generating multiple preview variants. Each input set def
TemplateID string `json:"template_id,omitempty"` // Specific template ID for custom format rendering. Used in single mode.
Quality string `json:"quality,omitempty"` // Render quality. 'draft' produces fast, lower-fidelity renderings. 'production' p
OutputFormat string `json:"output_format,omitempty"` // Output format. 'url' returns preview_url (iframe-embeddable URL), 'html' returns
ItemLimit int `json:"item_limit,omitempty"` // Maximum number of catalog items to render per preview variant. Used in single mo
Requests []any `json:"requests,omitempty"` // Array of preview requests (1-50 items). Required when request_type is 'batch'. E
VariantID string `json:"variant_id,omitempty"` // Platform-assigned variant identifier from get_creative_delivery response. Requir
CreativeID string `json:"creative_id,omitempty"` // Creative identifier for context. Used in variant mode.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
PreviewCreativeRequest — Request to generate previews of creative manifests. Uses request_type to select single, batch, or va
type PreviewOutputFormat ¶
type PreviewOutputFormat = string
PreviewOutputFormat — Output format for creative previews
const ( PreviewOutputFormatURL PreviewOutputFormat = "url" PreviewOutputFormatHTML PreviewOutputFormat = "html" )
type PreviewRender ¶
type PreviewResult ¶
type PricingModel ¶
type PricingModel = string
PricingModel — Supported pricing models for advertising products
const ( PricingModelCPM PricingModel = "cpm" PricingModelVcpm PricingModel = "vcpm" PricingModelCPC PricingModel = "cpc" PricingModelCpcv PricingModel = "cpcv" PricingModelCpv PricingModel = "cpv" PricingModelCpp PricingModel = "cpp" PricingModelCPA PricingModel = "cpa" PricingModelFlatRate PricingModel = "flat_rate" PricingModelTime PricingModel = "time" )
type PricingOption ¶
type PricingOption struct {
PricingOptionID string `json:"pricing_option_id"`
PricingModel string `json:"pricing_model"`
Currency string `json:"currency"`
FixedPrice float64 `json:"fixed_price,omitempty"`
FloorPrice float64 `json:"floor_price,omitempty"`
MinSpendPerPackage float64 `json:"min_spend_per_package,omitempty"`
MaxBid *bool `json:"max_bid,omitempty"`
PriceGuidance any `json:"price_guidance,omitempty"`
PriceBreakdown any `json:"price_breakdown,omitempty"`
EventSourceID string `json:"event_source_id,omitempty"`
EventType string `json:"event_type,omitempty"`
CustomEventName string `json:"custom_event_name,omitempty"`
EligibleAdjustments []string `json:"eligible_adjustments,omitempty"`
Parameters any `json:"parameters,omitempty"`
}
PricingOption is the flattened union of all variants in pricing-option.json. The schema is a oneOf of 9 pricing models (cpm, vcpm, cpc, cpcv, cpv, cpp, cpa, flat_rate, time); the Go representation carries every variant's fields so a single struct type can be constructed for any model. PricingModel is the discriminator; callers MUST only set fields that apply to their model.
Fields by variant:
cpm / vcpm / cpc / cpcv / cpv / cpp: FixedPrice (fixed) OR FloorPrice + PriceGuidance (auction); MaxBid for auction models to interpret bid_price as a ceiling. cpa: FixedPrice, EventSourceID, EventType (required); CustomEventName when EventType="custom"; EligibleAdjustments for adjustment filtering. flat_rate: FixedPrice (required). time: FixedPrice (required), Parameters for duration/unit specifics. All variants: PricingOptionID, Currency, MinSpendPerPackage, PriceBreakdown.
type Product ¶
type Product struct {
ProductID string `json:"product_id"` // Unique identifier for the product
Name string `json:"name"` // Human-readable product name
Description string `json:"description"` // Detailed description of the product and its inventory
PublisherProperties []PublisherPropertySelector `json:"publisher_properties"` // Publisher properties covered by this product. Buyers fetch actual property defin
Channels []string `json:"channels,omitempty"` // Advertising channels this product is sold as. Products inherit from their proper
FormatIDs []FormatRef `json:"format_ids"` // Array of supported creative format IDs - structured format_id objects with agent
Placements []any `json:"placements,omitempty"` // Optional array of specific placements within this product. When provided, buyers
DeliveryType string `json:"delivery_type"`
Exclusivity string `json:"exclusivity,omitempty"` // Whether this product offers exclusive access to its inventory. Defaults to 'none
PricingOptions []PricingOption `json:"pricing_options"` // Available pricing models for this product
Forecast any `json:"forecast,omitempty"` // Forecasted delivery metrics for this product. Gives buyers an estimate of expect
OutcomeMeasurement any `json:"outcome_measurement,omitempty"`
DeliveryMeasurement any `json:"delivery_measurement,omitempty"` // Measurement provider and methodology for delivery metrics. The buyer accepts the
MeasurementTerms *MeasurementTerms `json:"measurement_terms,omitempty"` // Seller's default billing measurement and makegood terms. Declares who counts the
PerformanceStandards []PerformanceStandard `json:"performance_standards,omitempty"` // Seller's default performance standards for this product: viewability, IVT, compl
CancellationPolicy *CancellationPolicy `json:"cancellation_policy,omitempty"` // Cancellation terms for this product. Declares the minimum notice period required
ReportingCapabilities any `json:"reporting_capabilities"`
CreativePolicy any `json:"creative_policy,omitempty"`
IsCustom *bool `json:"is_custom,omitempty"` // Whether this is a custom product
PropertyTargetingAllowed *bool `json:"property_targeting_allowed,omitempty"` // Whether buyers can filter this product to a subset of its publisher_properties.
DataProviderSignals []any `json:"data_provider_signals,omitempty"` // Data provider signals available for this product. Buyers fetch signal definition
SignalTargetingAllowed *bool `json:"signal_targeting_allowed,omitempty"` // Whether buyers can filter this product to a subset of its data_provider_signals.
CatalogTypes []string `json:"catalog_types,omitempty"` // Catalog types this product supports for catalog-driven campaigns. A sponsored pr
MetricOptimization any `json:"metric_optimization,omitempty"` // Metric optimization capabilities for this product. Presence indicates the produc
MaxOptimizationGoals int `json:"max_optimization_goals,omitempty"` // Maximum number of optimization_goals this product accepts on a package. When abs
MeasurementReadiness any `json:"measurement_readiness,omitempty"` // Assessment of whether the buyer's event source setup is sufficient for this prod
ConversionTracking any `json:"conversion_tracking,omitempty"` // Conversion event tracking for this product. Presence indicates the product suppo
CatalogMatch any `json:"catalog_match,omitempty"` // When the buyer provides a catalog on get_products, indicates which catalog items
BriefRelevance string `json:"brief_relevance,omitempty"` // Explanation of why this product matches the brief (only included when brief is p
ExpiresAt string `json:"expires_at,omitempty"` // Expiration timestamp. After this time, the product may no longer be available fo
ProductCard any `json:"product_card,omitempty"` // Optional standard visual card (300x400px) for displaying this product in user in
ProductCardDetailed any `json:"product_card_detailed,omitempty"` // Optional detailed card with carousel and full specifications. Provides rich prod
Collections []any `json:"collections,omitempty"` // Collections available in this product. Each entry references collections declare
CollectionTargetingAllowed *bool `json:"collection_targeting_allowed,omitempty"` // Whether buyers can target a subset of this product's collections. When false (de
Installments []any `json:"installments,omitempty"` // Specific installments included in this product. Each installment references its
EnforcedPolicies []string `json:"enforced_policies,omitempty"` // Registry policy IDs the seller enforces for this product. Enforcement level come
TrustedMatch any `json:"trusted_match,omitempty"` // Trusted Match Protocol capabilities for this product. When present, the product
MaterialSubmission any `json:"material_submission,omitempty"` // Instructions for submitting physical creative materials (print, static OOH, cine
Ext any `json:"ext,omitempty"`
}
Product — Represents available advertising inventory
type ProductionQuality ¶
type ProductionQuality = string
ProductionQuality — Production quality tier for collection content. Maps to OpenRTB content.prodq: p
const ( ProductionQualityProfessional ProductionQuality = "professional" ProductionQualityProsumer ProductionQuality = "prosumer" ProductionQualityUgc ProductionQuality = "ugc" )
type ProductsData ¶
type PropertyListChangedWebhook ¶
type PropertyListChangedWebhook struct {
IdempotencyKey string `json:"idempotency_key"` // Sender-generated key stable across retries of the same webhook event. Governance
Event string `json:"event"` // The event type
ListID string `json:"list_id"` // ID of the property list that changed
ListName string `json:"list_name,omitempty"` // Name of the property list
ChangeSummary any `json:"change_summary,omitempty"` // Summary of changes to the resolved list
ResolvedAt string `json:"resolved_at"` // When the list was re-resolved
CacheValidUntil string `json:"cache_valid_until,omitempty"` // When the consumer should refresh from the governance agent
Signature string `json:"signature"` // Cryptographic signature of the webhook payload, signed with the agent's private
Ext any `json:"ext,omitempty"`
}
PropertyListChangedWebhook — Webhook notification sent when a property list's resolved properties change. Contains a summary only
func (*PropertyListChangedWebhook) IdempotencyKeyPtr ¶
func (p *PropertyListChangedWebhook) IdempotencyKeyPtr() *string
type PropertyType ¶
type PropertyType = string
PropertyType — Types of addressable advertising properties with verifiable ownership. Property
const ( PropertyTypeWebsite PropertyType = "website" PropertyTypeMobileApp PropertyType = "mobile_app" PropertyTypeCtvApp PropertyType = "ctv_app" PropertyTypeDesktopApp PropertyType = "desktop_app" PropertyTypeDooh PropertyType = "dooh" PropertyTypePodcast PropertyType = "podcast" PropertyTypeRadio PropertyType = "radio" PropertyTypeLinearTv PropertyType = "linear_tv" PropertyTypeStreamingAudio PropertyType = "streaming_audio" PropertyTypeAiAssistant PropertyType = "ai_assistant" )
type ProposalStatus ¶
type ProposalStatus = string
ProposalStatus — Lifecycle status of a proposal. Absent means the proposal is ready to buy (backw
const ( ProposalStatusDraft ProposalStatus = "draft" ProposalStatusCommitted ProposalStatus = "committed" )
type ProvidePerformanceFeedbackError ¶
type ProvidePerformanceFeedbackError struct {
Errors []AdcpError `json:"errors"` // Array of errors explaining why feedback was rejected (e.g., invalid measurement
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ProvidePerformanceFeedbackError — Error response - feedback rejected or could not be processed
type ProvidePerformanceFeedbackRequest ¶
type ProvidePerformanceFeedbackRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
MediaBuyID string `json:"media_buy_id"` // Seller's media buy identifier
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for this request. Prevents duplicate feedback submis
MeasurementPeriod any `json:"measurement_period"` // Time period for performance measurement
PerformanceIndex float64 `json:"performance_index"` // Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expec
PackageID string `json:"package_id,omitempty"` // Specific package within the media buy (if feedback is package-specific)
CreativeID string `json:"creative_id,omitempty"` // Specific creative asset (if feedback is creative-specific)
MetricType string `json:"metric_type,omitempty"` // The business metric being measured
FeedbackSource string `json:"feedback_source,omitempty"` // Source of the performance data
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ProvidePerformanceFeedbackRequest — Request payload for provide_performance_feedback task
type ProvidePerformanceFeedbackResponse ¶
type ProvidePerformanceFeedbackResponse = any
ProvidePerformanceFeedbackResponse is a discriminated union — use the appropriate variant type.
type ProvidePerformanceFeedbackSuccess ¶
type ProvidePerformanceFeedbackSuccess struct {
Success bool `json:"success"` // Whether the performance feedback was successfully received
Sandbox *bool `json:"sandbox,omitempty"` // When true, this response contains simulated data from sandbox mode.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ProvidePerformanceFeedbackSuccess — Success response - feedback received and processed
type PublisherIdentifierTypes ¶
type PublisherIdentifierTypes = string
PublisherIdentifierTypes — Valid identifier types for publisher/legal entity identification
const ( PublisherIdentifierTypesTagID PublisherIdentifierTypes = "tag_id" PublisherIdentifierTypesDuns PublisherIdentifierTypes = "duns" PublisherIdentifierTypesLei PublisherIdentifierTypes = "lei" PublisherIdentifierTypesSellerID PublisherIdentifierTypes = "seller_id" PublisherIdentifierTypesGln PublisherIdentifierTypes = "gln" )
type PublisherPropertySelector ¶
type PublisherPropertySelector struct {
PublisherDomain string `json:"publisher_domain"`
SelectionType string `json:"selection_type"`
PropertyIDs []string `json:"property_ids,omitempty"`
PropertyTags []string `json:"property_tags,omitempty"`
}
PublisherPropertySelector is the flattened union of the three variants in publisher-property-selector.json. SelectionType is the discriminator:
"all": set PublisherDomain only. "by_id": set PublisherDomain + PropertyIDs. "by_tag": set PublisherDomain + PropertyTags.
type PurchaseType ¶
type PurchaseType = string
PurchaseType — The type of financial commitment being governed.
const ( PurchaseTypeMediaBuy PurchaseType = "media_buy" PurchaseTypeRightsLicense PurchaseType = "rights_license" PurchaseTypeSignalActivation PurchaseType = "signal_activation" PurchaseTypeCreativeServices PurchaseType = "creative_services" )
type ReachUnit ¶
type ReachUnit = string
ReachUnit — Unit of measurement for reach and audience size metrics. Different channels and
type Render ¶
Render is a rendering variant inside a CreativeFormat. Wired into generated CreativeFormat via schemas/generate.py's INLINE_TYPE_HINTS so the format.json renders[] oneOf items become []Render instead of []any.
type ReportPlanOutcomeRequest ¶
type ReportPlanOutcomeRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
PlanID string `json:"plan_id"` // The plan this outcome is for. The plan uniquely scopes the account and operator;
CheckID string `json:"check_id,omitempty"` // The check_id from check_governance. Links the outcome to the governance check th
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for this request. Prevents duplicate outcome reports
PurchaseType string `json:"purchase_type,omitempty"` // The type of financial commitment this outcome is for. Determines which budget al
Outcome string `json:"outcome"` // Outcome type.
SellerResponse any `json:"seller_response,omitempty"` // The seller's full response. Required when outcome is 'completed'.
Delivery any `json:"delivery,omitempty"` // Delivery metrics. Required when outcome is 'delivery'.
Error any `json:"error,omitempty"` // Error details. Required when outcome is 'failed'.
GovernanceContext string `json:"governance_context"` // Opaque governance context from the check_governance response that authorized thi
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ReportPlanOutcomeRequest — Report the outcome of an action to the governance agent. Called by the orchestrator (buyer-side agen
type ReportPlanOutcomeResponse ¶
type ReportPlanOutcomeResponse struct {
OutcomeID string `json:"outcome_id"` // Unique identifier for this outcome record.
Status string `json:"status"` // 'accepted' means state updated with no issues. 'findings' means issues were dete
CommittedBudget float64 `json:"committed_budget,omitempty"` // Budget committed from this outcome. Present for 'completed' and 'failed' outcome
Findings []any `json:"findings,omitempty"` // Issues detected. Present only when status is 'findings'.
PlanSummary any `json:"plan_summary,omitempty"` // Updated plan budget state. Present for 'completed' and 'failed' outcomes.
Replayed *bool `json:"replayed,omitempty"` // Set to true when this response is a cached replay returned for an idempotency_ke
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
ReportPlanOutcomeResponse — Response from reporting an action outcome. Only returned to the orchestrator (buyer-side agent) that
type ReportedSpend ¶
ReportedSpend is the spend amount and currency.
type ReportingFrequency ¶
type ReportingFrequency = string
ReportingFrequency — Available frequencies for delivery reports and metrics updates
const ( ReportingFrequencyHourly ReportingFrequency = "hourly" ReportingFrequencyDaily ReportingFrequency = "daily" ReportingFrequencyMonthly ReportingFrequency = "monthly" )
type ReportingPeriod ¶
type RequestSigningCapabilities ¶
type RequestSigningCapabilities struct {
Supported bool `json:"supported"`
CoversContentDigest string `json:"covers_content_digest,omitempty"`
RequiredFor []string `json:"required_for,omitempty"`
WarnFor []string `json:"warn_for,omitempty"`
SupportedFor []string `json:"supported_for,omitempty"`
}
RequestSigningCapabilities declares RFC 9421 signing policy.
type ResolvedCollection ¶
type ResolvedCollection struct {
CollectionRID string `json:"collection_rid,omitempty"`
Name string `json:"name"`
DistributionIDs []DistributionID `json:"distribution_ids,omitempty"`
ContentRating *ContentRating `json:"content_rating,omitempty"`
Genre []string `json:"genre,omitempty"`
GenreTaxonomy string `json:"genre_taxonomy,omitempty"`
Kind string `json:"kind,omitempty"`
}
ResolvedCollection is a single collection entry in a get_collection_list response.
type ResponseType ¶
type ResponseType = string
ResponseType — What the publisher wants back from a TMP context match. Determines the richness
const ( ResponseTypeActivation ResponseType = "activation" ResponseTypeCatalogItems ResponseType = "catalog_items" ResponseTypeCreative ResponseType = "creative" ResponseTypeDeal ResponseType = "deal" )
type RestrictedAttribute ¶
type RestrictedAttribute = string
RestrictedAttribute — Personal data categories that may be restricted from use in audience targeting.
const ( RestrictedAttributeRacialEthnicOrigin RestrictedAttribute = "racial_ethnic_origin" RestrictedAttributePoliticalOpinions RestrictedAttribute = "political_opinions" RestrictedAttributeReligiousBeliefs RestrictedAttribute = "religious_beliefs" RestrictedAttributeTradeUnionMembership RestrictedAttribute = "trade_union_membership" RestrictedAttributeHealthData RestrictedAttribute = "health_data" RestrictedAttributeSexLifeSexualOrientation RestrictedAttribute = "sex_life_sexual_orientation" RestrictedAttributeGeneticData RestrictedAttribute = "genetic_data" RestrictedAttributeBiometricData RestrictedAttribute = "biometric_data" RestrictedAttributeAge RestrictedAttribute = "age" RestrictedAttributeFamilialStatus RestrictedAttribute = "familial_status" )
type RevocationNotification ¶
type RevocationNotification struct {
IdempotencyKey string `json:"idempotency_key"` // Sender-generated key stable across retries of the same revocation notification.
RightsID string `json:"rights_id"` // The revoked rights grant identifier
BrandID string `json:"brand_id"` // Brand identifier of the rights subject
Reason string `json:"reason"` // Human-readable reason for revocation
EffectiveAt string `json:"effective_at"` // When the revocation takes effect. Immediate revocations use current time. Grace
RevokedUses []string `json:"revoked_uses,omitempty"` // If present, only these uses are revoked (partial revocation). If absent, all use
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
RevocationNotification — Payload sent by a rights holder to a buyer's revocation_webhook when rights are revoked. The buyer m
func (*RevocationNotification) IdempotencyKeyPtr ¶
func (p *RevocationNotification) IdempotencyKeyPtr() *string
type RightType ¶
type RightType = string
RightType — Categories of intellectual property rights that can be licensed through the bran
type RightUse ¶
type RightUse = string
RightUse — Types of rights usage that can be licensed through the brand protocol. Aligned w
const ( RightUseLikeness RightUse = "likeness" RightUseVoice RightUse = "voice" RightUseName RightUse = "name" RightUseEndorsement RightUse = "endorsement" RightUseMotionCapture RightUse = "motion_capture" RightUseSignature RightUse = "signature" RightUseCatchphrase RightUse = "catchphrase" RightUseSync RightUse = "sync" RightUseBackgroundMusic RightUse = "background_music" RightUseEditorial RightUse = "editorial" RightUseCommercial RightUse = "commercial" RightUseAiGeneratedImage RightUse = "ai_generated_image" )
type SICapabilities ¶
type SICapabilities struct {
Endpoint SIEndpoint `json:"endpoint"`
Capabilities map[string]any `json:"capabilities"`
BrandURL string `json:"brand_url,omitempty"`
}
SICapabilities is the sponsored_intelligence protocol capability block. Callers declaring this block MUST populate Endpoint.Transports and Capabilities — the schema requires both, and a nil/empty value will fail upstream validation.
type SIEndpoint ¶
type SIEndpoint struct {
Transports []SITransport `json:"transports"`
Preferred string `json:"preferred,omitempty"`
}
type SITransport ¶
type ServeOption ¶
type ServeOption func(*serveConfig)
ServeOption configures the HTTP server.
func WithPath ¶
func WithPath(path string) ServeOption
WithPath sets the MCP endpoint path (default: /mcp).
func WithPort ¶
func WithPort(port int) ServeOption
WithPort sets the listen port (default: PORT env or 3001).
type SiSessionStatus ¶
type SiSessionStatus = string
SiSessionStatus — State of a Sponsored Intelligence session between a host and a brand agent
const ( SiSessionStatusActive SiSessionStatus = "active" SiSessionStatusPendingHandoff SiSessionStatus = "pending_handoff" SiSessionStatusComplete SiSessionStatus = "complete" SiSessionStatusTerminated SiSessionStatus = "terminated" )
type Signal ¶
type Signal struct {
ID string `json:"id"` // Signal identifier within this data provider's catalog
Name string `json:"name"` // Human-readable signal name
Description string `json:"description,omitempty"` // Detailed description of what this signal represents and how it's derived
ValueType string `json:"value_type"` // The data type of this signal's values
Tags []string `json:"tags,omitempty"` // Tags for grouping and filtering signals within the catalog
AllowedValues []string `json:"allowed_values,omitempty"` // For categorical signals, the valid values users can be assigned
RestrictedAttributes []string `json:"restricted_attributes,omitempty"` // Restricted attribute categories this signal touches. Data providers SHOULD decla
PolicyCategories []string `json:"policy_categories,omitempty"` // Policy categories this signal is sensitive for (e.g., a children's interest sign
Range any `json:"range,omitempty"` // For numeric signals, the valid value range
}
Signal — Definition of a signal in a data provider's catalog, published via adagents.json
type SignalCatalogType ¶
type SignalCatalogType = string
SignalCatalogType — Types of signal catalogs available for audience targeting
const ( SignalCatalogTypeMarketplace SignalCatalogType = "marketplace" SignalCatalogTypeCustom SignalCatalogType = "custom" SignalCatalogTypeOwned SignalCatalogType = "owned" )
type SignalFilters ¶
type SignalFilters struct {
MaxCPM float64 `json:"max_cpm,omitempty"`
MinCoveragePercentage float64 `json:"min_coverage_percentage,omitempty"`
CatalogTypes []string `json:"catalog_types,omitempty"`
}
SignalFilters contains optional filters for get_signals.
type SignalPricing ¶
type SignalPricing = VendorPricingOption
SignalPricing is an alias for VendorPricingOption. Upstream's signal-pricing-option.json is a deprecated $ref to vendor-pricing-option.json; the two were always the same shape on the wire. Kept here so existing callers that reference SignalPricing continue to compile.
type SignalSource ¶
type SignalSource = string
SignalSource — Source type for signal identifiers. Determines how the signal is referenced and
const ( SignalSourceCatalog SignalSource = "catalog" SignalSourceAgent SignalSource = "agent" )
type SignalValueType ¶
type SignalValueType = string
SignalValueType — The data type of a signal's values, determining how it can be targeted
const ( SignalValueTypeBinary SignalValueType = "binary" SignalValueTypeCategorical SignalValueType = "categorical" SignalValueTypeNumeric SignalValueType = "numeric" )
type SignalsCapabilities ¶
type SignalsCapabilities struct {
DataProviderDomains []string `json:"data_provider_domains,omitempty"`
Features map[string]bool `json:"features,omitempty"`
}
SignalsCapabilities is the signals protocol capability block.
type SimulateBudgetParams ¶
type SimulateBudgetParams struct {
AccountID string `json:"account_id,omitempty"`
MediaBuyID string `json:"media_buy_id,omitempty"`
SpendPercentage float64 `json:"spend_percentage"`
}
SimulateBudgetParams contains budget simulation parameters.
type SimulateDeliveryParams ¶
type SimulateDeliveryParams struct {
Impressions int `json:"impressions,omitempty"`
Clicks int `json:"clicks,omitempty"`
ReportedSpend *ReportedSpend `json:"reported_spend,omitempty"`
Conversions int `json:"conversions,omitempty"`
}
SimulateDeliveryParams contains delivery simulation parameters.
type SimulationResult ¶
type SimulationResult struct {
Success bool `json:"success"`
Simulated any `json:"simulated"`
Cumulative any `json:"cumulative,omitempty"`
}
SimulationResult is returned by simulate_* scenarios.
type SimulationSuccess ¶
type SimulationSuccess struct {
Success bool `json:"success"`
Simulated map[string]any `json:"simulated"` // Values injected or applied by this call. Shape depends on scenario.
Cumulative map[string]any `json:"cumulative,omitempty"` // Running totals across all simulation calls (simulate_delivery only)
Message string `json:"message,omitempty"`
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
SimulationSuccess — A simulate_delivery or simulate_budget_spend scenario succeeded. For delivery: simulated contains im
type SortDirection ¶
type SortDirection = string
SortDirection — Sort direction for list queries
const ( SortDirectionAsc SortDirection = "asc" SortDirectionDesc SortDirection = "desc" )
type SortMetric ¶
type SortMetric = string
SortMetric — Numeric delivery metrics available for sorting breakdown rows. Subset of deliver
const ( SortMetricImpressions SortMetric = "impressions" SortMetricSpend SortMetric = "spend" SortMetricClicks SortMetric = "clicks" SortMetricCtr SortMetric = "ctr" SortMetricViews SortMetric = "views" SortMetricCompletedViews SortMetric = "completed_views" SortMetricCompletionRate SortMetric = "completion_rate" SortMetricConversions SortMetric = "conversions" SortMetricConversionValue SortMetric = "conversion_value" SortMetricRoas SortMetric = "roas" SortMetricCostPerAcquisition SortMetric = "cost_per_acquisition" SortMetricNewToBrandRate SortMetric = "new_to_brand_rate" SortMetricLeads SortMetric = "leads" SortMetricGrps SortMetric = "grps" SortMetricReach SortMetric = "reach" SortMetricFrequency SortMetric = "frequency" SortMetricEngagements SortMetric = "engagements" SortMetricFollows SortMetric = "follows" SortMetricSaves SortMetric = "saves" SortMetricProfileVisits SortMetric = "profile_visits" SortMetricEngagementRate SortMetric = "engagement_rate" SortMetricCostPerClick SortMetric = "cost_per_click" )
type SpecialCategory ¶
type SpecialCategory = string
SpecialCategory — Category of special or event-anchored content
const ( SpecialCategoryAwards SpecialCategory = "awards" SpecialCategoryChampionship SpecialCategory = "championship" SpecialCategoryConcert SpecialCategory = "concert" SpecialCategoryConference SpecialCategory = "conference" SpecialCategoryElection SpecialCategory = "election" SpecialCategoryFestival SpecialCategory = "festival" SpecialCategoryGala SpecialCategory = "gala" SpecialCategoryHoliday SpecialCategory = "holiday" SpecialCategoryPremiere SpecialCategory = "premiere" SpecialCategoryProductLaunch SpecialCategory = "product_launch" SpecialCategoryReunion SpecialCategory = "reunion" SpecialCategoryTribute SpecialCategory = "tribute" )
type Specialism ¶
type Specialism = string
Specialism — Specialized capability claims an agent can make. Each specialism maps to a compl
const ( SpecialismAudienceSync Specialism = "audience-sync" SpecialismBrandRights Specialism = "brand-rights" SpecialismCollectionLists Specialism = "collection-lists" SpecialismContentStandards Specialism = "content-standards" SpecialismCreativeAdServer Specialism = "creative-ad-server" SpecialismCreativeGenerative Specialism = "creative-generative" SpecialismCreativeTemplate Specialism = "creative-template" SpecialismGovernanceAwareSeller Specialism = "governance-aware-seller" SpecialismGovernanceDeliveryMonitor Specialism = "governance-delivery-monitor" SpecialismGovernanceSpendAuthority Specialism = "governance-spend-authority" SpecialismPropertyLists Specialism = "property-lists" SpecialismSalesBroadcastTv Specialism = "sales-broadcast-tv" SpecialismSalesCatalogDriven Specialism = "sales-catalog-driven" SpecialismSalesGuaranteed Specialism = "sales-guaranteed" SpecialismSalesNonGuaranteed Specialism = "sales-non-guaranteed" SpecialismSalesProposalMode Specialism = "sales-proposal-mode" SpecialismSalesSocial Specialism = "sales-social" SpecialismSignalMarketplace Specialism = "signal-marketplace" SpecialismSignalOwned Specialism = "signal-owned" SpecialismSignedRequests Specialism = "signed-requests" )
type StateTransition ¶
type StateTransition struct {
Success bool `json:"success"`
PreviousState string `json:"previous_state"`
CurrentState string `json:"current_state"`
}
StateTransition is returned by force_* scenarios.
type StateTransitionSuccess ¶
type StateTransitionSuccess struct {
Success bool `json:"success"`
PreviousState string `json:"previous_state"` // State before this transition
CurrentState string `json:"current_state"` // State after this transition
Message string `json:"message,omitempty"` // Human-readable description of the transition
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
StateTransitionSuccess — A force_* scenario successfully transitioned the entity to the target state
type SyncAccountsRequest ¶
type SyncAccountsRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for at-most-once execution. Natural per-account upse
Accounts []AccountInput `json:"accounts"` // Advertiser accounts to sync
DeleteMissing *bool `json:"delete_missing,omitempty"` // When true, accounts previously synced by this agent but not included in this req
DryRun *bool `json:"dry_run,omitempty"` // When true, preview what would change without applying. Returns what would be cre
PushNotificationConfig any `json:"push_notification_config,omitempty"` // Webhook for async notifications when account status changes (e.g., pending_appro
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
SyncAccountsRequest — Sync advertiser accounts with a seller using upsert semantics. The agent declares which brands it re
type SyncCatalogsRequest ¶
type SyncCatalogsRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for at-most-once execution. `catalog_id` gives resou
Account AccountReference `json:"account"` // Account that owns these catalogs.
Catalogs []CatalogInput `json:"catalogs,omitempty"` // Array of catalog feeds to sync (create or update). When omitted, the call is dis
CatalogIDs []string `json:"catalog_ids,omitempty"` // Optional filter to limit sync scope to specific catalog IDs. When provided, only
DeleteMissing *bool `json:"delete_missing,omitempty"` // When true, buyer-managed catalogs on the account not included in this sync will
DryRun *bool `json:"dry_run,omitempty"` // When true, preview changes without applying them. Returns what would be created/
ValidationMode string `json:"validation_mode,omitempty"` // Validation strictness. 'strict' fails entire sync on any validation error. 'leni
PushNotificationConfig any `json:"push_notification_config,omitempty"` // Optional webhook configuration for async sync notifications. Publisher will send
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
SyncCatalogsRequest — Request parameters for syncing catalog feeds with upsert semantics. Supports bulk operations across
type SyncCreativesRequest ¶
type SyncCreativesRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
Account AccountReference `json:"account"` // Account that owns these creatives.
Creatives []CreativeInput `json:"creatives"` // Array of creative assets to sync (create or update)
CreativeIDs []string `json:"creative_ids,omitempty"` // Optional filter to limit sync scope to specific creative IDs. When provided, onl
Assignments []any `json:"assignments,omitempty"` // Optional bulk assignment of creatives to packages. Each entry maps one creative
IdempotencyKey string `json:"idempotency_key"` // Client-generated idempotency key for safe retries. If a sync fails without a res
DeleteMissing *bool `json:"delete_missing,omitempty"` // When true, creatives not included in this sync will be archived. Use with cautio
DryRun *bool `json:"dry_run,omitempty"` // When true, preview changes without applying them. Returns what would be created/
ValidationMode string `json:"validation_mode,omitempty"` // Validation strictness. 'strict' fails entire sync on any validation error. 'leni
PushNotificationConfig any `json:"push_notification_config,omitempty"` // Optional webhook configuration for async sync notifications. The agent will send
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
SyncCreativesRequest — Request parameters for syncing creative assets with upsert semantics - supports bulk operations, sco
type SyncEventSourcesRequest ¶
type SyncEventSourcesRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for at-most-once execution. `event_source_id` gives
Account AccountReference `json:"account"` // Account to configure event sources for.
EventSources []EventSourceInput `json:"event_sources,omitempty"` // Event sources to sync (create or update). When omitted, the call is discovery-on
DeleteMissing *bool `json:"delete_missing,omitempty"` // When true, event sources not included in this sync will be removed
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
SyncEventSourcesRequest — Request parameters for configuring event sources on an account with upsert semantics. Existing event
type SyncGovernanceError ¶
type SyncGovernanceError struct {
Errors []AdcpError `json:"errors"` // Operation-level errors (e.g., authentication failure, service unavailable)
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
SyncGovernanceError — Operation failed completely, no accounts were processed
type SyncGovernanceRequest ¶
type SyncGovernanceRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for at-most-once execution. `account` gives resource
Accounts []GovernanceAccountInput `json:"accounts"` // Per-account governance agent configuration. Each entry pairs an account referenc
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
SyncGovernanceRequest — Sync governance agent endpoints against specific accounts. The seller persists these governance agen
type SyncGovernanceResponse ¶
type SyncGovernanceResponse = any
SyncGovernanceResponse is a discriminated union — use the appropriate variant type.
type SyncGovernanceSuccess ¶
type SyncGovernanceSuccess struct {
Accounts []any `json:"accounts"` // Per-account sync results
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
SyncGovernanceSuccess — Sync processed — individual accounts may have errors
type SyncPlansRequest ¶
type SyncPlansRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for at-most-once execution. `plan_id` gives resource
Plans []Plan `json:"plans"` // One or more campaign plans to sync.
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
SyncPlansRequest — Push campaign plans to the governance agent. A plan defines the authorized parameters for a campaign
type SyncPlansResponse ¶
type SyncPlansResponse struct {
Plans []any `json:"plans"` // Status for each synced plan.
Replayed *bool `json:"replayed,omitempty"` // Set to true when this response is a cached replay returned for an idempotency_ke
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
}
SyncPlansResponse — Response from syncing campaign plans. Returns status and active validation categories for each plan.
type TalentRole ¶
type TalentRole = string
TalentRole — Role of a person associated with a collection or installment
const ( TalentRoleHost TalentRole = "host" TalentRoleGuest TalentRole = "guest" TalentRoleCreator TalentRole = "creator" TalentRoleCast TalentRole = "cast" TalentRoleNarrator TalentRole = "narrator" TalentRoleProducer TalentRole = "producer" TalentRoleCorrespondent TalentRole = "correspondent" TalentRoleCommentator TalentRole = "commentator" TalentRoleAnalyst TalentRole = "analyst" )
type Targeting ¶
type Targeting struct {
GeoCountries []string `json:"geo_countries,omitempty"` // Restrict delivery to specific countries. ISO 3166-1 alpha-2 codes (e.g., 'US', '
GeoCountriesExclude []string `json:"geo_countries_exclude,omitempty"` // Exclude specific countries from delivery. ISO 3166-1 alpha-2 codes (e.g., 'US',
GeoRegions []string `json:"geo_regions,omitempty"` // Restrict delivery to specific regions/states. ISO 3166-2 subdivision codes (e.g.
GeoRegionsExclude []string `json:"geo_regions_exclude,omitempty"` // Exclude specific regions/states from delivery. ISO 3166-2 subdivision codes (e.g
GeoMetros []any `json:"geo_metros,omitempty"` // Restrict delivery to specific metro areas. Each entry specifies the classificati
GeoMetrosExclude []any `json:"geo_metros_exclude,omitempty"` // Exclude specific metro areas from delivery. Each entry specifies the classificat
GeoPostalAreas []any `json:"geo_postal_areas,omitempty"` // Restrict delivery to specific postal areas. Each entry specifies the postal syst
GeoPostalAreasExclude []any `json:"geo_postal_areas_exclude,omitempty"` // Exclude specific postal areas from delivery. Each entry specifies the postal sys
DaypartTargets []any `json:"daypart_targets,omitempty"` // Restrict delivery to specific time windows. Each entry specifies days of week an
AxeIncludeSegment string `json:"axe_include_segment,omitempty"` // Deprecated: Use TMP provider fields instead. AXE segment ID to include for targe
AxeExcludeSegment string `json:"axe_exclude_segment,omitempty"` // Deprecated: Use TMP provider fields instead. AXE segment ID to exclude from targ
AudienceInclude []string `json:"audience_include,omitempty"` // Restrict delivery to members of these first-party CRM audiences. Only users pres
AudienceExclude []string `json:"audience_exclude,omitempty"` // Suppress delivery to members of these first-party CRM audiences. Matched users a
FrequencyCap any `json:"frequency_cap,omitempty"`
PropertyList any `json:"property_list,omitempty"` // Reference to a property list for targeting specific properties within this produ
CollectionList *CollectionListRef `json:"collection_list,omitempty"` // Reference to a collection list for including specific collections (programs, sho
CollectionListExclude *CollectionListRef `json:"collection_list_exclude,omitempty"` // Reference to a collection list for excluding specific collections (programs, sho
AgeRestriction any `json:"age_restriction,omitempty"` // Age restriction for compliance. Use for legal requirements (alcohol, gambling),
DevicePlatform []string `json:"device_platform,omitempty"` // Restrict to specific platforms. Use for technical compatibility (app only works
DeviceType []string `json:"device_type,omitempty"` // Restrict to specific device form factors. Use for campaigns targeting hardware c
DeviceTypeExclude []string `json:"device_type_exclude,omitempty"` // Exclude specific device form factors from delivery (e.g., exclude CTV for app-in
StoreCatchments []any `json:"store_catchments,omitempty"` // Target users within store catchment areas from a synced store catalog. Each entr
GeoProximity []any `json:"geo_proximity,omitempty"` // Target users within travel time, distance, or a custom boundary around arbitrary
Language []string `json:"language,omitempty"` // Restrict to users with specific language preferences. ISO 639-1 codes (e.g., 'en
KeywordTargets []any `json:"keyword_targets,omitempty"` // Keyword targeting for search and retail media platforms. Restricts delivery to q
NegativeKeywords []any `json:"negative_keywords,omitempty"` // Keywords to exclude from delivery. Queries matching these keywords will not trig
}
Targeting — Optional restriction overlays for media buys. Most targeting should be expressed in the brief and ha
type TargetingCaps ¶
type TargetingCaps struct {
GeoCountries *bool `json:"geo_countries,omitempty"`
GeoRegions *bool `json:"geo_regions,omitempty"`
GeoMetros *GeoMetrosCaps `json:"geo_metros,omitempty"`
GeoPostalAreas *GeoPostalAreasCaps `json:"geo_postal_areas,omitempty"`
GeoProximity *GeoProximityCaps `json:"geo_proximity,omitempty"`
AgeRestriction *AgeRestrictionCaps `json:"age_restriction,omitempty"`
Language *bool `json:"language,omitempty"`
KeywordTargets *KeywordMatchCaps `json:"keyword_targets,omitempty"`
NegativeKeywords *KeywordMatchCaps `json:"negative_keywords,omitempty"`
}
TargetingCaps declares which targeting dimensions the seller honors. Presence of a boolean/object indicates support; buyers can then send matching fields in targeting_overlay.
type TaskStatus ¶
type TaskStatus = string
TaskStatus — Standardized task status values based on A2A TaskState enum. Indicates the curre
const ( TaskStatusSubmitted TaskStatus = "submitted" TaskStatusWorking TaskStatus = "working" TaskStatusInputRequired TaskStatus = "input-required" TaskStatusCompleted TaskStatus = "completed" TaskStatusCanceled TaskStatus = "canceled" TaskStatusFailed TaskStatus = "failed" TaskStatusRejected TaskStatus = "rejected" TaskStatusAuthRequired TaskStatus = "auth-required" TaskStatusUnknown TaskStatus = "unknown" )
type TaskType ¶
type TaskType = string
TaskType — Valid AdCP task types across all domains. These represent the complete set of op
const ( TaskTypeCreateMediaBuy TaskType = "create_media_buy" TaskTypeUpdateMediaBuy TaskType = "update_media_buy" TaskTypeSyncCreatives TaskType = "sync_creatives" TaskTypeActivateSignal TaskType = "activate_signal" TaskTypeGetSignals TaskType = "get_signals" TaskTypeCreatePropertyList TaskType = "create_property_list" TaskTypeUpdatePropertyList TaskType = "update_property_list" TaskTypeGetPropertyList TaskType = "get_property_list" TaskTypeListPropertyLists TaskType = "list_property_lists" TaskTypeDeletePropertyList TaskType = "delete_property_list" TaskTypeSyncAccounts TaskType = "sync_accounts" TaskTypeGetAccountFinancials TaskType = "get_account_financials" TaskTypeGetCreativeDelivery TaskType = "get_creative_delivery" TaskTypeSyncEventSources TaskType = "sync_event_sources" TaskTypeSyncAudiences TaskType = "sync_audiences" TaskTypeSyncCatalogs TaskType = "sync_catalogs" TaskTypeLogEvent TaskType = "log_event" TaskTypeGetBrandIdentity TaskType = "get_brand_identity" TaskTypeGetRights TaskType = "get_rights" TaskTypeAcquireRights TaskType = "acquire_rights" )
type TestControllerError ¶
type TestControllerError struct {
Code string // NOT_FOUND, INVALID_TRANSITION, INVALID_PARAMS
Message string
CurrentState string
}
TestControllerError is a typed error for test controller store methods.
func (*TestControllerError) Error ¶
func (e *TestControllerError) Error() string
type TestControllerStore ¶
type TestControllerStore struct {
ForceAccountStatus func(accountID, status string) (*StateTransition, error)
ForceMediaBuyStatus func(mediaBuyID, status string, rejectionReason string) (*StateTransition, error)
ForceCreativeStatus func(creativeID, status string, rejectionReason string) (*StateTransition, error)
ForceSessionStatus func(sessionID, status string, terminationReason string) (*StateTransition, error)
SimulateDelivery func(mediaBuyID string, params SimulateDeliveryParams) (*SimulationResult, error)
SimulateBudgetSpend func(params SimulateBudgetParams) (*SimulationResult, error)
}
TestControllerStore is the seller-side interface for comply_test_controller. Implement the methods for each scenario you support. Unimplemented (nil) methods mean that scenario is excluded from list_scenarios.
type TransportMode ¶
type TransportMode = string
TransportMode — Transportation modes for isochrone-based catchment area calculations. Determines
const ( TransportModeWalking TransportMode = "walking" TransportModeCycling TransportMode = "cycling" TransportModeDriving TransportMode = "driving" TransportModePublicTransport TransportMode = "public_transport" )
type TrustedMatchCaps ¶
type TrustedMatchCaps struct {
Surfaces []string `json:"surfaces,omitempty"`
}
type UIDType ¶
type UIDType = string
UIDType — Type of user identifier. Used in audience sync, event logging, and TMP identity
const ( UIDTypeRampid UIDType = "rampid" UIDTypeRampidDerived UIDType = "rampid_derived" UIDTypeId5 UIDType = "id5" UIDTypeUid2 UIDType = "uid2" UIDTypeEuid UIDType = "euid" UIDTypePairid UIDType = "pairid" UIDTypeMaid UIDType = "maid" UIDTypeHashedEmail UIDType = "hashed_email" UIDTypePublisherFirstParty UIDType = "publisher_first_party" UIDTypeOther UIDType = "other" )
type URLAssetType ¶
type URLAssetType = string
URLAssetType — Types of URL assets for tracking and click-through purposes
const ( URLAssetTypeClickthrough URLAssetType = "clickthrough" URLAssetTypeTrackerPixel URLAssetType = "tracker_pixel" URLAssetTypeTrackerScript URLAssetType = "tracker_script" )
type UniversalMacro ¶
type UniversalMacro = string
UniversalMacro — Standardized macro placeholders for dynamic value substitution in creative track
const ( UniversalMacroMEDIABUYID UniversalMacro = "MEDIA_BUY_ID" UniversalMacroPACKAGEID UniversalMacro = "PACKAGE_ID" UniversalMacroCREATIVEID UniversalMacro = "CREATIVE_ID" UniversalMacroCACHEBUSTER UniversalMacro = "CACHEBUSTER" UniversalMacroTIMESTAMP UniversalMacro = "TIMESTAMP" UniversalMacroCLICKURL UniversalMacro = "CLICK_URL" UniversalMacroGDPR UniversalMacro = "GDPR" UniversalMacroGDPRCONSENT UniversalMacro = "GDPR_CONSENT" UniversalMacroUSPRIVACY UniversalMacro = "US_PRIVACY" UniversalMacroGPPSTRING UniversalMacro = "GPP_STRING" UniversalMacroGPPSID UniversalMacro = "GPP_SID" UniversalMacroIPADDRESS UniversalMacro = "IP_ADDRESS" UniversalMacroLIMITADTRACKING UniversalMacro = "LIMIT_AD_TRACKING" UniversalMacroDEVICETYPE UniversalMacro = "DEVICE_TYPE" UniversalMacroOS UniversalMacro = "OS" UniversalMacroOSVERSION UniversalMacro = "OS_VERSION" UniversalMacroDEVICEMAKE UniversalMacro = "DEVICE_MAKE" UniversalMacroDEVICEMODEL UniversalMacro = "DEVICE_MODEL" UniversalMacroUSERAGENT UniversalMacro = "USER_AGENT" UniversalMacroAPPBUNDLE UniversalMacro = "APP_BUNDLE" UniversalMacroAPPNAME UniversalMacro = "APP_NAME" UniversalMacroCOUNTRY UniversalMacro = "COUNTRY" UniversalMacroREGION UniversalMacro = "REGION" UniversalMacroCITY UniversalMacro = "CITY" UniversalMacroZIP UniversalMacro = "ZIP" UniversalMacroDMA UniversalMacro = "DMA" UniversalMacroLAT UniversalMacro = "LAT" UniversalMacroLONG UniversalMacro = "LONG" UniversalMacroDEVICEID UniversalMacro = "DEVICE_ID" UniversalMacroDEVICEIDTYPE UniversalMacro = "DEVICE_ID_TYPE" UniversalMacroDOMAIN UniversalMacro = "DOMAIN" UniversalMacroPAGEURL UniversalMacro = "PAGE_URL" UniversalMacroREFERRER UniversalMacro = "REFERRER" UniversalMacroKEYWORDS UniversalMacro = "KEYWORDS" UniversalMacroPLACEMENTID UniversalMacro = "PLACEMENT_ID" UniversalMacroFOLDPOSITION UniversalMacro = "FOLD_POSITION" UniversalMacroADWIDTH UniversalMacro = "AD_WIDTH" UniversalMacroADHEIGHT UniversalMacro = "AD_HEIGHT" UniversalMacroVIDEOID UniversalMacro = "VIDEO_ID" UniversalMacroVIDEOTITLE UniversalMacro = "VIDEO_TITLE" UniversalMacroVIDEODURATION UniversalMacro = "VIDEO_DURATION" UniversalMacroVIDEOCATEGORY UniversalMacro = "VIDEO_CATEGORY" UniversalMacroCONTENTGENRE UniversalMacro = "CONTENT_GENRE" UniversalMacroCONTENTRATING UniversalMacro = "CONTENT_RATING" UniversalMacroPLAYERWIDTH UniversalMacro = "PLAYER_WIDTH" UniversalMacroPLAYERHEIGHT UniversalMacro = "PLAYER_HEIGHT" UniversalMacroPODPOSITION UniversalMacro = "POD_POSITION" UniversalMacroPODSIZE UniversalMacro = "POD_SIZE" UniversalMacroADBREAKID UniversalMacro = "AD_BREAK_ID" UniversalMacroSTATIONID UniversalMacro = "STATION_ID" UniversalMacroCOLLECTIONNAME UniversalMacro = "COLLECTION_NAME" UniversalMacroINSTALLMENTID UniversalMacro = "INSTALLMENT_ID" UniversalMacroAUDIODURATION UniversalMacro = "AUDIO_DURATION" UniversalMacroTMPX UniversalMacro = "TMPX" UniversalMacroAXEM UniversalMacro = "AXEM" UniversalMacroCATALOGID UniversalMacro = "CATALOG_ID" UniversalMacroSKU UniversalMacro = "SKU" UniversalMacroGTIN UniversalMacro = "GTIN" UniversalMacroOFFERINGID UniversalMacro = "OFFERING_ID" UniversalMacroJOBID UniversalMacro = "JOB_ID" UniversalMacroHOTELID UniversalMacro = "HOTEL_ID" UniversalMacroFLIGHTID UniversalMacro = "FLIGHT_ID" UniversalMacroVEHICLEID UniversalMacro = "VEHICLE_ID" UniversalMacroLISTINGID UniversalMacro = "LISTING_ID" UniversalMacroSTOREID UniversalMacro = "STORE_ID" UniversalMacroPROGRAMID UniversalMacro = "PROGRAM_ID" UniversalMacroDESTINATIONID UniversalMacro = "DESTINATION_ID" UniversalMacroCREATIVEVARIANTID UniversalMacro = "CREATIVE_VARIANT_ID" UniversalMacroAPPITEMID UniversalMacro = "APP_ITEM_ID" )
type UpdateCollectionListRequest ¶
type UpdateCollectionListRequest struct {
AdcpMajorVersion int `json:"adcp_major_version,omitempty"` // The AdCP major version the buyer's payloads conform to. Sellers validate against
ListID string `json:"list_id"` // ID of the collection list to update
Account *AccountReference `json:"account,omitempty"` // Account that owns the list. Required when the authenticated agent has access to
Name string `json:"name,omitempty"` // New name for the list
Description string `json:"description,omitempty"` // New description
BaseCollections []BaseCollectionSource `json:"base_collections,omitempty"` // Complete replacement for the base collections list (not a patch). Each entry is
Filters *CollectionListFilters `json:"filters,omitempty"` // Complete replacement for the filters (not a patch)
Brand *BrandReference `json:"brand,omitempty"` // Update brand reference. Resolved to full brand identity at execution time.
WebhookURL string `json:"webhook_url,omitempty"` // Update the webhook URL for list change notifications (set to empty string to rem
Context any `json:"context,omitempty"`
Ext any `json:"ext,omitempty"`
IdempotencyKey string `json:"idempotency_key"` // Client-generated unique key for at-most-once execution. If a request with the sa
}
UpdateCollectionListRequest — Request parameters for updating an existing collection list
type UpdateFrequency ¶
type UpdateFrequency = string
UpdateFrequency — Frequency of product catalog updates
const ( UpdateFrequencyRealtime UpdateFrequency = "realtime" UpdateFrequencyHourly UpdateFrequency = "hourly" UpdateFrequencyDaily UpdateFrequency = "daily" UpdateFrequencyWeekly UpdateFrequency = "weekly" )
type ValidationMode ¶
type ValidationMode = string
ValidationMode — Creative validation strictness levels
const ( ValidationModeStrict ValidationMode = "strict" ValidationModeLenient ValidationMode = "lenient" )
type VastTrackingEvent ¶
type VastTrackingEvent = string
VastTrackingEvent — Tracking events for video ads. Includes IAB VAST 4.2 TrackingEvents, plus flatte
const ( VastTrackingEventImpression VastTrackingEvent = "impression" VastTrackingEventCreativeView VastTrackingEvent = "creativeView" VastTrackingEventLoaded VastTrackingEvent = "loaded" VastTrackingEventStart VastTrackingEvent = "start" VastTrackingEventFirstQuartile VastTrackingEvent = "firstQuartile" VastTrackingEventMidpoint VastTrackingEvent = "midpoint" VastTrackingEventThirdQuartile VastTrackingEvent = "thirdQuartile" VastTrackingEventComplete VastTrackingEvent = "complete" VastTrackingEventMute VastTrackingEvent = "mute" VastTrackingEventUnmute VastTrackingEvent = "unmute" VastTrackingEventPause VastTrackingEvent = "pause" VastTrackingEventResume VastTrackingEvent = "resume" VastTrackingEventRewind VastTrackingEvent = "rewind" VastTrackingEventSkip VastTrackingEvent = "skip" VastTrackingEventPlayerExpand VastTrackingEvent = "playerExpand" VastTrackingEventPlayerCollapse VastTrackingEvent = "playerCollapse" VastTrackingEventFullscreen VastTrackingEvent = "fullscreen" VastTrackingEventExitFullscreen VastTrackingEvent = "exitFullscreen" VastTrackingEventProgress VastTrackingEvent = "progress" VastTrackingEventNotUsed VastTrackingEvent = "notUsed" VastTrackingEventOtherAdInteraction VastTrackingEvent = "otherAdInteraction" VastTrackingEventInteractiveStart VastTrackingEvent = "interactiveStart" VastTrackingEventClickTracking VastTrackingEvent = "clickTracking" VastTrackingEventCustomClick VastTrackingEvent = "customClick" VastTrackingEventClose VastTrackingEvent = "close" VastTrackingEventCloseLinear VastTrackingEvent = "closeLinear" VastTrackingEventError VastTrackingEvent = "error" VastTrackingEventViewable VastTrackingEvent = "viewable" VastTrackingEventNotViewable VastTrackingEvent = "notViewable" VastTrackingEventViewUndetermined VastTrackingEvent = "viewUndetermined" VastTrackingEventMeasurableImpression VastTrackingEvent = "measurableImpression" VastTrackingEventViewableImpression VastTrackingEvent = "viewableImpression" )
type VastVersion ¶
type VastVersion = string
VastVersion — Supported VAST (Video Ad Serving Template) specification versions
const ( VastVersion20 VastVersion = "2.0" VastVersion30 VastVersion = "3.0" VastVersion40 VastVersion = "4.0" VastVersion41 VastVersion = "4.1" VastVersion42 VastVersion = "4.2" )
type VendorPricingOption ¶
type VendorPricingOption struct {
PricingOptionID string `json:"pricing_option_id"`
Model string `json:"model"`
CPM float64 `json:"cpm,omitempty"`
Percent float64 `json:"percent,omitempty"`
MaxCPM float64 `json:"max_cpm,omitempty"`
Amount float64 `json:"amount,omitempty"`
Period string `json:"period,omitempty"`
Unit string `json:"unit,omitempty"`
UnitPrice float64 `json:"unit_price,omitempty"`
Description string `json:"description,omitempty"`
Metadata map[string]any `json:"metadata,omitempty"`
Currency string `json:"currency,omitempty"`
Ext any `json:"ext,omitempty"`
}
VendorPricingOption wires the vendor-pricing-option.json schema — a pricing_option_id wrapper around the signal-pricing.json oneOf. Discriminated by Model: cpm, percent_of_media, flat_fee, per_unit, custom. Custom pricing requires Description + Metadata; buyers should route it through operator review rather than auto-selecting. PricingOptionID is the wrapper field, not part of the oneOf.
Go cannot express JSON Schema oneOf at the type level, so required-field enforcement per variant is deferred to the schema validator; omitempty on numeric fields means legitimate zero values (e.g. CPM: 0) do not round-trip.
type ViewabilityStandard ¶
type ViewabilityStandard = string
ViewabilityStandard — Viewability measurement standard applied to determine whether an impression qual
const ( ViewabilityStandardMrc ViewabilityStandard = "mrc" ViewabilityStandardGroupm ViewabilityStandard = "groupm" )
type WcagLevel ¶
type WcagLevel = string
WcagLevel — Web Content Accessibility Guidelines conformance level
type WebhookResponseType ¶
type WebhookResponseType = string
WebhookResponseType — Expected response content type from webhook endpoints
const ( WebhookResponseTypeHTML WebhookResponseType = "html" WebhookResponseTypeJSON WebhookResponseType = "json" WebhookResponseTypeXML WebhookResponseType = "xml" WebhookResponseTypeJavascript WebhookResponseType = "javascript" )
type WebhookSecurityMethod ¶
type WebhookSecurityMethod = string
WebhookSecurityMethod — Security methods for authenticating webhook requests
const ( WebhookSecurityMethodHmacSha256 WebhookSecurityMethod = "hmac_sha256" WebhookSecurityMethodAPIKey WebhookSecurityMethod = "api_key" WebhookSecurityMethodNone WebhookSecurityMethod = "none" )
type WebhookSigningCapabilities ¶
type WebhookSigningCapabilities struct {
Supported bool `json:"supported"`
Profile string `json:"profile,omitempty"`
Algorithms []string `json:"algorithms,omitempty"`
LegacyHMACFallback bool `json:"legacy_hmac_fallback,omitempty"`
}
WebhookSigningCapabilities declares RFC 9421 webhook-signature policy — what this agent emits on outbound webhook deliveries. Top-level peer of RequestSigning. Profile is a closed enum ("adcp/webhook-signing/v1"); the value MUST match the tag= on the on-wire Signature-Input header.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
adcp-signing-keygen
command
Command adcp-signing-keygen generates an AdCP request-signing keypair and emits the PEM-encoded private key plus the public JWK.
|
Command adcp-signing-keygen generates an AdCP request-signing keypair and emits the PEM-encoded private key plus the public JWK. |
|
Package idempotency provides canonicalization, hashing, typed errors, storage backends, and handler middleware for AdCP idempotency_key support.
|
Package idempotency provides canonicalization, hashing, typed errors, storage backends, and handler middleware for AdCP idempotency_key support. |
|
Package signing implements the AdCP RFC 9421 request-signing profile: signs outgoing HTTP requests and verifies inbound ones for AdCP agent identity, with replay protection via per-(keyid, nonce) deduplication and tampering protection via optional RFC 9530 Content-Digest coverage.
|
Package signing implements the AdCP RFC 9421 request-signing profile: signs outgoing HTTP requests and verifies inbound ones for AdCP agent identity, with replay protection via per-(keyid, nonce) deduplication and tampering protection via optional RFC 9530 Content-Digest coverage. |
|
Package webhook provides sender and receiver helpers for AdCP webhook payloads.
|
Package webhook provides sender and receiver helpers for AdCP webhook payloads. |